在将应用程序从现有的WebLogic 12.2.1迁移到新的WebLogic期间,在尝试部署使用JMS队列的webapp时遇到异常。 在服务器日志中,错误显示为:
weblogic.application.ModuleException: javax.resource.ResourceException: [Connector:199311]Failed to find Resource Adapter:jmsra The application information: my_webapp_name#my_webapp_name#my_webapp_name The JNDI name:java:comp/env/queue/comm at
weblogic.application.internal.ExtensibleModuleWrapper.activate(ExtensibleModuleWrapper.java:123)
...
Caused By: javax.resource.ResourceException: [Connector:199311]Failed to find Resource Adapter:jmsra The application information: my_webapp_name#my_webapp_name#my_webapp_name The JNDI name:java:comp/env/queue/comm
at weblogic.connector.external.RAUtil.createAdministeredObject(RAUtil.java:301)
队列/通讯作为JMS队列存在,并且包含它的模块与无法部署的Web应用程序具有相同的目标。
使用队列的bean都具有如下定义:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
version="3.0">
<enterprise-beans>
<message-driven>
<ejb-name>BeanName</ejb-name>
<ejb-class>com.acme.beans.BeanName</ejb-class>
<activation-config>
<activation-config-property>
<activation-config-property-name>destinationJNDIName</activation-config-property-name>
<activation-config-property-value>queue/comm</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>destinationType</activation-config-property-name>
<activation-config-property-value>javax.jms.Queue</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>acknowledgeMode</activation-config-property-name>
<activation-config-property-value>acknowledgeMode</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>messageSelector</activation-config-property-name>
<activation-config-property-value>MESSAGE_TYPE='BeanMessage'</activation-config-property-value>
</activation-config-property>
</activation-config>
</message-driven>
</enterprise-beans>
</ejb-jar>
我无法发现两个WebLogic实例在配置方面的差异。 wljmsra.rar
在两个实例的wlserver/server/lib
目录中。并且在同一模块中有一个连接工厂可以报告启动。
编辑11/07/2019 我找到了引用jmra的代码片段
import javax.jms.JMSDestinationDefinition;
import javax.jms.JMSDestinationDefinitions;
@JMSDestinationDefinitions({
@JMSDestinationDefinition(name = Resources.COMM_QUEUE, resourceAdapter = "jmsra", interfaceName = "javax.jms.Queue", destinationName = "CommQueue", description = "Queue for communication between applications") })
public class Resources {
public static final String COMM_QUEUE = "queue/comm";
private Resources() {
super();
}
}
答案 0 :(得分:0)
回答我自己的问题:对我来说,解决方案是从Java源代码的@JMSDestinationDefinitions中删除resourceAdapter =“ jmsra”。似乎该属性可以使用WebLogic 12.2.1.0.0,但不能使用WebLogic 12.2.1.3.0。一些文档表明它已被弃用,尽管我无法从Oracle上找到任何发行说明,但可能已将其删除。主题。