第一个JMS程序_JMS学习

来源:互联网 发布:mac远程桌面在哪里 编辑:程序博客网 时间:2024/04/29 22:03
import java.util.Properties;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Queue;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueSender;import javax.jms.QueueSession;import javax.jms.Session;import javax.jms.TextMessage;import javax.jms.Topic;import javax.jms.TopicConnection;import javax.jms.TopicConnectionFactory;import javax.jms.TopicPublisher;import javax.jms.TopicSession;import javax.naming.Context;import javax.naming.InitialContext;public class JMSDelivery {    protected String m_userName;    protected String m_passWord;    protected String m_destinationName;    protected String m_defaultProviderUrl;    protected String m_connectionFactory;    protected String m_providerContextFactory;        protected Context m_jndiContext;    protected Connection m_connection;    protected Session m_session;    protected Destination m_destination;            protected boolean m_transacted=false;    protected int  m_acknowlegeMode=Session.AUTO_ACKNOWLEDGE;    protected int  m_transferMode;        protected int QUEUEMODE=0;    protected int TOPICMODE=1;        public JMSDelivery(String providerContextFactory,String defaultProviderUrl,String userName,String passWord,String connectionFactory,String destinationName)    {    initiaData(providerContextFactory, defaultProviderUrl, userName, passWord,connectionFactory,destinationName);    }    protected void initiaData(String providerContextFactory,String defaultProviderUrl,String userName,String passWord,String connectionFactory,String destinationName){    try {this.m_providerContextFactory=providerContextFactory;this.m_defaultProviderUrl=defaultProviderUrl;this.m_userName=userName;this.m_passWord=passWord;this.m_connectionFactory=connectionFactory;this.m_destinationName=destinationName;Properties env=new Properties();env.put(Context.INITIAL_CONTEXT_FACTORY, this.m_providerContextFactory);env.put(Context.PROVIDER_URL, this.m_defaultProviderUrl);env.put(Context.SECURITY_PRINCIPAL, this.m_userName);env.put(Context.SECURITY_CREDENTIALS, this.m_passWord);this.m_jndiContext=new InitialContext(env);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}    }protected void connect(){try {ConnectionFactory connectionFactory=(ConnectionFactory)this.m_jndiContext.lookup(this.m_connectionFactory);this.m_transferMode=(connectionFactory instanceof QueueConnectionFactory) ? QUEUEMODE:TOPICMODE;if(this.m_transferMode==QUEUEMODE){QueueConnectionFactory queueConnectionFactory=(QueueConnectionFactory)connectionFactory;QueueConnection queueConnection=queueConnectionFactory.createQueueConnection();this.m_session=queueConnection.createQueueSession(this.m_transacted, this.m_acknowlegeMode);this.m_destination=(Destination)this.m_jndiContext.lookup(this.m_destinationName);this.m_connection=queueConnection;}else{TopicConnectionFactory topicConnectionFactory=(TopicConnectionFactory)connectionFactory;TopicConnection topicConnection=topicConnectionFactory.createTopicConnection();this.m_session=topicConnection.createTopicSession(this.m_transacted, this.m_acknowlegeMode);this.m_destination=(Destination)this.m_jndiContext.lookup(this.m_destinationName);this.m_connection=topicConnection;}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}protected void disConnect(){try {if(this.m_session!=null){this.m_session.close();this.m_session=null;}if(this.m_connection!=null){this.m_connection.close();this.m_connection=null;}} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}}protected void postMessageToQueue(String message) throws JMSException{Queue queue=(Queue)this.m_destination;QueueSession queueSession=(QueueSession)this.m_session;QueueSender queueSender=null;TextMessage textMessage=queueSession.createTextMessage();textMessage.clearBody();textMessage.setText(message);try {queueSender=queueSession.createSender(queue);queueSender.send(textMessage);} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(queueSender!=null){queueSender.close();}}}protected void pulishMessageToTopic(String message)throws JMSException{Topic topic=(Topic)this.m_destination;TopicSession topicSession=(TopicSession)this.m_session;TopicPublisher topicPublisher=null;TextMessage textMessage=topicSession.createTextMessage();textMessage.clearBody();textMessage.setText(message);try {topicPublisher=topicSession.createPublisher(topic);topicPublisher.publish(textMessage);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(topicPublisher!=null){topicPublisher.close();}}} protected void getMessageFromQueue() throws JMSException {       Queue queue = (Queue)this.m_destination;       QueueSession queueSession = (QueueSession)this.m_session;       MessageConsumer queueReceiver = queueSession.createReceiver(queue);       this.m_connection.start();       long timeout = Long.parseLong("2000");       TextMessage message = (TextMessage)queueReceiver.receive(timeout);       getMessage(message);       queueReceiver.close();       this.m_connection.stop();   }   protected void getMessageFromTopic() throws JMSException{       Topic topic = (Topic)this.m_destination;       TopicSession topicSession = (TopicSession)this.m_session;       MessageConsumer topicSubscriber = topicSession.createDurableSubscriber(topic, this.m_userName);       this.m_connection.start();       long timeout = Long.parseLong("2000");       TextMessage message = (TextMessage)topicSubscriber.receive(timeout);       getMessage(message);       topicSubscriber.close();       this.m_connection.stop();   }   protected  void getMessage(TextMessage textMessage) throws JMSException   {   System.out.println(textMessage.getText());   }/** * @param args */public static void main(String[] args) {String providerContextFactory="com.evermind.server.rmi.RMIInitialContextFactory";String defaultProviderUrl="ormi://localhost:23791";String userName="oc4jadmin";String passWord="welcome1";String connectionFactory="com.agile.jms.QueueConnectionFactory";String destinationName="jms/demoQueue";JMSDelivery jmsDelivery=new JMSDelivery(providerContextFactory, defaultProviderUrl, userName, passWord, connectionFactory, destinationName);jmsDelivery.connect();try {jmsDelivery.getMessageFromQueue();//jmsDelivery.postMessageToQueue("1111111");//jmsDelivery.postMessageToQueue("2222222");//jmsDelivery.postMessageToQueue("3333333");} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}jmsDelivery.disConnect();}}