我正在尝试部署一个war,war有一个JAX客户端,用于Wildfli10.1.0.Final中的SOAP服务。当我试图获得webservice的端口时,javax.xml.ws.Service中的委托接口将自动转到getPort()方法的apache实现。
当它的内部尝试创建代理连接时,我得到一个IllegalArgumentException,因为类加载器看不到org.apache.cxf.enpoint.Client。
我已经阅读了文档和野蝇类加载层次结构。野生蝇有一个cxf-core.jar(3.1.6),我的war也有cxf-core.jar(3.1.7)。我的估计是,它试图从通配符访问cxf-core.jar并抛出类加载问题。
JBOSS有不同的元文件来改变普通类加载的流程,比如jboss-web.xml、jboss-classloading.xml等等。我的查询应该使用哪个元文件来解决类加载器的可见性问题。
什么将是元文件,内容是什么,以及我需要在内容中写入的引用(比如war名称mywar.war)。
正在获取的错误跟踪:
13:38:22,877信息创建服务{http://exp.com/webservices/}CustomerRelationshipManagementWebService java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:581):http://localhost:5321/Nsb.CustomerRelationshipManagement.WebService.asmx?wsdl 13:39:18,632错误斯泰尔 java.lang.IllegalArgumentException:接口org.apache.cxf.endpoint.Client在类加载程序13:39:18,642错误斯泰尔 at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557) 13:39:18,646 ERROR 斯泰尔 at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557) 13:39:18,648错误java.lang.reflect.WeakCache$Factory.get(WeakCache.java:230) 13:39:18,654错误斯泰尔在java.lang.reflect.WeakCache.get(WeakCache.java:127) 13:39:18,656错误斯泰尔在java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419) 13:39:18,662错误斯泰尔在java.lang.reflect.Proxy.newProxyInstance(Proxy.java:719) 13:39:18,664错误斯泰尔在org.apache.cxf.common.util.ProxyHelper.getProxyInternal(ProxyHelper.java:47) 13:39:18,666错误斯泰尔 at org.apache.cxf.common.util.ProxyHelper.getProxy(ProxyHelper.java:101) 13:39:18,669 ERROR 斯泰尔 at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:175) 13:39:18,671 ERROR 斯泰尔 at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142) 13:org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:493) 13:39:18,675错误斯泰尔在org.jboss.wsf.stack.cxf.client.ProviderImpl$JBossWSServiceImpl.createPort(ProviderImpl.java:578) 13:39:18,680错误斯泰尔在org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:359) 13:39:18,691错误斯泰尔在org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImplcom.abc.client.CustomerRelationshipManagementWebService.getCustomerRelationshipManagementWebServiceSoap(CustomerRelationshipManagementWebService.java:72) ( .java:350) 13:39:18,700错误斯泰尔 at javax.xml.ws.Service.getPort(Service.java:99) 13:39:18,705错误斯泰尔
提前感谢
发布于 2018-10-25 15:22:50
您需要将jboss-deployment-structure.xml文件添加到WAR的web文件夹中,从而将JBoss WEB服务子系统排除在部署之外。
资料来源: 将子系统排除在部署之外
下面是一个这样做的例子。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclude-subsystems>
<subsystem name="webservices" />
</exclude-subsystems>
<dependencies>
<module name="org.apache.cxf" />
<module name="org.apache.cxf.impl" />
</dependencies>
</deployment>
</jboss-deployment-structure> https://stackoverflow.com/questions/52988050
复制相似问题