Apache camel “阿帕奇骆驼”;Jetty vs Servlet“;在web应用程序中
在我们的项目中,我们计划使用ApacheCamel进行web请求路由/编排 它基本上是一个web项目,与其他几个内部web服务对话,以准备对请求者的最终响应 有人可以建议,在camel web应用程序中使用web请求的最佳/标准方法是什么 我相信骆驼有多种选择:Apache camel “阿帕奇骆驼”;Jetty vs Servlet“;在web应用程序中,apache-camel,Apache Camel,在我们的项目中,我们计划使用ApacheCamel进行web请求路由/编排 它基本上是一个web项目,与其他几个内部web服务对话,以准备对请求者的最终响应 有人可以建议,在camel web应用程序中使用web请求的最佳/标准方法是什么 我相信骆驼有多种选择: servlet Listener+servlet组件组合 码头构件 SpringWeb和xml(我们希望避免任何spring依赖) 还有别的办法吗 如果有人曾经这样做过,并且能够提供指导,这将非常有帮助。 任何像赞成和反对这样的建议
- servlet Listener+servlet组件组合
- 码头构件
- SpringWeb和xml(我们希望避免任何spring依赖)
- 还有别的办法吗
from("jetty:http://localhost:{{port}}/myapp/myservice")
.process() // do something with the Exchange
这很容易运行,但是您可能会使用一些复杂的路由规则来区分get、POST等。IMHO驼峰路线中的多条执行路径(即带有拆分、选择等)可能/将成为粗心者的陷阱
更复杂的是,您需要编写Servlet实现并将其注册到Servlet容器中(例如通过web.xml),结果是一样的——您得到一个HTTP请求作为交换
web.xml
<web-app>
<servlet>
<servlet-name>CamelServlet</servlet-name>
<display-name>Camel Http Transport Servlet</display-name>
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CamelServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
RouteBuilder
from("servlet:///hello?matchOnUriPrefix=true").process(new Processor() {
// do stuff
在Rest DSL或任何非servlet实现中,保持camel上下文线程始终运行的建议方法是什么?这取决于您如何启动camel上下文-有大量选项,例如在spring容器、osgi、War文件中使用MainSupport类,可能还有其他选项。Redhat会说使用Fuse/OSGi,但对于一个简单的应用来说,这会带来巨大的认知和应用开销。就我个人而言,我认为使用camel MainSupport类的jar是最好的选择。如果您需要在tomcat或其他软件上运行它,那么请看一下这个(尽管您希望避免使用spring,但这可能不是最好的方法)
rest("/say")
.get("/hello").to("direct:hello")
.get("/bye").consumes("application/json").to("direct:bye")
.post("/bye").to("mock:update");
from("direct:hello")
.transform().constant("Hello World");
from("direct:bye")
.transform().constant("Bye World");