<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 張金鵬 閱讀(503) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 91精品免费在线观看| 国产乱子影视频上线免费观看| 亚洲伊人久久大香线蕉在观| 成人黄动漫画免费网站视频| 看Aⅴ免费毛片手机播放| 国产A在亚洲线播放| AA免费观看的1000部电影| 免费一级毛suv好看的国产网站| 亚洲成AV人片在线观看无码| 成年午夜视频免费观看视频| 久久国产精品免费一区二区三区| 亚洲精品自在线拍| 亚洲日韩国产精品乱| 国产曰批免费视频播放免费s| 无套内射无矿码免费看黄| 亚洲自偷自拍另类12p| 亚洲AV无码不卡在线观看下载| 69精品免费视频| 亚洲免费日韩无码系列| 中文字幕乱码亚洲精品一区| 亚洲精品国产精品乱码视色 | 国产亚洲综合精品一区二区三区| 亚洲处破女AV日韩精品| 国产又粗又长又硬免费视频| 99re这里有免费视频精品| 一级毛片免费播放试看60分钟| 亚洲av无码一区二区三区观看| 国产亚洲精久久久久久无码| 成人国产mv免费视频| 久久九九兔免费精品6| 久久精品免费大片国产大片| 爱情岛亚洲论坛在线观看| 亚洲激情电影在线| 亚洲AV无码专区国产乱码电影 | 最近免费中文字幕大全高清大全1| 高潮内射免费看片| 亚洲精品无码久久久久APP| 亚洲精品第五页中文字幕| 亚洲热妇无码AV在线播放| 免费在线观看一级毛片| 免费黄网在线观看|