﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JAVA学习笔记-随笔分类-J2EE</title><link>http://www.blogjava.net/lingy/category/40074.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 05 Jun 2009 12:00:57 GMT</lastBuildDate><pubDate>Fri, 05 Jun 2009 12:00:57 GMT</pubDate><ttl>60</ttl><item><title>Lingo, 讓JMS來做RPC </title><link>http://www.blogjava.net/lingy/archive/2009/06/05/280257.html</link><dc:creator>林光炎</dc:creator><author>林光炎</author><pubDate>Fri, 05 Jun 2009 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/lingy/archive/2009/06/05/280257.html</guid><description><![CDATA[<span id="text173146" class="javascript">Java programmer講到RPC(Romote Procedure Call), 多半會想到 RMI, <br />
用RMI, 可以讓我們很容易的呼叫遠端的 mothod. <br />
<br />
但是, RMI 有一些缺點, 其中每一個method都要 throw RemoteException, 不過最近我都用Spring framework, 他已經讓我們處理掉了這個麻煩... <br />
<br />
另外一個RMI的缺點, 也就市本篇文章的重點, 就是method的呼叫者與被呼叫者的關係太緊密了, <br />
也就是說, client必須指定我所要呼叫的server是在網路的哪一個位址... <br />
<br />
JMS,則提供了一個方式,讓client (producer)送出message, 但不指定誰來收這一個message, <br />
這種 loosely coupling 的方式, 讓我們的程式更有彈性, 但是用JMS來做RPC還是有一些麻煩的地方 <br />
<blockquote><font color="#0000a0"><br />
* procedure送出的是message而不是 呼叫method <br />
* 基本上 JMS是 asynchronous, 也就是說 proceudre送出message後, message還沒被處理, procedure就繼續執行下去.這與我們一般RMI 的用法不一樣.</font></blockquote><br />
<br />
然而Lingo 幫我們解決了這兩個問題, 透過Lingo, 我們可以讓client直接呼叫server的method (而不是發送message, 在server這端 也不用去接受message), 但是並不指定是哪一個server幫我們處理這一個method call. 這對multiple server和load-balance很有幫助. <br />
<br />
Lingo的範例, 可以看下面這個網址, 相當簡單明瞭 <br />
<br />
<a class="ilink" href="http://lingo.codehaus.org/Example" target="_blank">http://lingo.codehaus.org/Example</a> <br />
<br />
附帶一提的是, lingo不但可以用 synchronous呼叫method, 另外也可以用synchronous呼叫method. <br />
<br />
好用吧..... <br />
<br />
參考資料 : <a class="ilink" href="http://lingo.codehaus.org/Home" target="_blank">http://lingo.codehaus.org/Home</a> </span><br />
<img src ="http://www.blogjava.net/lingy/aggbug/280257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingy/" target="_blank">林光炎</a> 2009-06-05 19:08 <a href="http://www.blogjava.net/lingy/archive/2009/06/05/280257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>反编译jad的命令使用</title><link>http://www.blogjava.net/lingy/archive/2009/06/05/280180.html</link><dc:creator>林光炎</dc:creator><author>林光炎</author><pubDate>Fri, 05 Jun 2009 03:49:00 GMT</pubDate><guid>http://www.blogjava.net/lingy/archive/2009/06/05/280180.html</guid><description><![CDATA[<p>首先,看一下jad的帮助提示</p>
<p>-a - 用JVM字节格式来注解输出 <br />
-af - 同 -a,但是注解的时候用全名称 <br />
-clear - 清除所有的前缀 <br />
-b - 输出多于的括号 (e.g., if(a) { b(); }, default: no) <br />
-d &lt;dir&gt; - 指定输出文件的文件目录 <br />
-dead -试图反编译代码的dead 部分(default: no) <br />
-disass - 不用用字节码的方式反编译 (no JAVA source generated) <br />
-f - 输出整个的名字,无论是类还是方法 <br />
-ff -输出类的成员在方法之前 (default: after methods) <br />
-i - 输出所有的变量的缺省的最初值 <br />
-l&lt;num&gt; - 将strings分割成指定数目的块的字符 (default: no) <br />
-lnc - 将输出文件用行号来注解 (default: no) <br />
-nl - 分割strings用新行字符 newline character (default: no) <br />
-nodos -不要去检查class文件是否以dos方式写 (CR before NL, default: check) <br />
-nocast - 不要生成辅助文件 <br />
-nocode -不要生成方法的源代码 <br />
-noconv - 不要转换java的定义符 (default: do) <br />
-noctor - 不允许空的构造器存在 <br />
-noinner -关掉对内部类的支持 (default: turn on) <br />
-nolvt - 忽略局部变量的表信息 <br />
-nonlb - 不要输出一个新行在打开一个括号之前 (default: do) <br />
-o - 无需确认直接覆盖输出 (default: no) <br />
-p - 发送反编译代码到标准输出 STDOUT (e.g., for piping) </p>
<p>其次.常用命令</p>
<p>jad -o -r -sjava -dsrc test.class</p>
<p>tree目录下的所有*.class文件<br />
&nbsp;&nbsp;&nbsp; jad -o -r -sjava -dsrc tree/**/*.class</p>
<p>&nbsp;&nbsp;&nbsp; unix可以表示为：jad -o -r -sjava -dsrc 'tree/**/*.class'</p>
<p>指定输出文件的名字的话，用以下的转移命令</p>
<p>jad -p example1.class &gt; myexm1.java</p>
<p><br />
文章出处：DIY部落(http://www.diybl.com/course/3_program/java/javajs/20090305/158191.html)</p>
<img src ="http://www.blogjava.net/lingy/aggbug/280180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingy/" target="_blank">林光炎</a> 2009-06-05 11:49 <a href="http://www.blogjava.net/lingy/archive/2009/06/05/280180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring与ActiveMQ(JMS)的整合说明</title><link>http://www.blogjava.net/lingy/archive/2009/06/04/280065.html</link><dc:creator>林光炎</dc:creator><author>林光炎</author><pubDate>Thu, 04 Jun 2009 12:13:00 GMT</pubDate><guid>http://www.blogjava.net/lingy/archive/2009/06/04/280065.html</guid><description><![CDATA[ActiveMQ是完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,也是Apache Geronimo默认的JMS provider。
<p>　　ActiveMQ的网站：<a href="http://www.activemq.org/" target="_blank">http://www.activemq.org</a></p>
<p>　　使用ActiveMQ后，可以在普通Web服务器使用JMS功能，不依赖于特定的应用服务器。</p>
<ol>
    <h2>1. ActiveMQ 4.1-incubator-SNAPSHOT 与Spring 2.0 集成</h2>
    <p>ActiveMQ4.1 响应Spring 2.0号召，支持了引入XML Schema namespace的简单配置语法，简化了配置的语句。</p>
    <h2>1.1 引入ActiveMQ的XSD</h2>
    <p>在ApplicationContext.xml(Spring的配置文件)中引入ActiveMQ的XML Scheam 配置文件),如下:<br />
    (说明:由于ActiveMQ的那个XSD有部分错误,因此使用的是自行修改过的XSD,见&#8221;配置ClassPath中的scheam&#8221;小节)</p>
    <pre><textarea style="width: 502px; height: 183px" class="Xml" rows="1" cols="60" name="code">&lt;beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:amq="http://activemq.org/config/1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://activemq.org/config/1.0
    http://people.apache.org/repository/org.apache.activemq/xsds/activemq-core-4.1-incubator-SNAPSHOT.xsd"&gt;
    &lt;/beans&gt;
    </textarea></pre>
    <h2>1.2 配置ClassPath中的schema</h2>
    <p>在ClassPath 下面建立META-INF\spring.schemas 内容如下</p>
    <pre><textarea style="width: 502px; height: 116px" class="Xml" rows="1" cols="60" name="code">http\://people.apache.org/repository/org.apache.activemq/xsds/activemq-core-4.1-incubator-SNAPSHOT.xsd=/activemq-core-4.1-incubator-SNAPSHOT.xsd
    这个spring.schemas是spring自定义scheam的配置文件
    请注意"http:\://"部分写法
    </textarea></pre>
    <h2>1.3 配置ActiveMQ embedded ActiveMQ Broker</h2>
    <pre><textarea style="width: 502px; height: 148px" class="Xml" rows="1" cols="60" name="code">&lt;!-- lets create an embedded ActiveMQ Broker --&gt;
    &lt;amq :broker useJmx="false" persistent="false"&gt;&lt;/amq&gt;
    &lt;amq :transportConnectors&gt;
    &lt;amq :transportConnector uri="tcp://localhost:0"/&gt;
    &lt;/amq&gt;
    </textarea></pre>
    <p>当spring初始化时候,ActiveMQ embedded Broker 就会启动了</p>
    <h2>1.4 配置BookStore MDP</h2>
    <p>配置ConnectionFactory,由于是embedded 所以URL为:vm://localhost</p>
    <pre><textarea style="width: 502px; height: 124px" class="Xml" rows="1" cols="60" name="code">&lt;!--  ActiveMQ connectionFactory to use  --&gt;
    &lt;amq :connectionFactory id="jmsConnectionFactory" brokerURL="vm://localhost"/&gt;
    </textarea></pre>
    <p>配置Queue名字</p>
    <pre><textarea style="width: 502px; height: 103px" class="Xml" rows="1" cols="60" name="code">&lt;!-- ActiveMQ destinations to use --&gt;
    &lt;amq :queue name="destination" physicalName="org.apache.activemq.spring.Test.spring.embedded"/&gt;
    </textarea></pre>
    <p>配置JmsTemplate</p>
    <pre><textarea style="width: 502px; height: 163px" class="Xml" rows="1" cols="60" name="code">&lt;!--  Spring JmsTemplate config --&gt;
    &lt;bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"&gt;
    &lt;property name="connectionFactory"&gt;
    &lt;!-- lets wrap in a pool to avoid creating a connection per send --&gt;
    &lt;bean class="org.springframework.jms.connection.SingleConnectionFactory"&gt;
    &lt;property name="targetConnectionFactory"&gt;
    &lt;ref local="jmsConnectionFactory"/&gt;
    &lt;/property&gt;
    &lt;/bean&gt;
    &lt;/property&gt;
    &lt;!-- custom MessageConverter define --&gt;
    &lt;property name="messageConverter" ref="orderMessageConverter"/&gt;
    &lt;/bean&gt;
    </textarea></pre>
    <p>配置MDP POJO</p>
    <pre><textarea style="width: 502px; height: 127px" class="Xml" rows="1" cols="60" name="code">&lt;!-- a sample POJO which uses a Spring JmsTemplate --&gt;
    &lt;bean id="orderMessageProducer" class="org.springside.bookstore.components.activemq.OrderMessageProducer"&gt;
    &lt;property name="template"&gt;
    &lt;ref bean="jmsTemplate"/&gt;
    &lt;/property&gt;
    &lt;property name="destination"&gt;
    &lt;ref bean="destination"/&gt;
    &lt;/property&gt;
    &lt;/bean&gt;
    &lt;!-- this is the Message Driven POJO (MDP) --&gt;
    &lt;!-- define MessageListenerAdapter --&gt;
    &lt;bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter"&gt;
    &lt;constructor -arg&gt;
    &lt;bean class="org.springside.bookstore.components.activemq.OrderMessageConsumer"&gt;
    &lt;property name="mailService" ref="mailService"&gt;&lt;/property&gt;
    &lt;/bean&gt;
    &lt;/constructor&gt;
    &lt;!-- mey be other method --&gt;
    &lt;property name="defaultListenerMethod" value="sendEmail"/&gt;
    &lt;!-- custom MessageConverter define --&gt;
    &lt;property name="messageConverter" ref="orderMessageConverter"/&gt;
    &lt;/bean&gt;
    &lt;!-- and this is the attendant message listener container --&gt;
    &lt;bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"&gt;
    &lt;property name="connectionFactory" ref="jmsConnectionFactory"/&gt;
    &lt;property name="destination" ref="destination"/&gt;
    &lt;property name="messageListener" ref="messageListener"/&gt;
    &lt;/bean&gt;
    </textarea></pre>
    <h2>补充说明</h2>
    <li>采用了自定义的MessageConverter,Producer能够直接发送POJO。
    <li>使用了Spring的DefaultMessageListenerContainer,MessageListenerAdapter, Consumer　不用实现MessageListener 接口。</li>
</ol>
<img src ="http://www.blogjava.net/lingy/aggbug/280065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingy/" target="_blank">林光炎</a> 2009-06-04 20:13 <a href="http://www.blogjava.net/lingy/archive/2009/06/04/280065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activemq和Lingo实现JMS和异步调用</title><link>http://www.blogjava.net/lingy/archive/2009/06/04/280064.html</link><dc:creator>林光炎</dc:creator><author>林光炎</author><pubDate>Thu, 04 Jun 2009 12:11:00 GMT</pubDate><guid>http://www.blogjava.net/lingy/archive/2009/06/04/280064.html</guid><description><![CDATA[jms是大家在项目中经常用到的技术，而activemq又是开源的jms产品中比较优秀的。在应用JMS处理相关业务时，大家都是构造消息，然后发送到队列，最后用message监听器监听到消息，对消息进行分析处理。在这个过程中，有两步是比较麻烦和重复的，那就是构造消息和拆解消息。并且这样与面向对象的思想很是违背。如果这样做显然是面向消息数据的，而不是面向对象的。基于以上原因，我向大家介绍一个我在项目中经过实践的开源框架：lingo.<br />
　　lingo在JMS中起的主要作用就是对消息的封装，它让你可以不必关心消息的构造和拆解，而只需关心你本身的业务逻辑。我将举一个例子，分别用activemq直接实现和用lingo实现。在这个例子中我用到了spring framework.<br />
　　=================================Hello.java===========================<br />
　　import java.io.Serializable;<br />
　　/**Hello.java用来传递JAVA对象<br />
　　* Author: cjp<br />
　　* Date: 2005-11-8<br />
　　* Time: 22:24:02<br />
　　*/<br />
　　public class Hello implements Serializable {<br />
　　private String id;<br />
　　private Hello hello;<br />
　　private PointList pointList;<br />
　　public String getId() {<br />
　　return id;<br />
　　}<br />
　　public void setId(String id) {<br />
　　this.id = id;<br />
　　}<br />
　　public Hello getHello() {<br />
　　return hello;<br />
　　}<br />
　　public void setHello(Hello hello) {<br />
　　this.hello = hello;<br />
　　}<br />
　　}<br />
　　=========================SpringTest .java========================<br />
　　import org.springframework.jms.core.JmsTemplate;<br />
　　import org.springframework.jms.core.MessageCreator;<br />
　　import org.springframework.test.AbstractDependencyInjectionSpringContextTests;<br />
　　import javax.jms.*;<br />
　　/**<br />
　　*发送JMS消息<br />
　　*/<br />
　　public class SpringTest extends AbstractDependencyInjectionSpringContextTests<br />
　　{<br />
　　protected String[] getConfigLocations()<br />
　　{<br />
　　return new String[]{"file:D:\\wosame\\test\\com\\wosame\\room\\jms\\jms.xml"};<br />
　　}<br />
　　public void testSendMessage() throws Exception<br />
　　{<br />
　　JmsTemplate jmsTemplate = (JmsTemplate) applicationContext.getBean("jmsTemplate");<br />
　　jmsTemplate.send(new MessageCreator()<br />
　　{<br />
　　public Message createMessage(Session session) throws JMSException<br />
　　{<br />
　　ObjectMessage message=session.createObjectMessage();<br />
　　Hello hello=new Hello();<br />
　　hello.setId("test");<br />
　　message.setObject(hello);<br />
　　return message;<br />
　　}<br />
　　});<br />
　　}<br />
　　}<br />
　　================================HelloMDP .java==================================<br />
　　/**<br />
　　处理JMS消息<br />
　　*/<br />
　　import org.apache.commons.logging.Log;<br />
　　import org.apache.commons.logging.LogFactory;<br />
　　import javax.jms.*;<br />
　　public class HelloMDP implements MessageListener<br />
　　{<br />
　　protected Log log = LogFactory.getLog(HelloMDP.class);<br />
　　public void onMessage(Message message)<br />
　　{<br />
　　try<br />
　　{<br />
　　ObjectMessage objMessage = (ObjectMessage) message;<br />
　　Hello hello= (Hello) objMessage.getObject();<br />
　　System.out.println("hello.getId() = " + hello.getId());<br />
　　} catch (JMSException e)<br />
　　{<br />
　　log.error("Parse failed", e);<br />
　　}<br />
　　}<br />
　　}<br />
　　================================jms.xml==================================<br />
　　&lt;?xml version="1.0" encoding="UTF-8"?<br />
　　&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"<br />
　　"http://www.springframework.org/dtd/spring-beans.dtd"<br />
　　&lt;beans<br />
　　&lt;!--嵌入式的JMS连接，也就是跟随JVM一起启动,可以参看activemq的文档--<br />
　　&lt;bean id="connectionFactory" class="org.activemq.ActiveMQConnectionFactory" &lt;property name="brokerURL" value="vm://localhost"/<br />
　　&lt;property name="useEmbeddedBroker" value="true"/<br />
　　&lt;/bean<br />
　　&lt;!--消息监听器，也就是消息的具体的处理器--<br />
　　&lt;bean id="HelloMDP" class="HelloMDP"/<br />
　　&lt;!--jms监听需要JTA容器的支持--<br />
　　&lt;bean id="activeMQContainer" class="org.activemq.jca.JCAContainer"<br />
　　&lt;property name="workManager"<br />
　　&lt;bean id="workManager" class="org.activemq.work.SpringWorkManager"/<br />
　　&lt;/property<br />
　　&lt;property name="resourceAdapter"<br />
　　&lt;bean id="activeMQResourceAdapter" class="org.activemq.ra.ActiveMQResourceAdapter"<br />
　　&lt;property name="serverUrl" value="vm://localhost"/<br />
　　&lt;/bean<br />
　　&lt;/property<br />
　　&lt;/bean<br />
　　&lt;!--消息的消费者，也就是将监听器与具体的队列关联--<br />
　　&lt;bean id="HelloQueueConsumer" factory-method="addConnector" factory-bean="activeMQContainer"<br />
　　&lt;property name="activationSpec"<br />
　　&lt;bean class="org.activemq.ra.ActiveMQActivationSpec"<br />
　　&lt;property name="destination" value="Hello.Queue"/<br />
　　&lt;property name="destinationType" value="javax.jms.Queue"/<br />
　　&lt;/bean<br />
　　&lt;/property<br />
　　&lt;property name="ref" value="HelloMDP"/<br />
　　&lt;/bean<br />
　　&lt;!--spring的JMS template,用来发送JMS消息到指定的队列--<br />
　　&lt;bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"<br />
　　&lt;property name="defaultDestinationName" value="Hello.Queue"/<br />
　　&lt;property name="connectionFactory" ref="connectionFactory"/<br />
　　&lt;/bean<br />
　　&lt;/beans
<p>&nbsp;</p>
<p style="margin: 0px">
<div style="display: none" id="ubbcontent">　　jms是大家在项目中经常用到的技术，而activemq又是开源的jms产品中比较优秀的。在应用JMS处理相关业务时，大家都是构造消息，然后发送到队列，最后用message监听器监听到消息，对消息进行分析处理。在这个过程中，有两步是比较麻烦和重复的，那就是构造消息和拆解消息。并且这样与面向对象的思想很是违背。如果这样做显然是面向消息数据的，而不是面向对象的。基于以上原因，我向大家介绍一个我在项目中经过实践的开源框架：lingo. 　　lingo在JMS中起的主要作用就是对消息的封装，它让你可以不必关心消息的构造和拆解，而只需关心你本身的业务逻辑。我将举一个例子，分别用activemq直接实现和用lingo实现。在这个例子中我用到了spring framework. 　　=================================Hello.java=========================== 　　import java.io.Serializable; 　　/**Hello.java用来传递JAVA对象　　* Author: cjp 　　* Date: 2005-11-8 　　* Time: 22:24:02 　　*/ 　　public class Hello implements Serializable { 　　private String id; 　　private Hello hello; 　　private PointList pointList; 　　public String getId() { 　　return id; 　　} 　　public void setId(String id) { 　　this.id = id; 　　} 　　public Hello getHello() { 　　return hello; 　　} 　　public void setHello(Hello hello) { 　　this.hello = hello; 　　} 　　} 　　=========================SpringTest .java======================== 　　import org.springframework.jms.core.JmsTemplate; 　　import org.springframework.jms.core.MessageCreator; 　　import org.springframework.test.AbstractDependencyInjectionSpringContextTests; 　　import javax.jms.*; 　　/** 　　*发送JMS消息　　*/ 　　public class SpringTest extends AbstractDependencyInjectionSpringContextTests 　　{ 　　protected String[] getConfigLocations() 　　{ 　　return new String[]{"file:D:\\wosame\\test\\com\\wosame\\room\\jms\\jms.xml"}; 　　} 　　public void testSendMessage() throws Exception 　　{ 　　JmsTemplate jmsTemplate = (JmsTemplate) applicationContext.getBean("jmsTemplate"); 　　jmsTemplate.send(new MessageCreator() 　　{ 　　public Message createMessage(Session session) throws JMSException 　　{ 　　ObjectMessage message=session.createObjectMessage(); 　　Hello hello=new Hello(); 　　hello.setId("test"); 　　message.setObject(hello); 　　return message; 　　} 　　}); 　　} 　　} 　　================================HelloMDP .java================================== 　　/** 　　处理JMS消息　　*/ 　　import org.apache.commons.logging.Log; 　　import org.apache.commons.logging.LogFactory; 　　import javax.jms.*; 　　public class HelloMDP implements MessageListener 　　{ 　　protected Log log = LogFactory.getLog(HelloMDP.class); 　　public void onMessage(Message message) 　　{ 　　try 　　{ 　　ObjectMessage objMessage = (ObjectMessage) message; 　　Hello hello= (Hello) objMessage.getObject(); 　　System.out.println("hello.getId() = " + hello.getId()); 　　} catch (JMSException e) 　　{ 　　log.error("Parse failed", e); 　　} 　　} 　　} 　　================================jms.xml================================== 　　&lt;?xml version="1.0" encoding="UTF-8"? 　　&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 　　"http://www.springframework.org/dtd/spring-beans.dtd" 　　&lt;beans 　　&lt;!--嵌入式的JMS连接，也就是跟随JVM一起启动,可以参看activemq的文档-- 　　&lt;bean id="connectionFactory" class="org.activemq.ActiveMQConnectionFactory" &lt;property name="brokerURL" value="vm://localhost"/ 　　&lt;property name="useEmbeddedBroker" value="true"/ 　　&lt;/bean 　　&lt;!--消息监听器，也就是消息的具体的处理器-- 　　&lt;bean id="HelloMDP" class="HelloMDP"/ 　　&lt;!--jms监听需要JTA容器的支持-- 　　&lt;bean id="activeMQContainer" class="org.activemq.jca.JCAContainer" 　　&lt;property name="workManager" 　　&lt;bean id="workManager" class="org.activemq.work.SpringWorkManager"/ 　　&lt;/property 　　&lt;property name="resourceAdapter" 　　&lt;bean id="activeMQResourceAdapter" class="org.activemq.ra.ActiveMQResourceAdapter" 　　&lt;property name="serverUrl" value="vm://localhost"/ 　　&lt;/bean 　　&lt;/property 　　&lt;/bean 　　&lt;!--消息的消费者，也就是将监听器与具体的队列关联-- 　　&lt;bean id="HelloQueueConsumer" factory-method="addConnector" factory-bean="activeMQContainer" 　　&lt;property name="activationSpec" 　　&lt;bean class="org.activemq.ra.ActiveMQActivationSpec" 　　&lt;property name="destination" value="Hello.Queue"/ 　　&lt;property name="destinationType" value="javax.jms.Queue"/ 　　&lt;/bean 　　&lt;/property 　　&lt;property name="ref" value="HelloMDP"/ 　　&lt;/bean 　　&lt;!--spring的JMS template,用来发送JMS消息到指定的队列-- 　　&lt;bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate" 　　&lt;property name="defaultDestinationName" value="Hello.Queue"/ 　　&lt;property name="connectionFactory" ref="connectionFactory"/ 　　&lt;/bean 　　&lt;/beans</div>
<p>&nbsp;</p>
<script>document.getElementById("ubbcontent").style.display="none";</script>
<div style="clear: both">&nbsp;</div>
<img src ="http://www.blogjava.net/lingy/aggbug/280064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingy/" target="_blank">林光炎</a> 2009-06-04 20:11 <a href="http://www.blogjava.net/lingy/archive/2009/06/04/280064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>