在撰写本文时,我们刚刚向即将到来的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 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.js_Camel 2.11 –没有Spring的Camel Web应用程序

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

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

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

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

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

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

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

  9. 使用Spring的Hibernate构建Java Web应用程序

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

最新文章

  1. 苹果系统下如何粘贴复制?
  2. 闲话网名之“jrfly331”
  3. 【原创】概率DP总结 by kuangbin
  4. iextensionunit类_Java ICompilationUnit.reconcile方法代码示例
  5. php表格之间设置间隔,html表格如何设置间距
  6. Sql 函数大全 (更新中...由难到简
  7. './mysql-bin.index' not found (Errcode: 13) 的解决方法
  8. Javascript高级程序设计第二版第七章匿名函数--笔记
  9. Java Code Examples for org.apache.ibatis.annotations.Insert
  10. 聚类 | Map-Equation多级网络聚类模型——InfoMap
  11. 【GPT-3】千呼万唤始出来——GPT-3终于开源!
  12. 万年历c语言 输出单月,求帮忙差错,打印万年历,输入某年某月,打印该月日历...
  13. Java可视化编程【JFormDesigner安装教程】
  14. 南京大学信号与系统851考研上岸经验分享
  15. 如何在腾讯云学生服务器搭建个人网站——配置web开发环境详细步骤
  16. 十年MFC经历认识的Microsoft技术
  17. Ubuntu18.04搭建源码搜索引擎Opengrok
  18. 解决java编译错误( 程序包javax.servlet不存在javax.servlet.*)
  19. ensp 模拟器配置无线网络
  20. 嵌入式培训经验分享——C语言小项目(五子棋)

热门文章

  1. 在eclipse中创建maven项目错误的解决方法:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-qu
  2. ReviewForJob——二叉堆优先队列的实现(三种堆节点类型——int + struct HeapNode + struct HeapNode*)
  3. ReviewForJob——快速排序(基于插入排序)+快速选择(快速排序变体)
  4. Spring4.2.6+SpringMVC4.2.6+MyBatis3.4.0 整合
  5. SpringMVC 参数校验
  6. 单列集合List的实现类
  7. java观察者设计模式_Java中的观察者设计模式
  8. jpa执行sql脚本_JPA persistence.xml SQL脚本定义
  9. 动态代码生成 静态代码生成_将速度提升到自己的个人代码生成器中
  10. javafx css_JavaFX缺少的功能调查:CSS