Spring通常用于将Camel上下文作为bean来保存。 可以像在托管bean的任何其他成员中一样随意使用Camel。这可能比使用spring要复杂一些,这取决于你的webapp的架构。 通常,您可以在webapp中创建或重用一些单例bean(有不同的方法可以做到这一点,例如@Singleton EJB,或一些DI框架,例如GUICE(和spring..)。然后只需创建一个带有camel上下文的示例变量,例如CamelContextctx; then in construcutor/singleton constructor,ctx = new DefaultCamelContext(); 现在您已经运行了camel,只需继续使用JavaDSL向其添加组件和路由。Camel有几个组件是半依赖于Spring的。例如JMS组件、Spring-WS等。此外,在没有spring的情况下将Camel装入servlet容器可能会遇到一些棘手的问题。但这取决于您的用例。 在此处阅读上下文生命周期http://camel.apache.org/lifecycle.html
<display-name>My Web Application</display-name>
<!-- you can configure any of the properties on CamelContext, eg setName will be configured as below -->
<context-param>
<param-name>name</param-name>
<param-value>MyCamel</param-value>
</context-param>
<!-- location of Camel route xml files -->
<context-param>
<param-name>routeBuilder-MyRoute</param-name>
<!-- define the routes as a resource from the classpath by prefixing the value with classpath: -->
<!-- note: instead of using a XML file we can also define the routes in Java code in a RouteBuilder class -->
<param-value>classpath:camel-config.xml</param-value>
</context-param>
<!-- the listener that kick-starts Camel -->
<listener>
<listener-class>org.apache.camel.component.servletlistener.CamelServletContextListener</listener-class>
</listener>
<!-- Camel servlet used in the Camel application -->
<servlet>
<servlet-name>CamelServlet</servlet-name>
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
5条答案
按热度按时间1qczuiv01#
迟到的聚会,但想张贴一个更新的回应。我最近创建了一个轻量级框架,名为Harness,它使在Camel * 中创建Web服务变得非常容易,而不需要 * 任何Spring依赖项。它具有几个漂亮的功能,包括:
框架核心库可以在here中找到。这是线束文件沿着一些辅助工具的位置。
参考实现可以在here中找到。这是一个功能齐全的Camel微服务,可以作为一个模板,让您的Camel骑行到需要去的地方。
不久前,我写了一个不同的Camel微服务框架,名为k-car。源代码为here。这个版本比上一个版本简单,它使用Velocity和Maven从模板创建组件和服务。
hi3rlvi22#
Spring通常用于将Camel上下文作为bean来保存。
可以像在托管bean的任何其他成员中一样随意使用Camel。这可能比使用spring要复杂一些,这取决于你的webapp的架构。
通常,您可以在webapp中创建或重用一些单例bean(有不同的方法可以做到这一点,例如
@Singleton
EJB,或一些DI框架,例如GUICE(和spring..)。然后只需创建一个带有camel上下文的示例变量,例如CamelContextctx; then in construcutor/singleton constructor,ctx = new DefaultCamelContext();现在您已经运行了camel,只需继续使用JavaDSL向其添加组件和路由。Camel有几个组件是半依赖于Spring的。例如JMS组件、Spring-WS等。此外,在没有spring的情况下将Camel装入servlet容器可能会遇到一些棘手的问题。但这取决于您的用例。
在此处阅读上下文生命周期http://camel.apache.org/lifecycle.html
c7rzv4ha3#
我想为这一点提供支持已经有一段时间了。但从来没有这样做过,也没有开过罚单。所以今天我记录了一个ticket https://issues.apache.org/jira/browse/CAMEL-5906,所以最终在未来我们有一种使用serlvet侦听器引导Camel的方法。更多关于门票的细节
t5fffqht4#
为此,您应该创建一个实现
javax.servlet.ServletContextListener
的侦听器类MyCamelContextInitialisingListener
-这将包含Camel初始化逻辑。在
WEB-INF/web.xml
中注册监听器侦听器将包含以下内容:
类
MyRouteBuilder
是您定义的RouteBuilder
实现,它使用CamelJavaDSL来定义路由逻辑。不需要Spring。
rm5edbpk5#
很简单,只需执行以下操作: