ejb glassfish messageDrivenBean


coder before  you have to set JMS Resources in glassfish.

进入glassfish管理界面  在 jms Resources 中 创建 ConnectionFactories 和 DestinationResources


ConnectionFactories 创建 连接工厂.  JNDI Name 必填。resourceType 选择你需要连接的方式。


DestinationResources 新的message queue,或者message topic.

JNDI Name 必填,  destinationName 必填,注意下面英文介绍。  resourceType 选择你需要的类型


Preparation work is done.


Create MessageDrivenBean

创建MessageBean ,输入MessageBean名称,

需要注意 在下面选择服务器目标,刚才在glassfish里面创建的 DestinationResources


下一步——>完成。

根据框架生成好所有的代码直接定位到   onMessage 方法

可以如下获取消息的具体内容,进行处理。

@Override
    public void onMessage(Message message) {
        try {
            //message  有多种消息类型 ObjectMessage 等。            
            if (message instanceof TextMessage) {
                TextMessage tMessage = (TextMessage) message;
                System.out.print(tMessage.getText());
            }
        } catch (JMSException ex) {
            Logger.getLogger(testMessageBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

SendMessageClient

使用servlet 进行测试。创建一个servlet。

在  servlet 代码中右击 ——>插入代码——>发送JMS消息

自动生成代码段。本人使用netBeans 生成代码段

    

@Resource(mappedName = "jms/test")
    private Queue test;
    @Inject
    @JMSConnectionFactory("jms/queue")
    private JMSContext context;
 private void sendJMSMessageToTest(String messageData) {
        context.createProducer().send(test, messageData);
    }
以上代码在调试运行是发送错误所以自己重新修改,如下代码:调试运行。可以很好的工作。

 @Resource(mappedName = "jms/test")
    private Queue test;
    @Resource(mappedName = "jms/queue")
    private ConnectionFactory connectionFactory;
    @Inject
    @JMSConnectionFactory("jms/queue")
    private JMSContext context;
	private void sendJMSMessageToTest(String messageData) {
        Connection connection =null;
        Session session = null;
        
        try {
            connection=connectionFactory.createConnection();
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageProducer messageproducer = session.createProducer(test);
            messageproducer.send(session.createTextMessage(messageData));
            messageproducer.close();
        } catch (JMSException ex) {
            Logger.getLogger(testSendMessage.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        //context.createProducer().send(test, messageData);
    }

服务器  glassfish4.1 

IDE NetBeans

有任何更好的请留言,互相学习。


posted @ 2015-04-22 17:26  mendel  阅读(193)  评论(0编辑  收藏  举报