和風細雨

          世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

          接受JMS消息的Message Driven Bean(Weblogic)

          一.WeblogicMDB類(Message Driven Bean)
          import javax.ejb.EJBException;
          import javax.ejb.MessageDrivenBean;
          import javax.ejb.MessageDrivenContext;
          import javax.jms.JMSException;
          import javax.jms.Message;
          import javax.jms.MessageListener;
          import javax.jms.TextMessage;
          import javax.naming.Context;
          import javax.naming.InitialContext;

          public class WeblogicMDB implements MessageDrivenBean, MessageListener {
              
          private static final long serialVersionUID = 5582665474886073061L;

              
          private MessageDrivenContext context;

              
          private Context jndiContext;

              
          public void setMessageDrivenContext(MessageDrivenContext context)
                      
          throws EJBException {
                  
          this.context = context;
                  
          try {
                      jndiContext 
          = new InitialContext();
                  }
           catch (Exception ex) {
                      ex.printStackTrace();
                  }

              }


              
          public void ejbCreate() {

              }


              
          public void ejbRemove() {

              }


              
          public void onMessage(Message message) {
                  
          if (message instanceof TextMessage) {
                      
          //System.out.println("Yeah! I have received the TextMassage:");
                      TextMessage txtmsg = (TextMessage) message;

                      
          try {
                          System.out.println(
          "I have received the TextMassage:");
                          System.out.println(txtmsg.getText());
                      }
           catch (JMSException e) {
                          e.printStackTrace();
                      }

                  }

              }

          }

          二.ejb-jar.xml
          <?xml version="1.0"?>
          <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd">

          <ejb-jar>

           
          <enterprise-beans>

            
          <message-driven>
               
          <ejb-name>WeblogicMDBName</ejb-name>
               
          <ejb-class>WeblogicMDB</ejb-class>
               
          <transaction-type>Container</transaction-type>
               
          <message-driven-destination>
                 
          <destination-type>javax.jms.Queue</destination-type>
               
          </message-driven-destination>
               
          <env-entry>
                   
          <description>This is a bean listening on a queue.</description>
                   
          <env-entry-name>listen_type</env-entry-name>
                   
          <env-entry-type>java.lang.String</env-entry-type>
                   
          <env-entry-value>queue</env-entry-value>
               
          </env-entry>
             
          </message-driven>
            
          </enterprise-beans>
          </ejb-jar>






          三.weblogic-ejb-jar.xml
          <?xml version="1.0"?>
          <!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN' 'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>

          <weblogic-ejb-jar>

              
          <weblogic-enterprise-bean>
                  
          <ejb-name>WeblogicMDBName</ejb-name>
                  
          <message-driven-descriptor>
                      
          <pool>
                          
          <max-beans-in-free-pool>10</max-beans-in-free-pool>
                          
          <initial-beans-in-free-pool>
                              2
                          
          </initial-beans-in-free-pool>
                      
          </pool>
                      
          <destination-jndi-name>MyJMSQueue</destination-jndi-name>
                      
          <initial-context-factory>
                          weblogic.jndi.WLInitialContextFactory
                      
          </initial-context-factory>
                      
          <provider-url>t3://127.0.0.1:7001/</provider-url>
                      
          <connection-factory-jndi-name>
                          MyJMSConnectionFactory
                      
          </connection-factory-jndi-name>
                  
          </message-driven-descriptor>
              
          </weblogic-enterprise-bean>
          </weblogic-ejb-jar>


          使用上一篇文章中的QueueSupplier發送消息,輸出示例:


          過程很簡單,值得注意的是系統的JDK最好和Weblogic使用的保持一致,至少不能存在代差.例如
          輸出消息我曾經是這樣寫的:
          System.out.println("I have received the TextMassage:"+txtmsg.getText());
          系統中的JDK1.5使用StringBuilder來把兩個字符串加在一起,而Weblogic自帶的1.4不認識StringBuilder,就產生了異常.
          而制定Weblogic8.1的JDK為系統中的JDK1.5又會導致錯誤. 所以,編程時建議JDK和Weblogic8.1的JDK保持一致,以避免發生莫明其妙的錯誤.


          程序下載:
          http://www.aygfsteel.com/Files/sitinspring/WeblogicMDB20070910131749.rar

          posted on 2008-02-22 12:17 和風細雨 閱讀(689) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 荆门市| 怀安县| 萍乡市| 家居| 沁阳市| 尚义县| 万州区| 富裕县| 敖汉旗| 乐至县| 叶城县| 永新县| 兴宁市| 句容市| 咸丰县| 深圳市| 富宁县| 城市| 大名县| 东城区| 迁安市| 民乐县| 赫章县| 荥阳市| 永丰县| 涞源县| 通海县| 广饶县| 邯郸市| 织金县| 无为县| 日土县| 双辽市| 攀枝花市| 宣化县| 渝中区| 金平| 灌南县| 衡东县| 内江市| 米泉市|