你好,Glassfish上的JM​​S世界 [英] hello world with JMS on Glassfish

查看:156
本文介绍了你好,Glassfish上的JM​​S世界的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

遵循带有GlassFish 4应用服务器的Java EE 7 ,第203页,我可以发送消息,但似乎无法收到消息:



发送消息:

  thufir @ doge:〜$ 
thufir @ doge:〜$ appclient -client NetBeansProjects / MessageSender / dist / MessageSender.jar
Mar 05,2015 3 :47:05 AM org.hibernate.validator.internal.util.Version< clinit>
INFO:HV000001:Hibernate Validator 5.0.0.Final
Mar 05,2015 3:47:05 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器:版本:5.1(内部版本9-b)编译:2014年7月29日1229
Mar 05,2015 3:47:05 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器开始:broker是REMOTE,连接模式是TCP
2015年3月5日上午3:47:05 com.sun.messaging.jms.ra.ResourceAdapter start
INFO :MQJMSRA_RA1101:GlassFish MQ JMS资源适配器已启动:REMOTE
发送以下消息:正在测试,1,2,3.您能听到我的声音吗?
发送以下信息:您是否复制?
发送以下信息:再见!
thufir @ doge:〜$

等待收到消息:

  thufir @ doge:〜$ 
thufir @ doge:〜$ appclient -client NetBeansProjects / MessageReceiver / dist / MessageReceiver.jar
Mar 05,2015 3:48:11 AM org.hibernate.validator.internal.util.Version< clinit>
INFO:HV000001:Hibernate Validator 5.0.0.Final
Mar 05,2015 3:48:11 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器:版本:5.1(内部版本9-b)编译:2014年7月29日1229
Mar 05,2015 3:48:11 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO:MQJMSRA_RA1101:启动GlassFish MQ JMS资源适配器:broker是REMOTE,连接模式是TCP
3月5日2015 3:48:11 com.sun.messaging.jms.ra.ResourceAdapter start
INFO :MQJMSRA_RA1101:GlassFish MQ JMS资源适配器开始:REMOTE
等待消息...

消息发送者:

  package net.ensode.glassfishbook; 

import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSContext;
import javax.jms.JMSProducer;
import javax.jms.Queue;

