<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    細心!用心!耐心!

    吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業,五六點粗墨,七八筆買賣,九十道人情。

    BlogJava 聯系 聚合 管理
      1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

    JMS入門之實例

    JMS是一個由AS提供的Message服務。它能接受消息產生者(Message Provider)所發出的消息,并把消息轉發給消息消費者(Message  Consumer)。
    2、JMS提供2種類型的消息服務:(1)Queue,即點對點,每個消息只轉發給一個消息消費者使用。(2)Topic,即發布和訂閱,每個消息可以轉發給所有的訂閱者(消費者)。
    3、WEBLOGIC 8下的JMS配置:
    (1)配置JMS Connection Factory
    (2)配置JMS File Store(目前所找到的文檔都是配置File Store,其實在具體的應用中,可能JMS JDBC Store更廣泛,但暫時沒有找到資料)
    (3)配置JMS Server
    (4)在JMS Server的destinations中配置JMS Queue或者JMS Topic
    其中提供給消息產生者和消息消費者使用的是JMS Connection Factory的JNDI和JMS Queue或者JMS Topic的JNDI。
    4、消息產生者向JMS發送消息的步驟:
    (1)使用JNDI查詢對象JMS ConnectionFactory和Destination(JMS Queue/Topic)
    (2)使用管理對象JMS ConnectionFactory建立連接Connection
    (3)使用連接Connection 建立會話Session
    (4)使用會話Session和管理對象Destination創建消息生產者MessageSender
    (5)使用消息生產者MessageSender發送消息
    一個消息發送者的例子:
    package myjms;
    import java.util.*;
    import javax.naming.*;
    import javax.jms.*;

    public class MessageProducter {
      public static void main(String[] args) {
        String queueConnectionFactoryName = "myjmsconnectionfactory"; //JMS Connection Factory的JNDI
        String queueName = "myjmsqueue"; //JMS Queue或者JMS Topic的JNDI

        boolean transacted = false;//transaction模式
        int acknowledgementMode = Session.AUTO_ACKNOWLEDGE;//acknowledgement模式
        String message="Message need to send";//模擬需要發送的消息

        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
        properties.put(Context.PROVIDER_URL, "t3://localhost:7001");

        try {
          Context context = new InitialContext(properties);
          Object obj = context.lookup(queueConnectionFactoryName);
          QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;//JMS Connection Factory的獲得
         
          obj = context.lookup(queueName);
          Queue queue = (Queue) obj;//JMS Queue或者JMS Topic的獲得

          QueueConnection queueConnection=queueConnectionFactory.createQueueConnection();//產生連接
          queueConnection.start();
          QueueSession queueSession = queueConnection.createQueueSession(transacted, acknowledgementMode);
          TextMessage textMessage = queueSession.createTextMessage();
          textMessage.clearBody();
          textMessage.setText(message);
          QueueSender queueSender = queueSession.createSender(queue);
          queueSender.send(textMessage);
          if (transacted) {
            queueSession.commit();
          }

          if (queueSender != null) {
            queueSender.close();
          }
          if (queueSession != null) {
            queueSession.close();
          }
          if (queueConnection != null) {
            queueConnection.close();
          }

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

    5、消息消費者從JMS接受消息的步驟:
    (1)使用JNDI查詢對象JMS ConnectionFactory和Destination(JMS Queue/Topic)
    (2)使用管理對象JMS ConnectionFactory建立連接Connection
    (3)使用連接Connection 建立會話Session
    (4)使用會話Session和管理對象Destination創建消息消費者MessageReceiver
    (5)使用消息消費者MessageReceiver接受消息,需要用setMessageListener將MessageListener接口綁定到MessageReceiver
    消息消費者必須實現了MessageListener接口,需要定義onMessage事件方法。
    一個消息消費者的例子:
    package myjms;

    import java.util.*;
    import javax.naming.*;
    import javax.jms.*;

    public class MessageReciever
        implements MessageListener {
      public void onMessage(Message message) {
        if (message instanceof TextMessage) {
          TextMessage textMessage = (TextMessage) message;
          try {
            System.out.println("Message content is:" + textMessage.getText());
          }
          catch (JMSException e) {
            e.printStackTrace();
          }
        }
      }

      public static void main(String[] args) {
       
        MessageReciever msgRcvr=new MessageReciever();
        String queueConnectionFactoryName = "myjmsconnectionfactory";
        String queueName = "myjmsqueue";

        boolean transacted = false;
        int acknowledgementMode = Session.AUTO_ACKNOWLEDGE;

        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY,
                       "weblogic.jndi.WLInitialContextFactory");
        properties.put(Context.PROVIDER_URL, "t3://localhost:7001");

        try {
          Context context = new InitialContext(properties);
          Object obj = context.lookup(queueConnectionFactoryName);
          QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory)
              obj;

          obj = context.lookup(queueName);
          Queue queue = (Queue) obj;

          QueueConnection queueConnection = queueConnectionFactory.
              createQueueConnection();
          queueConnection.start();
          QueueSession queueSession = queueConnection.createQueueSession(transacted,
              acknowledgementMode);
          QueueReceiver queueReceiver = queueSession.createReceiver(queue);

          queueReceiver.setMessageListener(msgRcvr);

          synchronized(msgRcvr){
            msgRcvr.wait(100000);
          }

          if (queueReceiver != null) {
            queueReceiver.close();
          }
          if (queueSession != null) {
            queueSession.close();
          }
          if (queueConnection != null) {
            queueConnection.close();
          }

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

    6、Message-driven Bean
    MDB實際上就是一個消息消費者的客戶端程序。它由AS EJB Container來管理。在JBUILDER生成一個MDB非常簡單。

    posted on 2007-05-06 11:34 張金鵬 閱讀(505) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 67194在线午夜亚洲| 中文字幕视频免费在线观看| 久久亚洲AV成人无码电影| 日本亚洲精品色婷婷在线影院| 亚洲毛片不卡av在线播放一区| 久草视频免费在线观看| 天天天欲色欲色WWW免费| 亚洲最新黄色网址| 成人片黄网站色大片免费观看cn| 国产成人精品免费午夜app| 成熟女人牲交片免费观看视频| 亚洲日韩国产精品乱| 亚洲综合小说久久另类区| 羞羞视频网站免费入口| 亚洲免费视频网址| 中文字幕人成人乱码亚洲电影 | 国内精品免费在线观看| 国产精品久久免费| 色www永久免费网站| 亚洲AV香蕉一区区二区三区| 亚洲欧洲国产精品久久| 亚洲成色www久久网站夜月| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲精品视频免费| 猫咪免费人成网站在线观看入口| 亚洲啪AV永久无码精品放毛片| 亚洲成AⅤ人影院在线观看| 一个人在线观看视频免费 | 亚洲午夜精品在线| 免费国产综合视频在线看| 日本不卡免费新一二三区| 欧美三级在线电影免费| 野花高清在线电影观看免费视频| 18禁止看的免费污网站| 亚洲视频在线免费播放| 国产国产人免费视频成69堂| 久热中文字幕在线精品免费| 91精品免费在线观看| 大学生一级毛片免费看| 四虎永久在线精品免费网址| 久久精品无码一区二区三区免费|