MDB的简单替代实现
来源:互联网 发布:数据口径 英文 编辑:程序博客网 时间:2024/05/16 09:24
目前的项目要求尽量不要使用EJB来完成本来只有EJB才能实现的功能,比如声明式的事务管理。在做到异步处理某个业务的时候,发现Spring并没有提供MDB的替代实现,看来只能自己实现了。
由于这个相对比较简单,现在把相关的代码整理在这里:
1. 首先在Spring配置文件中定义ConnectionFactory和一个Destination
<bean id=”connectionFactory” class=”org.springframework.jndi.JndiObjectFactoryBean”>
<property name=”jndiName”><value>ConnectionFactory</value></property>
</bean>
<bean id=”queue” class=”org.springframework.jndi.JndiObjectFactoryBean”>
<property name=”jndiName”><value>queue/MyQueue</value></property>
</bean>
2. Send Message
我们可以使用Spring提供的JmsTemplate来实现消息发送的功能:
JmsTemplate template = new JmsTemplate( connectionFactory );
template.send( destination, new MessageCreator()
{
public Message createMessage( Session session ) throws JMSException
{
return session.createTextMessage( message );
}
} );
其中的connectionFactory和destionation分别引用Spring中定义好的Bean。
3. Message Consumer
我们用一个简单的类来替代MDB。为了实现这个功能,我们需要考虑下面几个问题:
· 他需要实现MessageListener接口;
· 他需要监听一个Destination
· 系统启动的时候能够发布这个类
我们可以用下面的方法解决这些问题:
首先定义这个类:
public class MessageConsumerImpl implements MessageListener
{
public void init()
{
}
public void onMessage( Message message )
{
//process the message.
}
}
然后在Spring配置文件中定义这个Bean的时候,定义其init-method属性,如下:
<bean id="messageConsumer" class="com.company.MyMessageConsumer" init-method="init">
<property name="connectionFactory"><ref local="connectionFactory"/></property>
<property name="destination"><ref local="queue"/></property>
</bean>
在init方法中将该类和一个具体的Destination绑定,如下:
public void init() {
connection = (QueueConnection) connectionFactory.createConnection();
Session session = connection.createSession( false,
Session.AUTO_ACKNOWLEDGE );
MessageConsumer consumer = session.createConsumer( destination );
consumer.setMessageListener( this );
connection.start();
}
其中MessageCosumer是javax.jms包中的一个类。代码中仅用了一个Queue来作P2P的消息发送情况,Pub-Sub的消息没有测试。
- MDB的简单替代实现
- 基于web的简单MDB
- localtime_r的替代实现
- localtime_r的替代实现
- java操作Access *.mdb数据库的实现
- 简单的Java Message Service编程 和 EJB MDB
- EJB3.0 MDB实现
- mdb存储引擎实现
- 使用erlang实现简单的http性能测试工具,替代loadrunner、loadspace
- 基于S3C2410A的MDB/ICP协议的实现
- 用程序实现压缩access(*.mdb)数据库的方法.
- 实现ASP/jsp访问远程机器上的MDB文件
- IIS下防止mdb数据库被下载的实现方法
- DataConvert,实现MDB到Oracle属性、空间数据的插入
- 用程序实现压缩access(*.mdb)数据库的方法
- 一个可以替代Toast的简单MessageView
- mdb数据库的操作
- MDB遵守的规则
- hibernate学习笔记:hibernte分页
- Mini Java编译器(三)
- 头一次使用Blog,没想到以前的文章还在
- Jmail的主要参数列表
- 通过 Visual C++ 的编程模型和编译器优化增强您的应用程序
- MDB的简单替代实现
- about chinese plastic injection mould molding industry
- 给论坛提问的人的话
- 01
- jsp笔记
- 《Java 手机/PDA 程序设计入门》读书笔记6--LCDAUI高级API之Form与Item
- 乱点鸳鸯谱——教你制作结婚证
- The 5th Class of Josh
- cadence ic 在fedora安装(尚未成功)