首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

myeclipse8+jboss5开发EJB3讯息驱动Bean(MDB)实例

2012-12-20 
myeclipse8+jboss5开发EJB3消息驱动Bean(MDB)实例 先看最后的目录结构:mdb为EJB3项目;mdbTest为Web项目,ad

myeclipse8+jboss5开发EJB3消息驱动Bean(MDB)实例

myeclipse8+jboss5开发EJB3讯息驱动Bean(MDB)实例

 

先看最后的目录结构:

myeclipse8+jboss5开发EJB3讯息驱动Bean(MDB)实例  mdb为EJB3项目;mdbTest为Web项目,add project:

 myeclipse8+jboss5开发EJB3讯息驱动Bean(MDB)实例

 

上代码:

web项目中的servlet:   mdb.java:

import java.io.IOException;import java.io.PrintWriter;import javax.jms.JMSException;import javax.jms.Queue;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueSender;import javax.jms.QueueSession;import javax.jms.TextMessage;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class mdb extends HttpServlet {/** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. *  * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println("  <BODY>");  try {   //获取QueueConnectionFactory对象   InitialContext context =new InitialContext();   QueueConnectionFactory factory =(QueueConnectionFactory)context.lookup("ConnectionFactory");      //创建QueueConnection   QueueConnection connnection =factory.createQueueConnection();      //创建QueueSession   QueueSession session =connnection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);      //获取Destination对象   Queue queue =(Queue)context.lookup("queue/myqueue");      //获取文本信息   TextMessage msg =session.createTextMessage("世界你好啊!");      //创建发布者   QueueSender sender =session.createSender(queue);      //发送消息   sender.send(msg);      System.out.println("消息已发送");  } catch (NamingException e) {   e.printStackTrace();  } catch (JMSException e) {   e.printStackTrace();  }out.println("  </BODY>");out.println("</HTML>");out.flush();out.close();}}

ejb项目中的Message Driven Bean:   MyQueueMDBBean.java

package com.test.ejb;import javax.ejb.MessageDriven;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;import javax.ejb.ActivationConfigProperty;@MessageDriven( activationConfig ={   @ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Queue"),   @ActivationConfigProperty(propertyName="destination",propertyValue="queue/myqueue") }) public class MyQueueMDBBean implements MessageListener {  public void onMessage(Message msg) {  TextMessage textMessage =(TextMessage)msg;    try {   System.out.println("MyQueueMDBBean被调用了【"+textMessage.getText()+"】");     } catch (JMSException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } }}

 

在deploy目录下的mail-service.xml下加上代码:
myeclipse8+jboss5开发EJB3讯息驱动Bean(MDB)实例

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

现在部署此ejb。

并新建一个空目录:queue

通过jboss在queue中生成文件:myqueue-service.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><server>    <mbean xmbean-dd="xmdesc/Queue-xmbean.xml" name="jboss.messaging.destination:service=Queue,name=myQueue" code="org.jboss.jms.server.destination.QueueService">        <attribute name="SecurityConfig">            <security>                <role create="true" name="guest2" read="true" write="true"/>            </security>        </attribute>        <attribute name="PageSize">2000</attribute>        <attribute name="ServerPeer">jboss.messaging:service=ServerPeer</attribute>        <attribute name="FullSize">200000</attribute>        <attribute name="JNDIName">queue/myQueue</attribute>        <attribute name="RedeliveryDelay">-1</attribute>        <attribute name="DownCacheSize">2000</attribute>        <attribute name="MaxSize">-1</attribute>        <attribute name="MaxDeliveryAttempts">-1</attribute>        <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>        <depends>jboss.messaging:service=PostOffice</depends>    </mbean></server>

jboss5中最后的配置为:
myeclipse8+jboss5开发EJB3讯息驱动Bean(MDB)实例

注:其中的参数别忘了,如Server Peer : jboss.messaging:service=ServerPeer

我不知道不填写会不会出错,但最好填写上我上面写的参数信息。

部署测试:http://localhost:8080/mdbTest/mdb

在jboss命令行输出:

15:03:32,745 INFO  [STDOUT] 消息已发送
15:03:32,761 INFO  [STDOUT] MyQueueMDBBean被调用了【世界你好啊!】

 

本人亲测,就是上面的效果。当然,若版本不致的话,可能出现问题。

热点排行