【问题标题】:Use Apache Camel to serve AngularJS使用 Apache Camel 服务于 AngularJS
【发布时间】:2014-09-02 02:28:52
【问题描述】:

我们正在使用 Apache Camel 2.13.2 创建一个应用程序,用于路由来自不同协议的消息。这将是一个服务组件,我们还想嵌入一个简单的 web ui 来监控消息并查看配置。 我已经使用 AngularJS 创建了这个 UI,但我不确定如何使用 Apache Camel 作为 Web 服务器。

非常感谢您的帮助。

【问题讨论】:

  • 感谢您的评论,但我真的不明白这将如何帮助我使用骆驼提供静态 html 页面?
  • 如果您只是提供静态网页,那么我不会使用 Camel,因为它没有提供任何有用的东西。我假设您的 Angular 应用程序正在调用您需要路由到 Camel 路由的 restful api。
  • 好的,谢谢您的帮助。我已经使用 CXF 和 Rest 为 GUI 实现了服务层,但我只是在寻找一种简单的方法(如果可能的话),也可以使用 Camel 为 AngularJs 文件提供服务,而无需涉及其他组件。但在这种情况下,嵌入一个单独的 Jetty 服务器并使用它来提供 GUI 文件可能更有意义。

标签: angularjs apache-camel


【解决方案1】:

我在我的项目中遇到了同样的问题,我使用了 jetty 组件来公开静态资源。在我的博客上有解释: expose static resources with camel

综上所述,在指定资源目录时需要在jetty组件上定义一个ResourceHandler。

【讨论】:

  • 谢谢,它看起来很有趣。我会试试看。
  • 我试过你的解决方案,它似乎工作正常,我在日志中看到它为静态处理程序启动了一条路由。静态文件应该放在我的项目中的什么位置?当我的测试页面位于我的 main/resources 文件夹中时,我无法访问它。
  • 你可以在staticHandler中定义你的静态文件的路径,在我的例子中,我把我的静态文件放在了我项目的“静态”路径中,没有必要放在类路径中。它在这里定义: 。我没有尝试,但很有可能使用类路径:.
【解决方案2】:

如何使用 Camel 提供静态文件的示例:

from("jetty:http://0.0.0.0:9080/images/plotdot9-ls.png")
    .to("direct:getPNG");

from("jetty:http://0.0.0.0:9080/images/plotdot9.png")
    .to("direct:getPNG");

from("direct:getPNG").process(new Processor() {
  public void process(Exchange exchange) throws Exception {
    HttpExchange httpExchange = (HttpExchange) exchange;
    String uri = httpExchange.getRequest().getRequestURI();
    int fileLocn = uri.lastIndexOf('/');
    String filename = uri.substring(fileLocn);
    exchange.getOut().setHeader("Content-Type", "image/png");
    exchange.getOut().setBody(getClass().getResourceAsStream("/images" + filename));
  }
});

来源:Camel users group

【讨论】:

  • 谢谢。该解决方案应该可以工作,但它可能不适合为整个 AngularJS 应用程序提供服务。我想我会尝试嵌入一个单独的 JettyServer 来提供 GUI 文件。
  • @P3anuts 我也建议使用单独的 servlet 引擎来提供静态文件。你也可以看看新的 JBoss servlet 引擎 Undertow,见 undertow.io
  • 我们会尽可能保持这个应用程序的轻量级,并且不需要单独的 servlet 引擎。 UI 根本不会有很重的负载,它仅供技术人员用于解决问题。我会看看Undertow,它看起来真的很有趣。谢谢!
  • 我尝试使用 Undertow 来解决这个问题,但并没有真正让它发挥作用,在这里发布了一个单独的问题:stackoverflow.com/questions/24733619/…
猜你喜欢
  • 2016-10-16
  • 2018-11-15
  • 2012-08-16
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
相关资源
最近更新 更多