WebLogic在部署Webapp期间无法找到资源适配器jmsra

时间:2019-07-10 17:36:05

标签: ejb weblogic jndi weblogic12c

在将应用程序从现有的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();
    }
}

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:对我来说,解决方案是从Java源代码的@JMSDestinationDefinitions中删除resourceAdapter =“ jmsra”。似乎该属性可以使用WebLogic 12.2.1.0.0,但不能使用WebLogic 12.2.1.3.0。一些文档表明它已被弃用,尽管我无法从Oracle上找到任何发行说明,但可能已将其删除。主题。