消息驱动bean

刚刚在JBOSS上面搞顶JMS MDB,有什么问题以后可以切磋,过几天发个贴上来。总结下经验。

消息驱动bean的HELLOWORLD

client
public class Aa {
    private static Context context;
    private boolean transacted = false;
    private int acknowledgementMode = javax.jms.Session.AUTO_ACKNOWLEDGE;
    private QueueConnectionFactory queueConnectionFactory;
    private QueueConnection queueConnection;
    private QueueSession queueSession;
    private QueueSender queueSender;
    private QueueReceiver queueReceiver;
    private Queue queue;
    private String queueConnectionFactoryName = "java:comp/env/jms/QCF";
    private String sendQueueName = "queue/test";
    private String recvQueueName = "queue/test";
    private MapMessage message=null;
    

    private Context getInitialContext() throws NamingException {
        Hashtable environment = new Hashtable();

        environment.put(Context.INITIAL_CONTEXT_FACTORY,
                        "org.jnp.interfaces.NamingContextFactory");
        environment.put(Context.URL_PKG_PREFIXES,
                        "org.jboss.naming:org.jnp.interfaces");
        environment.put(Context.PROVIDER_URL, "jnp://localhost:1099");

        return new InitialContext(environment);
    }

    private Context getContext() throws Exception {
        if (context == null) {
            try {
                context = getInitialContext();
            } catch (Exception ex) {
                ex.printStackTrace();
                throw ex;
            }
        }
        return context;
    }


    public Aa()
    {
       try
       {
          
          context=getContext();
          queueConnectionFactory=(QueueConnectionFactory)context.lookup("ConnectionFactory");
       
          queueConnection=queueConnectionFactory.createQueueConnection();
          queue=(Queue)context.lookup("queue/test");
          
          queueSession=queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
          queueConnection.start();
          
          queueSender=queueSession.createSender(queue);
          
          TextMessage mes=queueSession.createTextMessage("abcabcabc");
          queueSender.send(mes);

       }
       catch(Exception e)
       {
          throw new EJBException(e.getMessage());
       }
    }

    
    public static void main(String [] args)
    {
       Aa a=new Aa();
       
    }
}

MDB

public class processOrderBean implements MessageDrivenBean, MessageListener {
    MessageDrivenContext messageDrivenContext;
    private QueueConnection conn;
    private QueueSession session;
    public void ejbCreate() {
    }

    public void ejbRemove() {
    }

    public void onMessage(Message message) {
        System.out.println("hello world");
    }

    public void setMessageDrivenContext(MessageDrivenContext
                                        messageDrivenContext) {
        this.messageDrivenContext = messageDrivenContext;
    }
}

JBOSS.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
<jboss>
  <enterprise-beans>
    <message-driven>
      <ejb-name>processOrder</ejb-name>
      <destination-jndi-name>queue/test</destination-jndi-name>
      <resource-ref>
                <res-ref-name>jms/QCF</res-ref-name>
                <jndi-name>ConnectionFactory</jndi-name>
      </resource-ref>
    </message-driven>
  </enterprise-beans>
</jboss>

EJB-JAR.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
  <display-name>danke</display-name>
  <enterprise-beans>
    <message-driven>
      <ejb-name>processOrder</ejb-name>
      <ejb-class>untitled9.processOrderBean</ejb-class>
      <transaction-type>Container</transaction-type>
      <message-driven-destination>
        <destination-type>javax.jms.Queue</destination-type>
      </message-driven-destination>
      <resource-ref>
        <res-ref-name>jms/QCF</res-ref-name>
        <res-type>javax.jms.QueueConnectionFactory</res-type>
        <res-auth>Container</res-auth>
      </resource-ref>
    </message-driven>
  </enterprise-beans>
  <assembly-descriptor>
    <container-transaction>
      <method>
        <ejb-name>processOrder</ejb-name>
        <method-name>*</method-name>
      </method>
      <trans-attribute>Required</trans-attribute>
    </container-transaction>
  </assembly-descriptor>
</ejb-jar>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值