JBoss 6 EAP JaxWsProxyFactoryBean NoClassDefFoundError

JBoss 6 EAP JaxWsProxyFactoryBean NoClassDefFoundError,jboss,cxf,noclassdeffounderror,classnotfoundexception,Jboss,Cxf,Noclassdeffounderror,Classnotfoundexception,我正在从JBoss 6.1.0 JBoss EAP 4.2.xa迁移一个应用程序 我知道我已经改变了很多东西,其中最重要的一点是JBoss现在包含了大多数框架/最常用的库(模块),这很好(war文件更小) 现在,我有两个应用程序,都安装了Spring/CXF和Maven2。一个公开web服务,第二个公开第一个客户机的web服务 问题出在客户端应用程序中,在运行时,当我尝试实例化代理web服务时,会出现以下错误: ------ java.lang.NoClassDefFoundError: org

我正在从JBoss 6.1.0 JBoss EAP 4.2.xa迁移一个应用程序

我知道我已经改变了很多东西,其中最重要的一点是JBoss现在包含了大多数框架/最常用的库(模块),这很好(war文件更小)

现在,我有两个应用程序,都安装了Spring/CXF和Maven2。一个公开web服务,第二个公开第一个客户机的web服务

问题出在客户端应用程序中,在运行时,当我尝试实例化代理web服务时,会出现以下错误:

------ java.lang.NoClassDefFoundError: org/apache/cxf/jaxws/JaxWsProxyFactoryBean 
at es....MyFactory.getService_WSC(MyFactory.java:59) 
...
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
...
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
...
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) 
at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.ClassNotFoundException: org.apache.cxf.jaxws.JaxWsProxyFactoryBean from [Module "deployment.myapp.war:main" from Service Module Loader] 
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:196) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:444) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:432) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:399) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:374) 
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:119) ... 21 more ------
在我的pom.xml中,我有以下内容(提供的CXF):


2.6.6
假如
org.apache.cxf
cxf rt前端jaxws
${cxf.version}
${cxf.scope}
org.apache.cxf
cxf rt传输http
${cxf.version}
公用记录
公用记录
${cxf.scope}
org.apache.cxf
cxf rt ws-security
${cxf.version}
${cxf.scope}
可以包括CXF库,但这可能不是必需的,而且JBoss EAP 6已经有了它们?但是,如果是这样,为什么我会在NoClassDefFoundError->上面得到错误,原因是:java.lang.ClassNotFoundException


谢谢大家!

您的CXF库范围是
提供的
。我不确定JBoss EAP 6是否嵌入了CXF JAXR(CXF的其余部分-您应该检查JBoss版本的CXF 2.4.x-redhat-1)。我认为它使用了Rest-Easy。因此它不会找到
org/apache/cxf/jaxws/JaxWsProxyFactoryBean

cxf-rt前端jaxws
的范围从
提供的
更改为
编译


查看以获取Jboss EAP 6.x中所有嵌入式lib的列表,最后我解决了它

首先,感谢willome的回应。 由于服务体系结构(使用ApacheCXF实现)的性质,我倾向于使用CXF解决问题

JBoss EAP 6嵌入了完整版本的CXF框架,其特殊性是“划分”为模块,关键在于准确识别应用程序中包含的模块

所有这一切的好处是,现在的战争非常轻,你不能包括绝大多数框架/库。。。在我的例子中,我从一场30MB的战争变成了最后一场5MB的战争

最后我将该文件添加到应用程序jboss-deployment-structure.xml中,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.jboss.ws.cxf.jbossws-cxf-client" services="import" />
            <module name="org.apache.cxf.impl">
                <imports>
                    <include path="META-INF"/>
                    <include path="META-INF/cxf"/>
                </imports>
            </module>
            <!-- ... -->
        </dependencies>
    </deployment>
</jboss-deployment-structure>


我在pom.xm for CXF框架中保留了“提供”的范围。

感谢您的评论。我是模块列表的有用链接;)。。。这就是问题所在,有很多模块,很难(至少最初)确定哪些是您需要的。非常感谢jpadron,您救了我一天。我正是使用这两个依赖项cxf-rt前端jaxws和cxf-rt-transports-http将httpconductor添加到SOAP请求中,以禁用传输编码。在提供的范围内,war的部署不会失败,但我有org.jboss.resteasy.spi.UnhandledException:java.lang.NoClassDefFoundError:org/apache/cxf/frontend/ClientProxy。我将此依赖项添加到jboss-deployment-structure.xml中,它可以正常工作!非常感谢!
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.jboss.ws.cxf.jbossws-cxf-client" services="import" />
            <module name="org.apache.cxf.impl">
                <imports>
                    <include path="META-INF"/>
                    <include path="META-INF/cxf"/>
                </imports>
            </module>
            <!-- ... -->
        </dependencies>
    </deployment>
</jboss-deployment-structure>