📄 jms.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package org.openacs.utils;import java.io.Serializable;import java.util.logging.Level;import java.util.logging.Logger;import javax.jms.ExceptionListener;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageConsumer;import javax.jms.MessageFormatException;import javax.jms.MessageProducer;import javax.jms.ObjectMessage;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueSession;import javax.naming.InitialContext;import javax.naming.NamingException;import org.openacs.HostsLocal;/** * * @author Administrator */public class Jms implements ExceptionListener{ private MessageProducer producer; private QueueSession queuesession; private javax.jms.Queue queue; private QueueConnection conn; public Jms () throws NamingException, JMSException { setupJMS(); } public void closeJMS() { try { queuesession.close(); conn.close(); } catch (JMSException ex) { ex.printStackTrace(); } } public void setupJMS() throws NamingException, JMSException {// try { //System.out.println ("SERVLET: Creating JMS objects"); InitialContext iniCtx = new InitialContext(); QueueConnectionFactory qcf = (QueueConnectionFactory) iniCtx.lookup("ConnectionFactory"); queue = (javax.jms.Queue) iniCtx.lookup("queue/acsQueue"); conn = qcf.createQueueConnection(); conn.setExceptionListener(this); conn.start(); queuesession = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); producer = queuesession.createProducer(queue); //System.out.println ("SERVLET: Created."); /* } catch (NamingException e) { //throw new ServletException(); Logger.getLogger(getClass().getName()).log(Level.SEVERE, e.getMessage()); } catch (JMSException e) { //throw new ServletException(); Logger.getLogger(getClass().getName()).log(Level.SEVERE, e.getMessage()); } */ } public MessageConsumer createConsumer(String filter) throws JMSException { return queuesession.createConsumer(queue, filter); } public void onException(JMSException e) { System.out.println("onException " + e); closeJMS(); try { setupJMS(); } catch (NamingException ex) { //throw new ServletException(); Logger.getLogger(getClass().getName()).log(Level.SEVERE, e.getMessage()); } catch (JMSException ex) { //throw new ServletException(); Logger.getLogger(getClass().getName()).log(Level.SEVERE, e.getMessage()); } } public void sendResponseMessage (Serializable object, String id) throws JMSException { ObjectMessage message = queuesession.createObjectMessage(); message.setObject(object); if (id != null) message.setJMSCorrelationID(id); message.setJMSExpiration(3600 * 1000); producer.send(queue, message); } public void sendCallMessage (Serializable object, String id, HostsLocal host/*String oui, String sn*/) throws JMSException { ObjectMessage msg = queuesession.createObjectMessage(); msg.setJMSMessageID(id); msg.setJMSExpiration(3600 * 1000); msg.setObject(object); /* msg.setStringProperty("OUI", oui); msg.setStringProperty("SN", sn); */ msg.setStringProperty("HWID", host.getHwid().toString()); msg.setStringProperty("SN", host.getSerialno()); producer.send(queue, msg); } public Object Receive (String filter, long timeoutReceive) throws JMSException { System.out.println("CLIENT: Creating cosumer: " + filter + "'"); MessageConsumer consumer = queuesession.createConsumer(queue, filter); Message mrcv; if ((mrcv = consumer.receive(timeoutReceive)) != null) { Object rm1; try { rm1 = ((ObjectMessage) mrcv).getObject(); //System.out.println("RCV1: " + mrcv.getJMSCorrelationID() + " req=" + rm1.name); return rm1; } catch (MessageFormatException e) { System.out.println("MessageFormatException: " + e.getMessage()); mrcv.acknowledge(); } } return null; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -