JmsTestClinet2.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:7k
源码类别:

Java编程

开发平台:

Java

  1. package userjmssesenbdb;
  2. import javax.jms.*;
  3. import javax.naming.*;
  4. import java.util.Hashtable;
  5. import java.io.Serializable;
  6. import java.util.Properties;
  7. /**
  8.  * <p>Title: </p>
  9.  * <p>Description: </p>
  10.  * <p>Copyright: Copyright (c) 2003</p>
  11.  * <p>Company: </p>
  12.  * @author not attributable
  13.  * @version 1.0
  14.  *
  15.  * Use this class to send and receive point-to-point messages.
  16.  * To send a text message:
  17.  * <code>
  18.  * JmsTestClinet2 jmsTestClinet2 = new JmsTestClinet2();
  19.  * jmsTestClinet2.sendText("Hello world");
  20.  * jmsTestClinet2.close(); //Release resources
  21.  * </code>
  22.  *
  23.  * <code>
  24.  * To receive a message:
  25.  * JmsTestClinet2 jmsTestClinet2 = new JmsTestClinet2();
  26.  * jmsTestClinet2.getQueueReceiver();
  27.  * </code>
  28.  */
  29. public class JmsTestClinet2 implements MessageListener {
  30.   private static Context context = null;
  31.   private boolean transacted = true;
  32.   private int acknowledgementMode = Session.AUTO_ACKNOWLEDGE;
  33.   private QueueConnectionFactory queueConnectionFactory = null;
  34.   private QueueConnection queueConnection = null;
  35.   private QueueSession queueSession = null;
  36.   private QueueSender queueSender = null;
  37.   private QueueReceiver queueReceiver = null;
  38.   private Queue queue = null;
  39.   private String queueConnectionFactoryName = "DemoJMSConnectionFactory";
  40.   private String sendQueueName = "DemoJMSQueue";
  41.   private String recvQueueName = "DemoJMSQueue";
  42.   public boolean isTransacted() {
  43.     return transacted;
  44.   }
  45.   public void setTransacted(boolean transacted) {
  46.     this.transacted = transacted;
  47.   }
  48.   public int getAcknowledgementMode() {
  49.     return acknowledgementMode;
  50.   }
  51.   public void setAcknowledgementMode(int acknowledgementMode) {
  52.     this.acknowledgementMode = acknowledgementMode;
  53.   }
  54.   public String getQueueConnectionFactoryName() {
  55.     return queueConnectionFactoryName;
  56.   }
  57.   public void setQueueConnectionFactoryName(String queueConnectionFactoryName) {
  58.     this.queueConnectionFactoryName = queueConnectionFactoryName;
  59.   }
  60.   public String getSendQueueName() {
  61.     return sendQueueName;
  62.   }
  63.   public void setSendQueueName(String sendQueueName) {
  64.     this.sendQueueName = sendQueueName;
  65.   }
  66.   public String getRecvQueueName() {
  67.     return recvQueueName;
  68.   }
  69.   public void setRecvQueueName(String recvQueueName) {
  70.     this.recvQueueName = recvQueueName;
  71.   }
  72.   private Context getInitialContext() throws Exception {
  73.     String url = "t3://TsingHuaSQL:7001";
  74.     String user = null;
  75.     String password = null;
  76.     Properties properties = null;
  77.     try {
  78.       properties = new Properties();
  79.       properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
  80.       properties.put(Context.PROVIDER_URL, url);
  81.       if (user != null) {
  82.         properties.put(Context.SECURITY_PRINCIPAL, user);
  83.         properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
  84.       }
  85.       return new InitialContext(properties);
  86.     }
  87.     catch(Exception e) {
  88.       System.out.println("Unable to connect to WebLogic server at " + url);
  89.       System.out.println("Please make sure that the server is running.");
  90.       throw e;
  91.     }
  92.   }
  93.   private Context getContext() throws Exception {
  94.     if (context == null) {
  95.       try {
  96.         context = getInitialContext();
  97.       }
  98.       catch(Exception ex) {
  99.         ex.printStackTrace();
  100.         throw ex;
  101.       }
  102.     }
  103.     return context;
  104.   }
  105.   public QueueConnectionFactory getQueueConnectionFactory() throws Exception {
  106.     if (queueConnectionFactory == null) {
  107.       Object obj = getContext().lookup(queueConnectionFactoryName);
  108.       queueConnectionFactory = (QueueConnectionFactory) obj;
  109.     }
  110.     return queueConnectionFactory;
  111.   }
  112.   public QueueConnection getQueueConnection() throws Exception {
  113.     if (queueConnection == null) {
  114.       queueConnection = getQueueConnectionFactory().createQueueConnection();
  115.       queueConnection.start();
  116.     }
  117.     return queueConnection;
  118.   }
  119.   public QueueSession getQueueSession() throws Exception {
  120.     if (queueSession == null) {
  121.       queueSession = getQueueConnection().createQueueSession(isTransacted(), getAcknowledgementMode());
  122.     }
  123.     return queueSession;
  124.   }
  125.   public Queue getSendQueue() throws Exception {
  126.     if (queue == null) {
  127.       Object obj = getContext().lookup(sendQueueName);
  128.       queue = (Queue) obj;
  129.     }
  130.     return queue;
  131.   }
  132.   public Queue getRecvQueue() throws Exception {
  133.     if (queue == null) {
  134.       Object obj = getContext().lookup(recvQueueName);
  135.       queue = (Queue) obj;
  136.     }
  137.     return queue;
  138.   }
  139.   public QueueSender getQueueSender() throws Exception {
  140.     if (queueSender == null) {
  141.       queueSender = getQueueSession().createSender(getSendQueue());
  142.     }
  143.     return queueSender;
  144.   }
  145.   public QueueReceiver getQueueReceiver() throws Exception {
  146.     if (queueReceiver == null) {
  147.       queueReceiver = getQueueSession().createReceiver(getRecvQueue());
  148.       queueReceiver.setMessageListener(this);
  149.     }
  150.     return queueReceiver;
  151.   }
  152.   public void sendText(String message) throws Exception {
  153.     TextMessage textMessage = getQueueSession().createTextMessage();
  154.     textMessage.clearBody();
  155.     textMessage.setText(message);
  156.     getQueueSender().send(textMessage);
  157.     if (isTransacted()) {
  158.       getQueueSession().commit();
  159.     }
  160.   }
  161.   public void sendObject(Serializable message) throws Exception {
  162.     ObjectMessage objectMessage = getQueueSession().createObjectMessage();
  163.     objectMessage.clearBody();
  164.     objectMessage.setObject(message);
  165.     getQueueSender().send(objectMessage);
  166.     if (isTransacted()) {
  167.       getQueueSession().commit();
  168.     }
  169.   }
  170.   public void onMessage(Message message) {
  171.     if (message instanceof BytesMessage) {
  172.       BytesMessage bytesMessage = (BytesMessage) message;
  173.       //Process bytesMessage here
  174.     }
  175.     else {
  176.       if (message instanceof MapMessage) {
  177.         MapMessage mapMessage = (MapMessage) message;
  178.         //Process mapMessage here
  179.       }
  180.       else {
  181.         if (message instanceof ObjectMessage) {
  182.           ObjectMessage objectMessage = (ObjectMessage) message;
  183.           //Process objectMessage here
  184.         }
  185.         else {
  186.           if (message instanceof StreamMessage) {
  187.             StreamMessage streamMessage = (StreamMessage) message;
  188.             //Process streamMessage here
  189.           }
  190.           else {
  191.             if (message instanceof TextMessage) {
  192.               TextMessage textMessage = (TextMessage) message;
  193.               //Process textMessage here
  194.             }
  195.           }
  196.         }
  197.       }
  198.     }
  199.     try {
  200.       if (isTransacted()) {
  201.         getQueueSession().commit();
  202.       }
  203.     }
  204.     catch(Exception ex) {
  205.       ex.printStackTrace();
  206.     }
  207.   }
  208.   public void close() throws Exception {
  209.     if (queueSender != null) {
  210.       queueSender.close();
  211.     }
  212.     if (queueReceiver != null) {
  213.       queueReceiver.close();
  214.     }
  215.     if (queueSession != null) {
  216.       queueSession.close();
  217.     }
  218.     if (queueConnection != null) {
  219.       queueConnection.close();
  220.     }
  221.   }
  222. }