camel.js_Camel 2.11 –没有Spring的Camel Web应用程序

camel.js

在撰写本文时,我们刚刚向即将到来的Apache Camel 2.11添加了一个新组件,该组件允许使用Camel运行Web应用程序,而不必依赖Spring Framework来加速Camel。 或与此相关的任何其他第三方框架。

有点as愧地说,在2013年,我们要在Apache Camel中开箱即用提供此功能有点晚了。

在支持Servlet 3.0规范的现代Web容器中。 您可以使用新的@WebListener注释以编程方式引导代码。 但是即使如此,仍然需要完成工作,因为您将需要设置和配置Camel,并确保在停止Web应用程序时取消注册和停止资源。

我还没有找到一种使用@WebListener并允许对框架(例如Apache Camel)进行外部配置的巧妙方法。 我真的不想硬编码我的配置,也不必发明自己的加载外部配置和配置应用程序的方式。 有人知道解决此问题的方法吗?

无论如何,我们还想要一个适用于老式Servlet 2.x容器的解决方案。 有很多人在那里奔跑。 即便如此,带有web.xml文件的旧式配置在较新的Servlet 3.0容器中也同样有效。 因此,我们需要一个适合两个世界的开箱即用的解决方案。

展示的例子

我们在Apache Camel上有许多示例,其中一个是简单的Web应用程序,可以将其作为.war文件部署在Apache Tomcat或任何其他Web容器中。

这个示例使用Spring框架来增强Spring XML文件,其中嵌入了Camel。 因此,我们要做的是在不需要Spring的情况下重做此示例。

Apache Camel站点上记录了两个示例:

CamelServletContextListener

在Camel 2.11中,我们有一个名为camel-servletlistener的新组件,它提供了一个新的CamelServletContextListener类,您可以在web.xml文件中对其进行配置。 然后,这将对CamelContext进行增强处理,并使用上下文初始化参数作为其配置。 该上下文侦听器具有大量配置,因此您可以轻松地根据需要配置Camel。 这些选项在Camel文档中列出:http://camel.apache.org/servletlistener-component.html。 并且如果您需要在Camel启动/停止时执行任何自定义逻辑,那么我们为此提供了一个API,即CamelContextLifecycle接口。 Camel文档中有更多详细信息和示例。

为了实际操作,建议阅读此博客后,查看新示例以及camel-servletlistener组件的文档。

剖析范例

有两个例子

当部署到使用Java 1.6的Apache Tomcat 7.0.30的全新安装时,我们可以充分了解两者之间的差异。

servlet-tomcat-示例

大小:5.8 MB

罐子:19

所载课程:4507

当前堆大小:10 MB

servlet-tomcat-no-spring-example

大小:2.9 MB

罐子:10

所载课程:3698

当前堆大小:8 MB

我使用jconsole来查看JVM中带有Apache Tomcat和已部署示例的已加载类的数量。 堆大小被测量为执行GC后获得的最小值。 因此,我们从发行版中削减了10个JAR和3MB。 最好避免加载1000个类的代码。

备注

我只想强调一下,这个新的camel-servletlistener组件的目标是使人们可以轻松地在任何Web容器中引导其Camel应用程序,而无需绑定到任何特定的第三方框架(例如Spring)。 Apache Camel项目旨在保持中立和不可知论。 允许人们以任何方式和选择的容器来运行Camel。

参考: Camel 2.11 –我们的JCG合作伙伴 Claus Ibsen在Apache Camel博客的Claus Ibsen上没有Spring的Camel Web应用程序

翻译自: https://www.javacodegeeks.com/2013/01/camel-2-11-camel-web-applications-without-spring.html

camel.js

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值