消息驱动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>

阅读更多
个人分类: j2ee
上一篇更新购物车代码
下一篇写个支持RSS输出的网站
想对作者说点什么? 我来说一句

消息驱动bean学习

2010年01月03日 758KB 下载

jms代码

2007年11月14日 2KB 下载

消息驱动bean EJB 3.0

2009年07月04日 3KB 下载

没有更多推荐了,返回首页

关闭
关闭