使用MDB和Glassfish 3进行JMS应用程序的正确方法

时间:2017-01-16 12:17:32

标签: ejb jms glassfish-3

我是JMS的新手,我写了一个发送者和接收者,但它工作得很好。现在我想要一个MDB用于此。我已经搜索了很多,但没有找到任何好的网站所以我正在夏天写我的方式。如果我错了,请纠正我 这不完全正常,所以我觉得我的代码有问题。

发信人:

public class MySender {

    /**
     * @param args
     */
    public static void main(String[] args) { 
        try  
        {   //Create and start connection  
            Hashtable hashTable = new Hashtable();
            hashTable.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.impl.SerialInitContextFactory");
            hashTable.put(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");
            hashTable.put(Context.PROVIDER_URL, "http://localhost:4848");

            //1) Create and start connection  
            InitialContext ctx=new InitialContext(hashTable); 
            QueueConnectionFactory f=(QueueConnectionFactory)ctx.lookup("myQueueConnectionFactory");  
            QueueConnection con=f.createQueueConnection();  
            con.start();  
            //2) create queue session  
            QueueSession ses=con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);  
            //3) get the Queue object  
            Queue t=(Queue)ctx.lookup("myQueue");  
            //4)create QueueSender object         
            QueueSender sender=ses.createSender(t);  
            //5) create TextMessage object  
            //5) create TextMessage object  
            TextMessage msg=ses.createTextMessage();  
            msg.setText("Hello ************************************");  
            sender.send(msg);

            con.close();  
            System.out.println("*****************end********************");
        }catch(Exception e){System.out.println(e);}  }

}

MDB和Listner:

@MessageDriven(mappedName="myQueue")  
public class MyListener implements MessageListener {  


    public void onMessage(Message message) {  
        try{  
            if (message != null && TextMessage.class.isInstance(message)) {
                System.out.println("((((((((((((((((((((((((((((((((((");
                TextMessage msg=(TextMessage)message;  
                final XStream xsStream = new XStream();
                final TextMessage textMessage = (TextMessage) message;
                Reader xmlMessage = new StringReader(textMessage.getText());
                Object obj = xsStream.fromXML(xmlMessage);
                System.out.println("obj:::::::::::"+obj);
                if (obj != null && LetterOutHeader.class.isInstance(obj)) {
                    LetterOutHeader letterObj = (LetterOutHeader)obj;
                    System.out.println("one:::::::"+letterObj.getState());
                }
                System.out.println("following message is received::::::::::::::::::"+msg.getText());  
            }

        }catch(JMSException e){System.out.println(e);}  
    }  
} 
  1. 创建了一个EJB项目,添加了一个类MyListener并将其导出为jar并将其部署到服务器。

  2. 写了一个普通的java应用程序并添加了一个MySender类。

  3. 将MySender作为java程序运行。

0 个答案:

没有答案