从Weblogic 12上运行的EAR开始,我需要让这个应用程序与Wildfly 12一起使用。
我们有一些JMS队列,我们在Weblogic上注入了这样的队列:
@Resource(lookup = "jms/Queues/MYQUEUE")
private Queue destination;
@Resource(lookup = "jms/QueueConnectionFactories/MYQUEUECF")
private QueueConnectionFactory connectionFactory;
使用Wildfly我在standalone-full.xml中定义了队列
<jms-queue name="MYQUEUE" entries="jms/Queues/MYQUEUE" durable="true"/>
<connection-factory name="MYQUEUECF" entries="jms/QueueConnectionFactories/MYQUEUECF" connectors="in-vm"/>
但是服务器启动时注入失败。
service jboss.naming.context.java.comp.XXX.ejb.JMSMessageProducer.env.jms.Queues.MYQUEUE (missing) dependents: [service jboss.naming.context.java.comp.XXX.ejb.JMSMessageProducer.env."com.xxx.webservices.components.communication.ejb.JMSMessageProducerBean".destination] [[...]
要解决此问题,我需要使用
@Resource(lookup = "java:/jms/Queues/MYQUEUE")
private Queue destination;
没有&#34; java:/&#34;前缀,注射赢了工作。
不幸的是,这不适用于Weblogic(这是领先/生产系统)。
由于我无法更改weblogic配置,因此我必须使我的Wildfly配置与其兼容或更改注入代码,以便它可以在两个应用服务器上运行。
为什么Wildfly在@Resource注释中需要这个前缀才能正确注入?
有没有办法改变它的配置,所以代码可以在没有&#34; java:/&#34;前缀?
提前致谢; - )
标记。
PS:当我删除@Resource注释并进行上下文查找时,它会在没有&#34; java:/&#34;的情况下成功。 - 奇怪; - )
答案 0 :(得分:0)
请查看以下参考文献:
https://developer.jboss.org/thread/261022
如果要在其中找到,我要引用该片段:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<resource-ref>
<res-ref-name>jdbc/fs</res-ref-name>
<jndi-name>java:jboss/datasources/FS</jndi-name>
</resource-ref>
</jboss-web>
使用上面的部署描述符,您可以说某个资源名称映射到您喜欢的任何jndi名称。 因此,您可以将资源批注注入与可在weblogic中使用的名称一起使用,并将它们映射到需要java://
的tje wildfly jndi名称。代码。