java - JBoss AS 7.2 无法确定实现类名称

标签 java jboss jboss7.x

当我尝试从资源适配器内部调用基于 WSDL 的 Web 服务时,出现以下异常:

SEVERE [org.apache.cxf.BusFactory] (JmsMessageDispatcher#2) Failed to determine BusFactory implementation class name.: java.lang.ClassCastException: class org.apache.cxf.bus.spring.SpringBusFactory
at java.lang.Class.asSubclass(Class.java:3126) [rt.jar:1.7.0_45]
at org.apache.cxf.BusFactory.getBusFactoryClass(BusFactory.java:333) [cxf-api-2.5.9.jar:2.5.9]
at org.apache.cxf.BusFactory.newInstance(BusFactory.java:260) [cxf-api-2.5.9.jar:2.5.9]
at org.apache.cxf.BusFactory.newInstance(BusFactory.java:247) [cxf-api-2.5.9.jar:2.5.9]
at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:99) [cxf-api-2.5.9.jar:2.5.9]
at org.apache.cxf.BusFactory.createThreadBus(BusFactory.java:193) [cxf-api-2.5.9.jar:2.5.9]
at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:182) [cxf-api-2.5.9.jar:2.5.9]
at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:166) [cxf-api-2.5.9.jar:2.5.9]
at org.apache.cxf.frontend.ClientProxyFactoryBean.configureObject(ClientProxyFactoryBean.java:99) [cxf-rt-frontend-simple-2.5.9.jar:2.5.9]
at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:131) [cxf-rt-frontend-simple-2.5.9.jar:2.5.9]
at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:155) [cxf-rt-frontend-jaxws-2.5.9.jar:2.5.9]

在部署所述资源适配器期间,我收到此警告:

WARN  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015893: Encountered invalid class name 'org.springframework.context.ApplicationContext,org.springframework.beans.BeansException' for service type 'org.apache.cxf.bus.factory'

我想就像他们说的那样:警告迟早会变成错误;)

this的答案问题没有帮助,因为我已经将以下依赖项添加到我的 pom.xml 中,如下所示:

<dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-api</artifactId>
        <version>2.5.9</version>    
</dependency>

资源适配器部署为 JCA 连接器 (.rar)。

感谢您的帮助!

最佳答案

不要使用资源适配器提供 Spring 和 CXF。将它们作为模块依赖项包含在内。

在您的 RA 项目中:

  • pom.xml:使用为 CXF 库提供的范围
  • 将 META-INF/jboss-deployment-struct.xml 添加到 RAR 存档

META-INF/jboss-deployment-struct.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
  <deployment>
    <dependencies>
      <module name="org.jboss.ws.cxf.jbossws-cxf-client" services="import" />
      <module name="org.apache.cxf"> <!-- .impl removed -->
        <imports>
          <include path="META-INF" />
          <include path="META-INF/cxf" />
        </imports>
      </module>
      <module name="org.springframework.spring">
        <imports>
          <include path="META-INF" />
        </imports>
      </module>
    </dependencies>
  </deployment>
</jboss-deployment-structure>

由于 spring 不是 JBoss 的一部分,因此您必须将其部署为新模块。

  • 创建模块目录$JBOSS_HOME/modules/org/springframework/spring/main/
  • 添加 module.xml
  • 将 module.xml 中列出的 JAR 文件添加到目录

模块.xml

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.springframework.spring">
<resources>
    <resource-root path="spring-aop-3.2.4.RELEASE.jar" />
    <resource-root path="spring-beans-3.2.4.RELEASE.jar" />
    <resource-root path="spring-context-3.2.4.RELEASE.jar" />
    <resource-root path="spring-core-3.2.4.RELEASE.jar" />
    <resource-root path="spring-expression-3.2.4.RELEASE.jar" />
    <resource-root path="spring-web-3.2.4.RELEASE.jar" />
</resources>
<dependencies>       
    <module name="javax.api" />
    <module name="javax.servlet.api" />
    <module name="javax.transaction.api" />
    <module name="org.apache.commons.logging" />
</dependencies>
</module>  

我不确定这是否是 JBoss 深处的类加载错误。

关于java - JBoss AS 7.2 无法确定实现类名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960972/

相关文章:

java - Android MediaPlayer 未知错误

java - 启动 ejb bean 不工作

Java、JBOSS、接受带有西类牙口音的 MULTIPART_FORM_DATA 和 JSON

java - 如何从 JBoss 7 或 WildFly 中部署的应用程序访问 JDK tools.jar javac

java - 接受 5 个名字并打印最长的名字?

java - 如何添加新 child 而不覆盖其他 child

java - 关闭 Wildfly/Jboss AS : prevent org. jboss.as.ejb3.component.EJBComponentUnavailableException

java - Wildfly -9 javax.mail 不工作

java - 使用 JCA 与 JBoss AS-7 集成 Tuxedo

java - 初始化时读取变量