和風細雨

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

          一個JMS發送接受程序示例(Weblogic)

          一.Prop類(用來讀取屬性文件,單例)

          package com.sitinspring.standardWeblogicJms;

          import java.io.FileInputStream;
          import java.util.Hashtable;
          import java.util.Properties;

          import javax.naming.Context;
          import javax.naming.InitialContext;

          public class Props {
              
          private static final String File_Name = "jmsSetting.properties";

              
          private static Properties propts;

              
          public static void makeProptsInstance() {
                  propts 
          = new Properties();

                  
          try {
                      propts.load(
          new FileInputStream(File_Name));
                  }
           catch (Exception ex) {
                      ex.printStackTrace();
                  }

              }

              
              
          public static String get(String name){
                  
          if(propts==null){
                      makeProptsInstance();
                  }

                  
                  
          return (String)propts.get(name);
              }

              
              @SuppressWarnings(
          "unchecked")
              
          public static Context getInitialContext(){
                  Context context
          =null;
                  
                  String jndiFactory
          =Props.get("jndi.factory");
                  String providerUrl
          =Props.get("jndi.provider.url");
                  
                  Hashtable env
          =new Hashtable();        
                  env.put(Context.INITIAL_CONTEXT_FACTORY, jndiFactory);
                  env.put(Context.PROVIDER_URL, providerUrl);
                  
                  
          try {
                      context
          =new InitialContext(env);
                  }
           catch (Exception ex) {
                      ex.printStackTrace();
                  }

                  
                  
          return context;
              }

          }

          二.QueueBase類(QueueComsumer和QueueSupplier的基類,用于歸納一些兩類共通的東西)
          package com.sitinspring.standardWeblogicJms;

          import javax.jms.Queue;
          import javax.jms.QueueConnection;
          import javax.jms.QueueConnectionFactory;
          import javax.jms.QueueSession;
          import javax.jms.Session;
          import javax.naming.Context;

          public class QueueBase{
              
          protected QueueConnectionFactory queueConnectionFactory;
              
          protected QueueConnection queueConnection;
              
          protected QueueSession queueSession;
              
          protected Queue queue;
              
              
          public QueueBase(Context context){
                  
          try{
                      String jmsFactory
          =Props.get("jms.factory");
                      queueConnectionFactory
          =(QueueConnectionFactory)context.lookup(jmsFactory);
                      queueConnection
          =queueConnectionFactory.createQueueConnection();
                      queueSession
          =queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
                      
                      String queueName
          =Props.get("queue.name");
                      queue
          =(Queue)context.lookup(queueName);
                  }

                  
          catch(Exception ex){
                      ex.printStackTrace();
                  }

              }

          }

          三.QueueComsumer類(用于接收消息)
          package com.sitinspring.standardWeblogicJms;

          import javax.jms.JMSException;
          import javax.jms.Message;
          import javax.jms.MessageListener;
          import javax.jms.QueueReceiver;
          import javax.jms.TextMessage;
          import javax.naming.Context;

          public class QueueComsumer extends QueueBase implements MessageListener {
              
          private QueueReceiver queueReceiver;

              
          public QueueComsumer(Context context) {
                  
          super(context);

                  
          try {
                      queueReceiver 
          = queueSession.createReceiver(queue);
                      queueReceiver.setMessageListener(
          this);
                      queueConnection.start();
                  }
           catch (Exception ex) {
                      ex.printStackTrace();
                  }

              }


              
          public void onMessage(Message message) {
                  
          if (message instanceof TextMessage) {
                      TextMessage txtmsg 
          = (TextMessage) message;

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

                  }

              }


              
          public void close() throws JMSException {
                  queueReceiver.close();
                  queueSession.close();
                  queueConnection.close();
              }


              
          public static void main(String[] args) {
                  Context context 
          = Props.getInitialContext();
                  QueueComsumer queueComsumer 
          = new QueueComsumer(context);

                  
          synchronized (queueComsumer) {
                      
          while (true{
                          
          try {
                              queueComsumer.wait();
                          }
           catch (InterruptedException interruptedException) {
                              interruptedException.printStackTrace();

                              
          try {
                                  queueComsumer.close();
                              }
           catch (JMSException e) {
                                  e.printStackTrace();
                              }

                          }

                      }

                  }

              }

          }

          四.QueueSupplier類(用于發送消息)
          package com.sitinspring.standardWeblogicJms;

          import javax.jms.JMSException;
          import javax.jms.QueueSender;
          import javax.jms.TextMessage;
          import javax.naming.Context;

          public class QueueSupplier extends QueueBase {
              
          private QueueSender queueSender;

              
          public QueueSupplier(Context context) {
                  
          super(context);

                  
          try {
                      queueSender 
          = queueSession.createSender(queue);
                  }
           catch (Exception ex) {
                      ex.printStackTrace();
                  }

              }


              
          public void sendMsg(String msg) throws JMSException {
                  TextMessage txtMsg 
          = queueSession.createTextMessage();
                  txtMsg.setText(msg);

                  queueConnection.start();
                  queueSender.send(txtMsg);
              }


              
          public void close() throws JMSException {
                  queueSender.close();
                  queueSession.close();
                  queueConnection.close();
              }


              
          public static void main(String[] args) {
                  Context context 
          = Props.getInitialContext();
                  QueueSupplier queueSupplier 
          = new QueueSupplier(context);

                  
          try {
                      queueSupplier.sendMsg(
          "Hello World");

                      System.out.println(
          "A message have been sent!");
                  }
           catch (JMSException ex) {
                      ex.printStackTrace();
                  }
           finally {
                      
          try {
                          queueSupplier.close();
                      }
           catch (JMSException ex) {
                          ex.printStackTrace();
                      }

                  }

              }

          }

          五.屬性文件(jmsSetting.properties)
          #jndi factory
          jndi.factory
          =weblogic.jndi.WLInitialContextFactory

          #jndi provider url
          jndi.provider.url
          =t3://127.0.0.1:7001/

          #jms factory
          jms.factory
          =MyJMSConnectionFactory

          #queue name
          queue.name
          =MyJMSQueue

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 阿尔山市| 朝阳区| 鞍山市| 开远市| 宁乡县| 金坛市| 平塘县| 泗水县| 阿克苏市| 漯河市| 广河县| 闵行区| 于都县| 砚山县| 佛冈县| 西安市| 剑川县| 阿拉尔市| 新晃| 博湖县| 潜江市| 莱西市| 绥化市| 磐石市| 台中县| 马尔康县| 松溪县| 沽源县| 利津县| 维西| 钟祥市| 深泽县| 桓台县| 左贡县| 汽车| 陆川县| 康乐县| 广宗县| 福州市| 罗甸县| 云龙县|