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站点上记录了两个示例:

  • http://camel.apache.org/servlet-tomcat-example.html
  • http://camel.apache.org/servlet-tomcat-no-spring-example.html

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组件的文档。

剖析范例

有两个例子

  • http://camel.apache.org/servlet-tomcat-example.html
  • http://camel.apache.org/servlet-tomcat-no-spring-example.html

当部署到使用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

camel.js_Camel 2.11 –没有Spring的Camel Web应用程序相关推荐

  1. 使用Hibernate和Spring构建Java Web应用程序

    这篇文章将展示如何在Spring环境中使用带有Hibernate ORM的MYSQL DB创建学生注册应用程序. 这是一个简单的应用程序,旨在在注册过程中从用户收集输入详细信息,将这些详细信息保存在M ...

  2. 使用MyBatis和Spring构建Java Web应用程序

    这篇文章将展示如何在Spring环境中使用带有MyBatis框架的MYSQL DB创建学生注册应用程序. 这是一个简单的应用程序,旨在在注册期间从用户收集输入详细信息,将详细信息保存在MYSQL DB ...

  3. 使用Java和Spring构建现代Web应用程序

    使用Spring Framework创建Java Web应用程序从未如此简单. 如果您已经熟悉Java并且几乎没有创建Web应用程序的经验,或者如果您担心所有很酷的孩子都放弃Java取而代之的是Rub ...

  4. 带有Jersey和Spring的RESTful Web应用程序

    几个月前,我们的任务是创建一个API,以向第三方开发人员公开我们系统中的某些功能. 我们选择将这些功能公开为一系列REST Web服务. 我开始使用Jersey ,它是JSR 311 (用于Restf ...

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

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

  6. camel.js_Camel 2.11 –具有URL重写功能的HTTP代理路由

    camel.js 在即将发布的Apache Camel 2.11版本中,我最近添加了对将自定义url重写实现插入基于HTTP的路由(http,http4,jetty)的支持. 当您使用骆驼代理/桥接H ...

  7. 使用Spring 3引导Web应用程序

    1.概述 这是关于使用Spring 3.1和基于Java的配置来建立RESTfull Web应用程序的系列教程的第一篇. 本文将重点介绍如何引导Web应用程序 ,讨论如何从XML过渡到Java,而不必 ...

  8. 操作方法:具有多个Mongo存储库和Kotlin的Spring Boot 2 Web应用程序

    首先,免责声明:如果您正在编写微服务 (每个人现在都对吗?)并希望它是惯用的 ,那么通常不会在其中使用几个不同的数据源. 图片取自Pixabay© https: //pixabay.com/illus ...

  9. 将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系

    介绍 WireMock是用于基于HTTP的API的模拟服务器. 有些人可能会将其视为服务虚拟化工具或模拟服务器. 它使您能够存根所需的API或其他外部依赖项,以加快本地开发速度. 它支持测试真实API ...

最新文章

  1. 相机校正与相机内参、外参
  2. 通过组策略实现IE自动以当前域账号登录某站点
  3. UA MATH567 高维统计II 随机向量8 图的max-cut问题 0.5近似算法
  4. 【移动端DL框架】当前主流的移动端深度学习框架一览
  5. 出参传递数组指针_C语言指针重难点详解
  6. this super java_java中 this 和super的用法
  7. Burp破解安装(1.7和2.0)
  8. 自如总部摘牌?官方回应:更换logo 业务一切正常
  9. SQLServer2008数据库还原失败 恢复失败
  10. Protocol Buffer 序列化原理大揭秘
  11. toString方法和valueOf方法以及Symbol.toPrimitive方法的学习
  12. [2018.10.18 T3] 小 G 的线段树
  13. VB2010连接 三种数据库 源代码
  14. 北邮计算机考研科目2022,2022考研:北京邮电大学计算机专业考研经验复习指导...
  15. 企业微信开发之判断当前入口是PC端企业微信还是PC端浏览器。或者是APP端企业微信
  16. SpringBoot实现简易支付宝网页支付
  17. Python绘制bezier曲线
  18. h5-吸顶效果的实现方法
  19. 硬纪元干货|爱奇艺吴霜:看好互动视频、AI陪伴以及VR直播
  20. Top命令查询结果界面参数详解

热门文章

  1. 分布式系统之消息队列
  2. Oracle入门(十四.8)之迭代控制:基本循环Loop
  3. 乐观锁的一种实现方式——CAS
  4. Linux指令类型(一)change指令
  5. 12-多对一添加操作(添加新客户及对应的新订单)
  6. 用数组存储字符C进行回文检测
  7. 很简单很简单的DBHelper类
  8. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——工具类
  9. Zookeeper 详讲(笔记)1
  10. 3级调度 fpga_FPGA的软核、硬核、固核