从wildfly发送jms消息

时间:2018-02-19 21:43:10

标签: java jboss rx-java wildfly ejb-3.0

我正在研究jms base wildfly应用程序(wildfly 8,java 7)。我必须使用基于Rx Java的事件驱动库。我想从偶数监听器发送jms消息,我必须提供给库函数。问题是用于发送jms消息的基于标准EJB的机制在Rx Java处理程序内部不起作用。通常的猜测是我不能在Rx Java流中注入/使用基于注释的EJB jms机制,因为它们不是由EJB容器生成的(或者将EJB bean作为Rx Java处理程序传递)。我曾尝试从像this这样的教程之后的独立Java应用程序发送来自EJB单例的jms消息。这种方法的问题在于,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 个答案:

答案 0 :(得分:1)

您可以在没有依赖注入的情况下使用EJB来查找InitialContext。

在编写Singleton EJB之后,您需要知道JNDI注册表中的&#34; EJB名称&#34;之后你可以这样做:

Context ctx = new InitialContext()
MyStatlessBeanInterface bean = ctx.lookup("FULL NAME BEAN"); 
bean.sendJMSMessage();

Wilfly在部署时在控制台中输出EJB名称,但您可以在以下位置阅读约定:

install your dependencies automatically

您还可以在以下位置获取有关查找的更多信息:

https://docs.jboss.org/author/display/AS71/JNDI+Reference