我是从WebLogic到JBoss应用程序服务器的偏头痛应用程序。而且我需要在代码中保留JMS的JNDI名称与在WebLogic中使用的名称相同。为此,我尝试在web.xml和jboss-web.xml文件中使用resource-ref。但总是会出错:
"WFLYCTL0412: Required services that are not installed:" => [
"jboss.naming.context.java.comp.connect.connect-ejb.ConnectCGMPeriodicMessageBean.env.jms.ConnectConnectionFactory",
"jboss.naming.context.java.comp.connect.connect-ejb.ConnectCGMPeriodicMessageBean.env.jms.ConnectSMSQueue"
]
我的建议是资源引用不能与另一个模块的MDB一起使用。 因为如果我在connect-api(Web模块)中添加MDB,则resource-ref效果很好。 也许我需要在罐子或耳朵的水平上进行资源引用?我该怎么办? 出于测试目的,我还创建了一个简单的Web项目进行测试,在那里resource-ref效果很好。
我有多模块应用程序,并且打包在一个耳朵文件中。 耳朵的application.xml:
<module>
<web>
<web-uri>connect-api.war</web-uri>
<context-root>/api/connect/v1</context-root>
</web>
</module>
<module>
<ejb>connect-ejb.jar</ejb>
</module>
在connect-ejb.jar模块中,我有消息驱动Bean:
@MessageDriven
@RequestScoped
@TransactionManagement(TransactionManagementType.BEAN)
public class ConnectCGMPeriodicMessageBean extends AbstractConnectBean {
@Resource(mappedName = "jms/ConnectConnectionFactory")
private ConnectionFactory m_factory;
@Resource(mappedName = "jms/ConnectSMSQueue")
private Queue m_queue;
}
connect-api.war模块的web.xml:
<resource-ref>
<res-ref-name>jms/ConnectConnectionFactory</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<res-ref-name>jms/ConnectSMSQueue</res-ref-name>
<res-type>javax.jms.Queue</res-type>
<res-auth>Container</res-auth>
</resource-ref>
connect-api.war模块的jboss-web.xml:
<resource-ref>
<res-ref-name>jms/ConnectConnectionFactory</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<jndi-name>java:/jms/ConnectConnectionFactory</jndi-name>
</resource-ref>
<resource-ref>
<res-ref-name>jms/ConnectSMSQueue</res-ref-name>
<res-type>javax.jms.Queue</res-type>
<jndi-name>java:/jms/ConnectSMSQueue</jndi-name>
</resource-ref>
在standalone-full.xml中,我添加:
<jms-queue name="jms/ConnectSMSQueue" entries="java:/jms/ConnectSMSQueue"/>
<connection-factory name="jms/ConnectConnectionFactory" entries="java:/jms/ConnectConnectionFactory" connectors="in-vm"/>
答案 0 :(得分:0)
我找到了解决方案,需要添加到jboss-ejb3.xml中:
<message-driven>
<ejb-name>ConnectPumpPeriodicMessageBean</ejb-name>
<resource-ref>
<res-ref-name>jms/ConnectConnectionFactory</res-ref-name>
<lookup-name>java:/jms/ConnectConnectionFactory</lookup-name>
</resource-ref>
<resource-ref>
<res-ref-name>jms/ConnectSMSQueue</res-ref-name>
<lookup-name>java:/jms/ConnectSMSQueue</lookup-name>
</resource-ref>
</message-driven>