Java JMS 2.0:DurableConsumer不接收消息

Java JMS 2.0:DurableConsumer不接收消息,java,jakarta-ee,netbeans,glassfish,jms,Java,Jakarta Ee,Netbeans,Glassfish,Jms,我对Java EE环境中的编程相当陌生,因此这个问题可能听起来很业余,但下面是: 为了演示,我正在编写一个简单的JMS应用程序。必须实现的功能之一是,在以动态方式设置消息选择器后,能够从主题中获取消息。菜单用户必须能够设置某些属性,这些属性将决定他是否获取消息。这些消息是从与接收消息的应用程序在同一本地服务器上运行的不同应用程序发送的 因此,我在发送方和接收方都使用注入的JMSContext组件来处理消息传递本身 以下是发送的函数 @Inject @JMSConnectionFactory("j

我对Java EE环境中的编程相当陌生,因此这个问题可能听起来很业余,但下面是:

为了演示,我正在编写一个简单的JMS应用程序。必须实现的功能之一是,在以动态方式设置消息选择器后,能够从主题中获取消息。菜单用户必须能够设置某些属性,这些属性将决定他是否获取消息。这些消息是从与接收消息的应用程序在同一本地服务器上运行的不同应用程序发送的

因此,我在发送方和接收方都使用注入的JMSContext组件来处理消息传递本身

以下是发送的函数

@Inject
@JMSConnectionFactory("jms/myConnectionFactory")
JMSContext context;

@Resource(lookup = "jms/myTopic")
private Topic topic;

//some more code

public void produceTopicForCreate(Object obj) {
    ObjectMessage message = contextCreate.createObjectMessage(obj);
    try {
        //setting properties
    } catch (JMSException ex) {
        //logging
    }
   context.createProducer().send(topic, message)
}
在接收器端

@Inject
@JMSConnectionFactory("jms/myConnectionFactory")
private JMSContext context;

@Resource(lookup = "jms/myTopic")
private Topic topic

private JMSConsumer consumer;

private List<MyClass> listOfMessages;

//more code


public void subscribe(String selector) {
    this.consumer = this.context.createDurableConsumer(topic, "durableClient", selector, false);
}

public void receiveMessage() {
    try {
        this.listOfMessages.add(this.consumer.receiveBody(MyClass.class));

    } catch (Exception e) {
        //logging
    }

}
@Inject
@JMSConnectionFactory(“jms/myConnectionFactory”)
私有JMSContext上下文;
@资源(lookup=“jms/myTopic”)
私人话题
私人JMS消费者;
私人信息列表;
//更多代码
公共无效订阅(字符串选择器){
this.consumer=this.context.createDurableConsumer(主题“durableClient”,选择器,false);
}
public void receiveMessage(){
试一试{
add(this.consumer.receiveBody(MyClass.class));
}捕获(例外e){
//伐木
}
}
因此,正如您所看到的,我创建了一个持久消费者来消费来自主题的消息。现在,每当我尝试在消息发送到主题后调用receiveMessage方法时,我都会收到一个异常,表明“生产者已关闭”。我查看了整个网络,但没有发现问题出在哪里的迹象

如果这里有人能提供任何帮助,我将不胜感激!提前谢谢

一些重要细节:

  • 执行发送的bean是应用程序A中的RequestScope
  • 执行接收的bean是实现的单例
  • 该环境的最新版本是GlassFish 4.1/NetBeans 8.1