Java 消息队列侦听器和RESTful集成

Java 消息队列侦听器和RESTful集成,java,rest,jakarta-ee,java-ee-6,websphere-8,Java,Rest,Jakarta Ee,Java Ee 6,Websphere 8,我的项目发布RESTful/SOAP服务。其中一个将消息发送到WebSphereApplicationServer上的JMS队列。应用程序在同一个应用程序服务器上运行。我需要的是为这个队列定义一个侦听器。没有服务的直接呼叫,如何激活此侦听器 项目结构如下所示: Project: -ejb -rest -soap 用户调用服务上的方法,服务调用EJB组件,因此我没有任何可以初始化侦听器的主方法 我需要一个解决方案来激活队列的永久侦听器 我已经有了源代码,但我不知道如何初始化侦听器。不

我的项目发布RESTful/SOAP服务。其中一个将消息发送到WebSphereApplicationServer上的JMS队列。应用程序在同一个应用程序服务器上运行。我需要的是为这个队列定义一个侦听器。没有服务的直接呼叫,如何激活此侦听器

项目结构如下所示:

Project:
  -ejb
  -rest
  -soap
用户调用服务上的方法,服务调用EJB组件,因此我没有任何可以初始化侦听器的主方法

我需要一个解决方案来激活队列的永久侦听器


我已经有了源代码,但我不知道如何初始化侦听器。

不确定您的问题出在哪里:

做一些类似于:

  • 在WebSphere中定义JMS资源
  • 将javax.jms.Queue作为资源注入EJB(或者使用CDI?不确定CDI是否支持此功能)
  • 使用此队列发送消息
  • 定义MDB(@MessageDriven)以侦听消息

WebSphere MDB有很多配置,它可以工作!!!!但看看这个:

    @MessageDriven(activationConfig={
                @ActivationConfigProperty(propertyName="destination",     propertyValue="myDestination"),
                @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue")
})
public class MsgBean implements javax.jms.MessageListener {

  public void onMessage(javax.jms.Message msg) {

      String receivedMsg = ((TextMessage) msg).getText();
      System.out.println("Received message: " + receivedMsg);

   }

}

您使用的JMS队列是什么?它是如何在Websphere上配置的?您的项目是如何配置的?有了Spring,CDI,其他的?没关系。。。所有功能都工作得很好。导入是在我的ejb中定义一个区域,其中init由startupHint定义:ejb可能不负责启动侦听器。应该在应用程序上下文中的某个位置将其配置为独立组件.Thx。我的第一次尝试是使用ejb注释,如@Startup和Postconst。。。。并使用while(1)在那里调用我的Recv方法。但是WebSphere不受这种方式的支持。它必须与MDB一起使用。。。