Java 通过JMS主题发布消息的正确方法是什么?该主题已从Netty事件循环注入EJB中?

Java 通过JMS主题发布消息的正确方法是什么?该主题已从Netty事件循环注入EJB中?,java,jakarta-ee,jboss,jms,Java,Jakarta Ee,Jboss,Jms,我有一个@SingletonEJB,它在@Startup启动时启动,这个bean使用netty监听多播流量。我想做的是,在通过多播接收消息时,发送一条关于注入主题的JMS消息(因此在Wildfly上,使用JMS 2.0,我有以下内容:) 我知道主题和发布消息没有问题。如果我在ejb中有一个@Scheduled函数,我可以很高兴地创建一个发布者并发送消息。但是,尝试从netty事件循环上下文发布JMS消息会导致: 2:10:34441错误[stderr](nioEventLoopGroup-0-1

我有一个
@Singleton
EJB,它在
@Startup
启动时启动,这个bean使用netty监听多播流量。我想做的是,在通过多播接收消息时,发送一条关于注入主题的JMS消息(因此在Wildfly上,使用JMS 2.0,我有以下内容:)

我知道主题和发布消息没有问题。如果我在ejb中有一个
@Schedule
d函数,我可以很高兴地创建一个发布者并发送消息。但是,尝试从netty事件循环上下文发布JMS消息会导致:

2:10:34441错误[stderr](nioEventLoopGroup-0-1) java.lang.RuntimeException:javax.naming.NameNotFoundException: java:comp/TransactionSynchronizationRegistry 12:10:34441错误 [stderr](nioEventLoopGroup-0-1)位于 org.jboss.as.messaging.deployment.JMSContextProducer$JMSContextWrapper.getDelegate(JMSContextProducer.java:217)

所以我的问题是,从非jboss上下文(Netty事件循环)发布到JMS主题的正确方式是什么

编辑:我现在看到,我试图让我的bean监听多播通信量,这实际上破坏了EJB规范,因此,现在的问题是,除了编写资源适配器之外,有没有更简单的方法来做到这一点


(服务器:Wildfly 8.2.0.Final使用standalone-full.xml配置)

我之前的答案是废话-正确的方法是创建一个JCA资源适配器,我最终创建了这个适配器。现在我不再需要JMS主题,因为我的MDB直接侦听来自入站连接的事件


唯一复杂的是,关于如何使用1.7规范(使用注释)实现这一点的文档很少,因此必须查看用于1.5等的xml配置,并应用适当的注释。

我也有类似的问题。我从(ZeroMQ)套接字获取消息,该套接字位于一个线程中,该线程是在单例的后构造方法中创建的。当我尝试创建JMS消息(JmxContext.createMapMessage())时,我得到一个javax.naming.NameNotFoundException:java:comp/TransactionSynchronizationRegistry异常。@Dobbo,请参阅我的编辑,实际上不允许在容器未管理的上下文中使用EJB(及其状态)。
  @Resource(lookup = "java:/jboss/exported/jms/topic/appUpdates")
  private Topic appUpdate;

  @Inject
  private JMSContext context;