EJB消息驱动bean的开发

以下开发的方式是点对点的Queue方式的Bean,Topic方式的与其相同,修改Queue为Topic即可

1,编写jndi文件,位于src目录下

 

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099

 

2,编写*-server.xml,(这里为MyMessageBean-server.xml)

 jboss-4.2.3.GA/server/default/deploy

 

<?xml version="1.0" encoding="UTF-8"?>
<server>

  <mbean code="org.jboss.mq.server.jmx.Queue"
         name="jboss.mq.destination:service=Queue,name=MyMessageBean">
    <attribute name="JNDIName">queue/MyMessageBean</attribute>
  
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>

</server>

 

3,编写消息发送者QueueSender.java(过程中,很多需要查找jndi名称)

 

package huanran.ejb3.sender;

import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSession;
import javax.naming.InitialContext;
/**
 * Queue消息测试发送端
 * @author Administrator
 */
public class QueueSender {

 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   InitialContext ctx = new InitialContext();
   QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("QueueConnectionFactory");
   QueueConnection connection = factory.createQueueConnection();
   QueueSession session = connection.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
   Destination destination = (Queue) ctx.lookup("queue/MyMessageBean");
   MessageProducer messageProducer = session.createProducer(destination);
   messageProducer.send(session.createTextMessage("Queue消息"));
   session.close();
   connection.close(); 
   System.out.println("成功发送消息!");  
  } catch (Exception e) {
   e.printStackTrace();
  } 
 }
}

4,开发消息驱动Bean,bean必须实现MessageListener,而且需加入监听的目标地址与类型等,如下:

package huanran.ejb3.bean;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
@MessageDriven(
  activationConfig =  {
   @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
   @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/MyMessageBean")
  }
 )
public class QueueMessageBean implements MessageListener {

 public void onMessage(Message m) {
  try {
   TextMessage tm = (TextMessage) m;
   System.out.println(tm.getText());
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

 

 5,发布该驱动Bean,便可正常收到消息,这里采用ant方式发布,build.xml位于项目目录下

 

<?xml version="1.0" encoding="utf-8"?>
<project name="MessageBean">

 <!-- properies -->
 <property name="basedir" value="." />
 <property name="src.dir" value="${basedir}/src" />
 <property environment="env"/>
 <property name="jboss.home" value="D:/jboss-4.2.3.GA" />
 <property name="build.dir" value="${basedir}/build" />
 <property name="jboss.server.config" value="default" />


 <!-- 定义classpath -->
 <path id="build.classpath">
  <fileset file="${jboss.home}/client/*.jar">
  
  </fileset>
  <pathelement location="${build.dir}" />
 </path>

 <!-- 初始化任务 -->
 <target name="prepare">
  <delete dir="${build.dir}"/>
  <mkdir dir="${build.dir}"/>
 </target>

 <!-- 编译 -->
 <target name="compile" depends="prepare" description="compile the source files">
  <javac srcdir="${src.dir}" destdir="${build.dir}">
   <classpath refid="build.classpath" />
  </javac>
 </target>

 <!-- 打包成jar -->
 <target name="pack" depends="compile" description="make .jar file">
  <jar jarfile="${basedir}/${ant.project.name}.jar">
   <fileset dir="${build.dir}">
    <include name="**/*.class"/>
   </fileset>
  </jar>
 </target>

 <!-- 发布ejb -->
 <target name="deploy" depends="pack" description="发布ejb">
  <copy file="${basedir}/${ant.project.name}.jar" todir="${jboss.home}/server/${jboss.server.config}/deploy"/>
 </target>
 
 <!-- 删除ejb -->
 <target name="undeploy" description="删除ejb">
  <delete file="${jboss.home}/server/${jboss.server.config}/deploy/${ant.project.name}.jar"/>
 </target>
</project>

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值