从wildfly发送jms消息
Posted
技术标签:
【中文标题】从wildfly发送jms消息【英文标题】:Sending jms messages from wildfly 【发布时间】:2018-07-30 04:29:50 【问题描述】:我正在开发基于 jms 的 Wildfly 应用程序(wildfly 8、java 7)。我必须使用基于 Rx Java 的事件驱动库。我想从必须提供给库函数的监听器上发送 jms 消息。问题是用于发送 jms 消息的标准 EJB 机制在 Rx Java 处理程序内部不起作用。疯狂的猜测是,我不能在 Rx Java 流中注入/使用基于注释的 EJB jms 机制,因为它们不是由 EJB 容器生成的(或将 EJB bean 作为 Rx Java 处理程序传递)。我试图从 EJB 单例发送 jms 消息,就像从独立的 Java 应用程序一样,遵循this 之类的教程。这种方法的问题是wildfly的独立实例找不到索引工厂org.jboss.naming.remote.client.InitialContextFactory
的依赖关系。或者如果我尝试添加 maven 依赖项,wildfly 甚至都不会部署
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-jms-client-bom</artifactId>
<version>$version.wildfly</version>
<type>pom</type>
</dependency>
到我的应用程序胖罐。任何想法都将不胜感激,因为我对 EJB 的理解在这件事上相当缺乏。
【问题讨论】:
【参考方案1】:您可以在没有依赖注入的情况下使用 EJB 来查找 InitialContext。
在编写完单例 EJB 代码后,您需要知道“JNDI 注册表上的 EJB 名称”,然后您可以这样做:
Context ctx = new InitialContext()
MyStatlessBeanInterface bean = ctx.lookup("FULL NAME BEAN");
bean.sendJMSMessage();
Wifly 在部署时在控制台中打印 EJB 名称,但您可以在以下位置阅读有关约定:
https://docs.jboss.org/author/display/AS71/JNDI+Reference
您还可以在以下位置获取有关查找的更多信息:
https://docs.oracle.com/cd/E16439_01/doc.1013/e13981/usclient003.htm
【讨论】:
以上是关于从wildfly发送jms消息的主要内容,如果未能解决你的问题,请参考以下文章
Wildfly 上的 JMS 2.0 QueueBrowser 不返回消息
Wildfly JMS:当消息存在时,MDB bean 空闲
使用 WildFly 在 JMS 中进行 JAAS 身份验证:javax.jms.JMSSecurityException:HQ119032:用户:null 没有权限 = 在地址 2 上发送