自打Spring2出来后一直使用其自带的MDP功能,当时使用的JMS产品是Joram,后来实在受不了Joram持久化机制和莫名其妙的不能启动服务器等,狠一狠心换成口碑日佳的ActiveMQ。ActiveMQ在使用方面竟比我想像中的简单!但这种简单来得可不简单,你需要反复翻他的文档。搞了好久后看着那简洁的配置和不用提心吊胆的Server,真有相见恨晚的感觉。
使用ActiveMQ,很难不知道有Jencks这个东西。我在之前只是简单的知道该JCA产品可以实现Message driven Pojo,但想想Spring也能做到的东西我为什么用另一套,看了Jencks的FAQ就清楚了:
www.jencks.org/How+does+Jencks+compare+to+Springs+MDPs
偶翻译能力太差,大概了解但不知道要乍讲。看官们还是自个看看吧:P。
Jencks2.0版本的配置比1.X的配置来得清爽很多。
1.X版本的可参考Springside的Wiki (XSD版):
http://www.jencks.org/How+does+Jencks+compare+to+Springs+MDPs
另外可以参考Javaeye另一位仁兄的尝试(Spring Bean版 ):
jamsa.iteye.com/blog/post/168023
Jamsa的示例中只演示了Inboud 的情况,实际上Jencks是可以包括Inbound outbound的Message的。
我的目标是使用Jencks2.0实现MDP及对Outbound Message的管理,参考官方文档很快可以把配置做出来:
www.jencks.org/Message+Driven+POJOs
www.jencks.org/Outbound+JMS
贴一下我的配置文件全貌:
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
-
- <beans>
-
- <bean id="jmsTransactionManager"
- class="org.jencks.factory.TransactionManagerFactoryBean" />
-
-
- <bean id="connectionManager"
- class="org.jencks.factory.ConnectionManagerFactoryBean">
- <property name="transactionManager" ref="jmsTransactionManager" />
- <!---->bean>
-
- <bean id="jmsResourceAdapter"
- class="org.apache.activemq.ra.ActiveMQResourceAdapter">
- <property name="serverUrl">
- <value>tcp://localhost:61616<!---->value>
- <!---->property>
- <!---->bean>
-
- <bean id="jmsManagedConnectionFactory"
- class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory">
- <property name="resourceAdapter" ref="jmsResourceAdapter" />
- <!---->bean>
-
- <bean id="connectionFactory"
- class="org.jencks.factory.ConnectionFactoryFactoryBean">
- <property name="managedConnectionFactory"
- ref="jmsManagedConnectionFactory" />
- <property name="connectionManager" ref="connectionManager" />
- <!---->bean>
-
-
-
- <bean id="jmsTemplate"
- class="org.springframework.jms.core.JmsTemplate">
- <property name="connectionFactory">
- <ref bean="connectionFactory" />
- <!---->property>
- <!---->bean>
-
- <bean id="sender" class="net.jf.activemq.Sender">
- <property name="jmsTemplate" ref="jmsTemplate" />
- <property name="queue">
- <value>queue.text<!---->value>
- <!---->property>
- <!---->bean>
-
-
-
- <bean id="receiver" class="net.jf.activemq.Receiver" /> <!---->
-
- <bean id="jencks" class="org.jencks.JCAContainer">
- <property name="transactionManager" ref="jmsTransactionManager" />
- <property name="threadPoolSize" value="25" />
-
-
- <property name="resourceAdapter" ref="jmsResourceAdapter" />
- <!---->bean>
-
- <bean id="inboundConnectorA" class="org.jencks.JCAConnector">
- <property name="jcaContainer" ref="jencks" />
-
- <property name="activationSpec">
- <bean
- class="org.apache.activemq.ra.ActiveMQActivationSpec">
- <property name="destination" value="queue.text" />
- <property name="destinationType"
- value="javax.jms.Queue" />
- <!---->bean>
- <!---->property>
- <property name="ref" value="receiver" />
- <!---->bean>
-
- <!---->beans>
注意inbound 及outboud的资源适配器使用相同的适配器。多数情况下,JMS的发送方及接收方配置分开,但注意当同时使用Jencks管理发送消息方及接收方时,要保持resourceAdepter的一致!
还一件事你一定要知道。要不你会跟我一样抓狂上好几天。就是Jencks2.0的依赖包的问题。
找遍Jencks2.0下载回来的包,其实还是差两个很重要的包。那就是geronimo-transaction和geronimo-connector包。而Jencks官网对此没有提及,很郁闷。
我在寻找这两个包的过程中下编了geronimo的几个版本都没发现,然后到
这里找到他们的1.1版本。运行时发现缺少类,该类是属于Transaction包内的类,分明包内没有此类:\org\apache\geronimo\transaction\manager\XAWork。Google一下,结果奇少。我想应该是包版本问题,而Maven的仓库只有1.2Beta版本的,我下来一看也没这个类,于是没有替换掉,继续使用1.1版。
后来找到这个类是Transatction包的2.0版本才有的,我赶紧SVN了Geronimo最新的源码回来,自己Build了个快照的版本。其实是两个:
geronimo-connector-2.0-SNAPSHOT.jar
geronimo-transaction-1.2-SNAPSHOT.jar
而后来发生的问题几乎要推翻我的Java信仰。运行时报的错是NoSuchMethodError,告诉我缺少一个方法。而分明那个类,那个方法是存在的。我很确定在我的类库里,这个类只存在一个版本。我实在没有办法了,我开始怀疑2.0的成熟性。但是还没有放弃最后的希望,我又SVN了一份Jencks的最新代码回来。用Maven跑一跑,所有测试都没问题。而这时发现它只是用了Transaction及Connector的1.2的包。我决定最后一博,把这两个包替换掉2.0的包。奇迹啊,哥们,终于久违的“Hello activeMQ”打印了出来。
至今我还没想明白怎么现在又不报缺XAWork?为什么存在的方法是被报不存在?不过最后终于跑起来了,很爽。
所以不要怪我上面那一番没章法的抱怨。这样的问题让我几近崩溃。我觉得我有必要把过程写出来与大家分享。让后来的朋友能快速地解决问题。
实际上,我在看MailList的时候看到过一封类似问题的邮件,我其实只要按方法用1.2换掉1.1的Connector和Trasaction就得了。但我死活认为非要找到XAWork的包才行。而最后解决的方法却是没必要找到XAWork的包。额滴神啊。我现在还想不明白为啥。望哪位看官能指点迷津!
最后附上我的Lib(这是最重要D):
activeio-core-3.0.0-incubator.jar
activemq-console-4.1.1.jar
activemq-core-4.1.1.jar
activemq-core-4.1.1-tests.jar
activemq-jaas-4.1.1.jar
activemq-ra-4.1.1.jar
activemq-web-4.1.1.jar
backport-util-concurrent-2.1.jar
commons-logging-1.1.jar
geronimo-connector-1.2-beta.jar
geronimo-j2ee-connector_1.5_spec-1.0.1.jar
geronimo-j2ee-management_1.0_spec-1.0.jar
geronimo-jms_1.1_spec-1.0.jar
geronimo-jta_1.0.1B_spec-1.0.1.jar
geronimo-transaction-1.2-beta.jar
jencks-2.0-all.jar
jencks-amqpool-2.0.jar
log4j-1.2.12.jar
mx4j-2.1.1.jar
spring-2.0.jar
分享到:
相关推荐
哲克定律(Jencks' Law)在消毒中涉及的是不同类型的消毒剂对微生物的杀灭效率与剂量之间的关系。例如,氯消毒时,氯的浓度和接触时间决定了消毒效果。 二、氯消毒法 氯消毒是最常见的水处理消毒方法之一,因为氯...
Jencks,1972;Jensen,1973;Moos & Insel,1974;Schulman,1970;Walberg,1971 )。 环境研究综述(例如,Bloom, 1964; Dave, 1963; Marjoribanks, 1972a; Mosychuk, 1969; Plowden, 1967; Vernon
该实验的结果还表明,一些调查可能过于悲观(Jencks,1972),并且当黑人儿童获得非常早期的学前教育时,有希望的教育结果是可行的,前提是这些计划包括父母和社区资源参与和参与以及教育程序通过在丰富课程完成后与...
# 基于Java Web的饮品销售管理系统 ## 项目简介 本项目是一个基于Java Web的饮品销售管理系统,主要用于学校实训课程的作业。系统涵盖了从用户管理、商品管理、订单管理到购物车管理的全套功能,旨在提供一个完整的在线饮品销售解决方案。 ## 项目的主要特性和功能 ### 用户管理 用户注册与登录支持用户注册新账号和登录系统。 用户信息管理包括用户信息的查询、修改和删除。 用户类型管理区分不同类型的用户(如管理员、普通用户)。 ### 商品管理 商品CRUD操作支持商品的添加、修改、删除和查询。 商品分类管理支持多级商品分类的查询和管理。 商品分页查询支持按页查询商品信息,提高查询效率。 ### 订单管理 订单CRUD操作支持订单的创建、修改、删除和查询。 订单明细管理支持订单明细的添加和管理。 订单状态管理支持订单状态的更新和查询。 ### 购物车管理
BitmapFunc
c++课程设计-产品入库管理操作系统
c语言火车票订票管理源码
仿新浪微博下拉刷新继承FrameLayout
浮动搜索框(SearchManager)
# 基于Particle Tracker框架的传感器浮标系统 ## 项目简介 本项目是一个基于Particle Tracker框架的传感器浮标系统,旨在通过集成多种传感器和通信模块,实现对环境参数的实时监测和数据传输。该系统主要应用于海洋监测、环境监测等领域,通过浮标上的传感器收集温度、湿度、位置等数据,并通过Particle Tracker平台进行数据处理和传输。 ## 项目的主要特性和功能 1. 传感器集成 集成BMI160传感器,用于检测三轴加速度和三轴陀螺仪数据。 集成Grove温度和湿度传感器,用于实时监测环境温度和湿度。 集成NTC热敏电阻,用于精确测量温度变化。 2. 位置追踪 使用UBLOX GPS模块,提供高精度的位置追踪功能。 支持地理围栏功能,能够检测浮标是否进入或离开预设区域。 3. 数据通信 通过CAN总线实现传感器数据的高效传输。
<项目介绍> - 树莓派使用OpenCV库实现人脸识别 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
PHP基于Linux的远程管理系统服务器端的实现(源代码+论文)
c语言课程设计-产品管理系统
一个智能问答系统,能够自动将用户的自然语言问题转换成 SQL 查询,并以可视化形式展示结果 用户使用自然语言查询数据。基于 Python、MySQL 和 Milvus 构建,将用户的问题转换为 SQL 查询,安全地执行,并产生符合echarts的数据可视化呈现结果。
医生健康科普问答咨询平台(前端+后台)源码带手机端 医生健康科普问答咨询平台,主要提供专业、及时的健康咨询服务,问题涵盖面广,包括内科、外科、 妇科、儿科、男科、中医、五官、等科室。可以通过视频,音频,文章,问答等方式进行科普。 前台首页:1、包含幻灯片 2、权威医生 3、医学视频 4、语音科普 5、科普文章。 6、健康问答 7、个人中心。 网站管理后台:各模块可以灵活管理和配置。 1、信息管理: (1)会员系统。(2)轮播系统。(3)权威医生。(4)医学视频。(5)语音科普。 (6)科普文章。(7)健康问答。(8)友情链接。(9)帮助中心。(10)栏目板块。 2、用户管理:(1)管理员管理。(2)部门管理。(数据权限)(3)用户组管理。(菜单权限) 3、页面管理:(1)高级标签(SQL)。(2)自定义静态标签。(3)静态页面生成。 4、系统管理:(1)网站参数管理。 (2)模型管理。(可以生成板块,对应字段后台展示不同控件,并有相应维护功能,可以根据模型 及模型下栏目创建标签,将标签放入html模板中,生
# 基于Python和OpenMV Camera的图像处理与通信系统 ## 项目简介 本项目基于OpenMV Camera,结合MicroPython,实现了图像捕获、处理与通信功能。通过UART和SPI协议,实现了与Arduino和ESP32等设备的通信,实现了图像数据的传输和接收。项目涵盖了图像捕获、处理、传输、反馈等多个环节,旨在实现机器视觉应用中的图像数据采集与通信。 ## 主要特性和功能 1. 图像捕获使用OpenMV Camera进行图像捕获,支持灰度图像和彩色图像。 2. 图像处理对捕获的图像进行二值化、灰度转换等处理,用于后续机器视觉任务。 3. UART通信通过UART接口,实现与Arduino、ESP32等设备的通信,发送和接收图像数据。 4. SPI通信作为SPI从设备,与Arduino主设备进行通信,实现数据的传输。 5. LED状态指示使用LED灯指示程序运行状态和图像捕获处理进度。
gee python 教程(西班牙语)
按钮点击WIN8 磁贴效果