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

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

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

    細心!用心!耐心!

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

    BlogJava 聯(lián)系 聚合 管理
      1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

    JMS入門之實例

    JMS是一個由AS提供的Message服務(wù)。它能接受消息產(chǎn)生者(Message Provider)所發(fā)出的消息,并把消息轉(zhuǎn)發(fā)給消息消費者(Message  Consumer)。
    2、JMS提供2種類型的消息服務(wù):(1)Queue,即點對點,每個消息只轉(zhuǎn)發(fā)給一個消息消費者使用。(2)Topic,即發(fā)布和訂閱,每個消息可以轉(zhuǎn)發(fā)給所有的訂閱者(消費者)。
    3、WEBLOGIC 8下的JMS配置:
    (1)配置JMS Connection Factory
    (2)配置JMS File Store(目前所找到的文檔都是配置File Store,其實在具體的應(yīng)用中,可能JMS JDBC Store更廣泛,但暫時沒有找到資料)
    (3)配置JMS Server
    (4)在JMS Server的destinations中配置JMS Queue或者JMS Topic
    其中提供給消息產(chǎn)生者和消息消費者使用的是JMS Connection Factory的JNDI和JMS Queue或者JMS Topic的JNDI。
    4、消息產(chǎn)生者向JMS發(fā)送消息的步驟:
    (1)使用JNDI查詢對象JMS ConnectionFactory和Destination(JMS Queue/Topic)
    (2)使用管理對象JMS ConnectionFactory建立連接Connection
    (3)使用連接Connection 建立會話Session
    (4)使用會話Session和管理對象Destination創(chuàng)建消息生產(chǎn)者MessageSender
    (5)使用消息生產(chǎn)者MessageSender發(fā)送消息
    一個消息發(fā)送者的例子:
    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";//模擬需要發(fā)送的消息

        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();//產(chǎn)生連接
          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創(chuàng)建消息消費者MessageReceiver
    (5)使用消息消費者MessageReceiver接受消息,需要用setMessageListener將MessageListener接口綁定到MessageReceiver
    消息消費者必須實現(xiàn)了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 張金鵬 閱讀(503) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 外国成人网在线观看免费视频| 亚洲一级毛片免费观看| 国产免费看JIZZ视频| 亚洲日本香蕉视频| 久草免费在线观看视频| 色在线亚洲视频www| 免费的黄色网页在线免费观看| 精品国产免费观看| 亚洲区小说区图片区QVOD| 亚洲AV电影院在线观看| 久久精品国产亚洲AV电影网 | 一级毛片免费在线| 亚洲午夜精品一级在线播放放| 亚洲天堂一区二区三区| 巨波霸乳在线永久免费视频| 亚洲免费在线视频观看| 免费日本一区二区| 久久久久亚洲精品男人的天堂| 巨胸喷奶水www永久免费| 成人一a毛片免费视频| 久久精品国产精品亚洲蜜月| 三年片在线观看免费观看大全一 | 亚洲av中文无码乱人伦在线观看| 亚洲免费在线视频| 亚洲av成人综合网| 婷婷综合缴情亚洲狠狠尤物| 三级网站免费观看| 国产亚洲成人久久| 99re在线精品视频免费| 日韩欧美亚洲国产精品字幕久久久| 国产又黄又爽又猛免费app| 亚洲天堂一区二区| 久久免费观看国产精品| 国产成人精品日本亚洲专| 亚洲AV日韩精品一区二区三区| 成人无码a级毛片免费| 亚洲一区二区三区自拍公司| 69av免费视频| 丁香六月婷婷精品免费观看| 亚洲国产成人精品无码一区二区| 国产亚洲精品免费|