??xml version="1.0" encoding="utf-8" standalone="yes"?> 2. Spring 1.x 提供的JMS Template化了JMS
Client端的~程Q但q没有涉及到服务端的攚w?br />
1. 它是Lightweight的,基本上只是普通POJOQ不用搞太多东西?/p>
2. 它是Spring Base的,可以使用Spring的各U特性如IOC、AOP?/p>
3. 它是Effective的,ZJencks的JCA Container实现 pool connectionQcontrol transactions
and manage security?/p>
4. 但它是withdout EJB
Container的?br />
一直希望那些J字头的协议能有几个提前告老还乡的Q好减轻一下我们的负担Q特别是qWebService满天飞的时代。但gq有很久都轮不到JMS的消失:
1.因ؓ
1.它是《Effective
Enterprise Java》的一个实c?#160;
可以把不影响用户执行l果又比较耗时的Q务(比如发邮仉知理员)异步的扔lJMS
服务端去做,而尽快的把屏q返q给用户?br />
而且服务端能够多U程排队响应--高ƈ发的h?br />
2.
可以在Java世界里达到最高的解耦?br />
ҎWebServiceQJMS的客L与服务端无需直连Q甚x需知晓Ҏ是谁、在哪里、有多少人,只要Ҏq的信息作响应就行了。对牵一发动全n的企业应用来说很ȝ?br />
2.
但是
1. Message
Bean带着EJBpȝ荣光Q步骤比较繁杂,你需要实现MessageDrivenBean、MessageListener接口Q还需要设|EJB的配|信息,然后是deploy....
3. 所以,SpringSide的Message Driven
POJOҎ
Spring JMS Template + ActiveMQ + Jencks
其实它还不是100% POJOQ除非再用上LingoQ但我已不想走得太远?br />
4.黄金版配|?br />
如果你想找一个ActiveMQ 3.2 Stable?Spring?00%可行的配|文Ӟ估计只能?a target="_blank">SpringSide目里看了。网上的文章Q不是已q时Q就是不切题?br />
推荐中英两䆾最接近的文:
L慈朋(IDEA中国):
Spring和Message Bean的整?/a>
Spring loaded: Message-Driven
POJOs
不过它们都有个outdate的地?-ActiveMQ3.2开始不再自带JCA
Cotainer了,而是其与Gernimo 合作而成了JencksQ需另外安装?br />
5.SpringSide旅游指南
pom.xml里的JMS部分
--所需的依赖包?br />
applicationContext-jms.xml --黄金版配|文件?br />
activemq.xml
--AcitveMQ Broker配置文g?br />
OrderPlaceMDP.java --Message Driven
Pojo?br />
JmsTest.java --单元试用例?br />
OrderManger.java的NodifyOrder()函数
--实际应用的地斏V?#160;
POJO太简单,唯一ȝ的配|文件已注释Q这里也无话了?/p>
配置方式分@AspectJ,XMLQ网上比较多的是Spring1.1或xml+@AspectJ方式配置Q例子用XML方式配置
1.定义切面cL口,切面cd现这个接口。声明(如果被代理的目标对象实现了至一个接口,则会使用JDK动态代理。所有该目标cd实现的接口都被代理。若该目标对象没有实CQ何接口,则创Z个CGLIB代理Q?br />
2.定义前置通知拦截处理c?/span>
3.定义拦截器配|文?/span>
4.试一下前|通知
5.定义q回后通知拦截处理c?/p>
6.定义拦截器配|文?/p>
7.试一下返回后通知
8.定义环绕通知拦截处理c(环绕通知在一个方法执行之前和之后执行?它得通知有机会既在一个方法执行之前又在执行之后运行。ƈ且,它可以决定这个方法在什么时候执行,如何执行Q甚x否执行?环绕通知l常在在某线E安全的环境下,你需要在一个方法执行之前和之后׃n某种状态的时候用?请尽量用最单的满你需求的通知。(比如如果前置通知Qbefore adviceQ也可以适用的情况下不要使用环绕通知Q)
通知Ҏ的第一个参数的cd必须?ProceedingJoinPoint
cd。在通知的主体中Q调?ProceedingJoinPoint
?code class="literal">proceed() Ҏ来执行真正的Ҏ?proceed
Ҏ也可能会被调用ƈ且传入一?Object[]
对象 - 该数l将作ؓҎ执行时候的参数?/p>
9.定义拦截器配|文?/p>
10.试一下环l通知