公共类MessageSender {

@Resource(mappedName =jms / CrmConnectionFactory)
private static ConnectionFactory connectionFactory;

@Resource(mappedName =jms / CrmQueue)
私有静态队列队列;

public void produceMessages(){

JMSContext jmsContext = connectionFactory.createContext();
JMSProducer jmsProducer = jmsContext.createProducer();

String msg1 =测试,1,2,3。你能听到我吗?;
String msg2 =您是否复制?;
String msg3 =再见!;

System.out.println(发送以下消息:
+ msg1);
jmsProducer.send(queue,msg1);
System.out.println(发送以下消息:
+ msg2);
jmsProducer.send(queue,msg2);
System.out.println(发送以下消息:
+ msg3);
jmsProducer.send(queue,msg3);


public static void main(String [] args){
new MessageSender()。produceMessages();
}
}

讯息接收者:

  package net.ensode.glassfishbook; 

import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSConsumer;
import javax.jms.JMSContext;
import javax.jms.Topic;

public class MessageReceiver {

@Resource(mappedName =jms / CrmConnectionFactory)
private static ConnectionFactory connectionFactory;
@Resource(mappedName =jms / CrmTopic)
private static Topic topic;

public void getMessages(){
String消息;
布尔值goodByeReceived = false;

JMSContext jmsContext = connectionFactory.createContext();
JMSConsumer jMSConsumer = jmsContext.createConsumer(topic);

System.out.println(等待消息...);
while(!goodByeReceived){
message = jMSConsumer.receiveBody(String.class);
if(message!= null){
System.out.print(收到以下消息:);
System.out.println(message);
System.out.println();
if(message.equals(Good bye!)){
goodByeReceived = true;




$ b public static void main(String [] args){
new MessageReceiver()。getMessages() );




$ b glassfish console:

  asadmin> 
asadmin> list-jms-resources
jms / CrmQueue
jms / CrmTopic
jms / __ defaultConnectionFactory
jms / CrmConnectionFactory
jms / CrmQueueConnectionFactory
jms / CrmTopicConnectionFactory
命令list-jms-resources成功执行。
asadmin>
asadmin>版本
版本= GlassFish服务器开源版本4.1(版本13)
命令版本成功执行。
asadmin>

glassfish日志:

  [2015-03-05T02:21:04.258-0800] [glassfish 4.1] [INFO] [] [org.glassfish.jersey.server.ApplicationHandler] [tid:_ThreadID = 39 _ThreadName = admin-listener (2)] [timeMillis:1425550864258] [levelValue:800] [[
启动Jersey应用程序,版本Jersey:2.10.4 2014-08-08 15:09:00 ...]]

[2015-03-05T02:21:04.321-0800] [glassfish 4.1] [INFO] [NCLS-REST-00001] [javax.enterprise.admin.rest] [tid:_ThreadID = 39 _ThreadName = admin-listener (2)] [timeMillis:1425550864321] [levelValue:800] [[
听取上下文中的REST请求:/ command / domain。]]

[2015-03-05T03:42 :44.022-0800] [glassfish 4.1] [INFO] [jts.startup_msg] [javax.enterprise.system.core.transaction.com.sun.jts.CosTransactions] [tid:_ThreadID = 46 _ThreadName = iiop-service-kernel( 1)SelectorRunner] [timeMillis:1425555764022] [levelValue:800] [[
JTS5014:可恢复的JTS实例,serverId = [3700]]]

[2015-03- 05T03:42:45.389-0800] [glassfish 4.1] [INFO] [] [javax.enterprise.resource.jms] [tid:_ThreadID = 158 _ThreadName = p:thread-pool-1; w:1] [timeMillis:1425555765389] [levelValue:800] [[
addresslist.setjmsservice.provider]]

[2015-03-05T03:42:45.390-0800] [glassfish 4.1] [INFO] [] [javax.enterprise.resource.jms] [tid:_ThreadID = 158 _ThreadName = p:thread-pool-1; w:1] [timeMillis:1425555765390] [levelValue:800] [[
jms.connection.url]]

[2015-03-05T03:42:45.568-0800] [glassfish 4.1] [INFO] [] [javax.resourceadapter.mqjmsra.lifecycle] [tid:_ThreadID = 158 _ThreadName = p:thread-pool-1; MQJMSRA_RA1101:GlassFish MQ JMS资源适配器:版本:5.1(Build 9-b)编译:2014年7月29日1229]]

[2015-03-05T03:42:45.569-0800] [glassfish 4.1] [INFO] [] [javax.resourceadapter.mqjmsra.lifecycle] [tid:_ThreadID = 158 _ThreadName = p:thread-pool-1; MQJMSRA_RA1101:GlassFish MQ JMS资源适配器开始:broker是EMBEDDED,连接模式是直接]]

[2015-w:1] [timeMillis:1425555765569] [levelValue:800] [[
[ 03-05T03:42:46.816-0800] [glassfish 4.1] [INFO] [] [javax.resourceadapter.mqjmsra.lifecycle] [tid:_ThreadID = 158 _ThreadName = p:thread-pool-1; w:1] [timeMillis:1425555766816] [levelValue:800] [[
MQJMSRA_RA1101:GlassFish MQ JMS资源适配器启动:嵌入]]

thufir @ doge:〜$

我对本书中的代码进行的唯一修改是JMS队列和主题的名称。

解决方案

目前我无法解释为什么这个解决方案可行,或者有什么不同。然而,它运行正常:

  thufir @ doge:〜$ 
thufir @ doge:〜$ appclient -client NetBeansProjects /JMSPTPProducer/dist/JMSPTPProducer.jar
2015年3月8日上午4点33分07秒org.hibernate.validator.internal.util.Version< clinit>
INFO:HV000001:Hibernate Validator 5.0.0.Final
三月08,2015 4:33:08 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器:版本:5.1(内部版本9-b)编译:2014年7月29日1229
Mar 08,2015 4:33:08 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器开始:broker是REMOTE,连接模式是TCP
2015年3月8日上午4:33:08 com.sun.messaging.jms.ra.ResourceAdapter start
INFO :MQJMSRA_RA1101:GlassFish MQ JMS资源适配器已启动:REMOTE
发送以下消息:正在测试,1,2,3.您能听到我的声音吗?
发送以下信息:您是否复制?
发送以下信息:再见!
thufir @ doge:〜$
thufir @ doge:〜$ appclient -client NetBeansProjects / JMSPTPConsumer / dist / JMSPTPConsumer.jar
2015年3月8日上午4时33分24秒org.hibernate。 validator.internal.util.Version< clinit>
INFO:HV000001:Hibernate Validator 5.0.0.Final
三月08,2015 4:33:24 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器:版本:5.1(内部版本9-b)编译:2014年7月29日1229
Mar 08,2015 4:33:24 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器开始:broker是REMOTE,连接模式是TCP
3月08,2015 4:33:24 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO :MQJMSRA_RA1101:GlassFish MQ JMS资源适配器开始:REMOTE
等待消息...
收到以下消息:正在测试,1,2,3.您能听到我的声音吗?

收到以下信息:您是否复制?

收到以下信息:再见!

thufir @ doge:〜$

生产者:

  package net.ensode.glassfishbook; 

import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSContext;
import javax.jms.JMSProducer;
import javax.jms.Queue;

公共类MessageSender {

@Resource(mappedName =jms / CrmConnectionFactory)
// @Resource(mappedName =jms / GlassFishBookConnectionFactory)
private static ConnectionFactory connectionFactory;

@Resource(mappedName =jms / CrmQueue)
// @Resource(mappedName =jms / GlassFishBookQueue)
私有静态队列队列;

public void produceMessages(){

JMSContext jmsContext = connectionFactory.createContext();
JMSProducer jmsProducer = jmsContext.createProducer();

String msg1 =测试,1,2,3。你能听到我吗?;
String msg2 =您是否复制?;
String msg3 =再见!;

System.out.println(发送以下消息:
+ msg1);
jmsProducer.send(queue,msg1);
System.out.println(发送以下消息:
+ msg2);
jmsProducer.send(queue,msg2);
System.out.println(发送以下消息:
+ msg3);
jmsProducer.send(queue,msg3);


public static void main(String [] args){
new MessageSender()。produceMessages();





$ b

消费者:

  package net.ensode.glassfishbook; 

import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSConsumer;
import javax.jms.JMSContext;
import javax.jms.Queue;

public class MessageReceiver {

@Resource(mappedName =jms / CrmConnectionFactory)
// @ Resource(mappedName =jms / GlassFishBookConnectionFactory)
private static ConnectionFactory connectionFactory;
@Resource(mappedName =jms / CrmQueue)
// @Resource(mappedName =jms / GlassFishBookQueue)
私有静态队列队列;

public void getMessages(){
String消息;
布尔值goodByeReceived = false;
JMSContext jmsContext = connectionFactory.createContext();
JMSConsumer jMSConsumer = jmsContext.createConsumer(queue);
System.out.println(等待消息...);
while(!goodByeReceived){
message = jMSConsumer.receiveBody(String.class);
if(message!= null){
System.out.print(收到以下消息:);
System.out.println(message);
System.out.println();
if(message.equals(Good bye!)){
goodByeReceived = true;




$ b public static void main(String [] args){
new MessageReceiver()。getMessages() );


Glassfish中可能存在配置错误,正确的执行。但是,我不这么认为,因为我没有触及这里使用的PTP队列的配置......


Following the JMS example in Java EE 7 with GlassFish 4 Application Server, p 203, I can send messages, but but can't seem to receive messages:

sending a message:

thufir@doge:~$ 
thufir@doge:~$ appclient -client NetBeansProjects/MessageSender/dist/MessageSender.jar 
Mar 05, 2015 3:47:05 AM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.0.0.Final
Mar 05, 2015 3:47:05 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter: Version:  5.1  (Build 9-b) Compile:  July 29 2014 1229
Mar 05, 2015 3:47:05 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter starting: broker is REMOTE, connection mode is TCP
Mar 05, 2015 3:47:05 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter Started:REMOTE
Sending the following message: Testing, 1, 2, 3. Can you hear me?
Sending the following message: Do you copy?
Sending the following message: Good bye!
thufir@doge:~$ 

waiting to receive the message:

thufir@doge:~$ 
thufir@doge:~$ appclient -client NetBeansProjects/MessageReceiver/dist/MessageReceiver.jar 
Mar 05, 2015 3:48:11 AM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.0.0.Final
Mar 05, 2015 3:48:11 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter: Version:  5.1  (Build 9-b) Compile:  July 29 2014 1229
Mar 05, 2015 3:48:11 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter starting: broker is REMOTE, connection mode is TCP
Mar 05, 2015 3:48:11 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter Started:REMOTE
Waiting for messages...

message sender:

package net.ensode.glassfishbook;

import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSContext;
import javax.jms.JMSProducer;
import javax.jms.Queue;

public class MessageSender {

    @Resource(mappedName = "jms/CrmConnectionFactory")
    private static ConnectionFactory connectionFactory;

    @Resource(mappedName = "jms/CrmQueue")
    private static Queue queue;

    public void produceMessages() {

        JMSContext jmsContext = connectionFactory.createContext();
        JMSProducer jmsProducer = jmsContext.createProducer();

        String msg1 = "Testing, 1, 2, 3. Can you hear me?";
        String msg2 = "Do you copy?";
        String msg3 = "Good bye!";

        System.out.println("Sending the following message: "
                + msg1);
        jmsProducer.send(queue, msg1);
        System.out.println("Sending the following message: "
                + msg2);
        jmsProducer.send(queue, msg2);
     System.out.println("Sending the following message: "
                + msg3);
        jmsProducer.send(queue, msg3);
    }

    public static void main(String[] args) {
        new MessageSender().produceMessages();
    }
}

message receiver:

package net.ensode.glassfishbook;

import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSConsumer;
import javax.jms.JMSContext;
import javax.jms.Topic;

public class MessageReceiver {

    @Resource(mappedName = "jms/CrmConnectionFactory")
    private static ConnectionFactory connectionFactory;
    @Resource(mappedName = "jms/CrmTopic")
    private static Topic topic;

    public void getMessages() {
        String message;
        boolean goodByeReceived = false;

        JMSContext jmsContext = connectionFactory.createContext();
        JMSConsumer jMSConsumer = jmsContext.createConsumer(topic);

        System.out.println("Waiting for messages...");
        while (!goodByeReceived) {
            message = jMSConsumer.receiveBody(String.class);
            if (message != null) {
                System.out.print("Received the following message: ");
                System.out.println(message);
                System.out.println();
                if (message.equals("Good bye!")) {
                    goodByeReceived = true;
                }
            }
        }
    }

    public static void main(String[] args) {
        new MessageReceiver().getMessages();
    }
}

glassfish console:

asadmin> 
asadmin> list-jms-resources
jms/CrmQueue
jms/CrmTopic
jms/__defaultConnectionFactory
jms/CrmConnectionFactory
jms/CrmQueueConnectionFactory
jms/CrmTopicConnectionFactory
Command list-jms-resources executed successfully.
asadmin> 
asadmin> version
Version = GlassFish Server Open Source Edition  4.1  (build 13)
Command version executed successfully.
asadmin>  

glassfish logs:

[2015-03-05T02:21:04.258-0800] [glassfish 4.1] [INFO] [] [org.glassfish.jersey.server.ApplicationHandler] [tid: _ThreadID=39 _ThreadName=admin-listener(2)] [timeMillis: 1425550864258] [levelValue: 800] [[
  Initiating Jersey application, version Jersey: 2.10.4 2014-08-08 15:09:00...]]

[2015-03-05T02:21:04.321-0800] [glassfish 4.1] [INFO] [NCLS-REST-00001] [javax.enterprise.admin.rest] [tid: _ThreadID=39 _ThreadName=admin-listener(2)] [timeMillis: 1425550864321] [levelValue: 800] [[
  Listening to REST requests at context: /command/domain.]]

[2015-03-05T03:42:44.022-0800] [glassfish 4.1] [INFO] [jts.startup_msg] [javax.enterprise.system.core.transaction.com.sun.jts.CosTransactions] [tid: _ThreadID=46 _ThreadName=iiop-service-kernel(1) SelectorRunner] [timeMillis: 1425555764022] [levelValue: 800] [[
  JTS5014: Recoverable JTS instance, serverId = [3700]]]

[2015-03-05T03:42:45.389-0800] [glassfish 4.1] [INFO] [] [javax.enterprise.resource.jms] [tid: _ThreadID=158 _ThreadName=p: thread-pool-1; w: 1] [timeMillis: 1425555765389] [levelValue: 800] [[
  addresslist.setjmsservice.provider]]

[2015-03-05T03:42:45.390-0800] [glassfish 4.1] [INFO] [] [javax.enterprise.resource.jms] [tid: _ThreadID=158 _ThreadName=p: thread-pool-1; w: 1] [timeMillis: 1425555765390] [levelValue: 800] [[
  jms.connection.url]]

[2015-03-05T03:42:45.568-0800] [glassfish 4.1] [INFO] [] [javax.resourceadapter.mqjmsra.lifecycle] [tid: _ThreadID=158 _ThreadName=p: thread-pool-1; w: 1] [timeMillis: 1425555765568] [levelValue: 800] [[
  MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter: Version:  5.1  (Build 9-b) Compile:  July 29 2014 1229]]

[2015-03-05T03:42:45.569-0800] [glassfish 4.1] [INFO] [] [javax.resourceadapter.mqjmsra.lifecycle] [tid: _ThreadID=158 _ThreadName=p: thread-pool-1; w: 1] [timeMillis: 1425555765569] [levelValue: 800] [[
  MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter starting: broker is EMBEDDED, connection mode is Direct]]

[2015-03-05T03:42:46.816-0800] [glassfish 4.1] [INFO] [] [javax.resourceadapter.mqjmsra.lifecycle] [tid: _ThreadID=158 _ThreadName=p: thread-pool-1; w: 1] [timeMillis: 1425555766816] [levelValue: 800] [[
  MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter Started:EMBEDDED]]

thufir@doge:~$ 

The only modification I made to the code from the book was to the name for the JMS queue and topic.

解决方案

At present I cannot explain why this solution works, or is in any way different. However, it runs correctly:

thufir@doge:~$ 
thufir@doge:~$ appclient -client NetBeansProjects/JMSPTPProducer/dist/JMSPTPProducer.jar 
Mar 08, 2015 4:33:07 AM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.0.0.Final
Mar 08, 2015 4:33:08 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter: Version:  5.1  (Build 9-b) Compile:  July 29 2014 1229
Mar 08, 2015 4:33:08 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter starting: broker is REMOTE, connection mode is TCP
Mar 08, 2015 4:33:08 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter Started:REMOTE
Sending the following message: Testing, 1, 2, 3. Can you hear me?
Sending the following message: Do you copy?
Sending the following message: Good bye!
thufir@doge:~$ 
thufir@doge:~$ appclient -client NetBeansProjects/JMSPTPConsumer/dist/JMSPTPConsumer.jar 
Mar 08, 2015 4:33:24 AM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.0.0.Final
Mar 08, 2015 4:33:24 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter: Version:  5.1  (Build 9-b) Compile:  July 29 2014 1229
Mar 08, 2015 4:33:24 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter starting: broker is REMOTE, connection mode is TCP
Mar 08, 2015 4:33:24 AM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter Started:REMOTE
Waiting for messages...
Received the following message: Testing, 1, 2, 3. Can you hear me?

Received the following message: Do you copy?

Received the following message: Good bye!

thufir@doge:~$ 

producer:

package net.ensode.glassfishbook;

import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSContext;
import javax.jms.JMSProducer;
import javax.jms.Queue;

public class MessageSender {

    @Resource(mappedName = "jms/CrmConnectionFactory")
    //   @Resource(mappedName = "jms/GlassFishBookConnectionFactory")
    private static ConnectionFactory connectionFactory;

    @Resource(mappedName = "jms/CrmQueue")
    //   @Resource(mappedName = "jms/GlassFishBookQueue")
    private static Queue queue;

    public void produceMessages() {

        JMSContext jmsContext = connectionFactory.createContext();
        JMSProducer jmsProducer = jmsContext.createProducer();

        String msg1 = "Testing, 1, 2, 3. Can you hear me?";
        String msg2 = "Do you copy?";
        String msg3 = "Good bye!";

        System.out.println("Sending the following message: "
                + msg1);
        jmsProducer.send(queue, msg1);
        System.out.println("Sending the following message: "
                + msg2);
        jmsProducer.send(queue, msg2);
        System.out.println("Sending the following message: "
                + msg3);
        jmsProducer.send(queue, msg3);
    }

    public static void main(String[] args) {
        new MessageSender().produceMessages();
    }
}

consumer:

package net.ensode.glassfishbook;

import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSConsumer;
import javax.jms.JMSContext;
import javax.jms.Queue;

public class MessageReceiver {

    @Resource(mappedName = "jms/CrmConnectionFactory")
    //@Resource(mappedName = "jms/GlassFishBookConnectionFactory")
    private static ConnectionFactory connectionFactory;
    @Resource(mappedName = "jms/CrmQueue")
    // @Resource(mappedName = "jms/GlassFishBookQueue")
    private static Queue queue;

    public void getMessages() {
        String message;
        boolean goodByeReceived = false;
        JMSContext jmsContext = connectionFactory.createContext();
        JMSConsumer jMSConsumer = jmsContext.createConsumer(queue);
        System.out.println("Waiting for messages...");
        while (!goodByeReceived) {
            message = jMSConsumer.receiveBody(String.class);
            if (message != null) {
                System.out.print("Received the following message: ");
                System.out.println(message);
                System.out.println();
                if (message.equals("Good bye!")) {
                    goodByeReceived = true;
                }
            }
        }
    }

    public static void main(String[] args) {
        new MessageReceiver().getMessages();
    }
}

There might be a misconfiguration in Glassfish, which was preventing the correct execution. However, I don't think so, because I didn't touch the configuration of the PTP queue used here...

这篇关于你好,Glassfish上的JM​​S世界的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