Ant*_*oly 6 java jax-ws classloader jbossws jboss6.x
JBoss 6.0 Final附带了JBoss WS(默认情况下为Apache CXF堆栈),我知道我可以用JBossWS下载站点中相应的JBoss WS Native或Metro版本替换默认实现.
问题是,我有一个客户端jar库(不幸的是二进制文件),它使用了一些专有的SOAP Web服务.当我使用部署到JBoss的Web应用程序中的客户端API时,我遇到了大量间歇性SOAP故障(使用Apache CXF和JBoss Native堆栈进行测试).
由于从独立的jar文件(没有第三方JAX-WS实现)运行时,相同的Web服务似乎工作正常,所以我考虑禁用JBoss WS堆栈,转而使用Java SE提供的本机JAX-WS RI堆栈6.
我知道JBoss Metro WS堆栈应该与Java SE 6附带的内容足够接近,但如果我能使用本机Java SE版本,我将非常感激.
那么,这可行吗?有人指出了方向吗?
以下是从JBoss 6.1.0.Final中删除JBossWS-CXF客户端和服务器堆栈的过程.<configuration>可能由您使用的服务器配置替换default.
Run Code Online (Sandbox Code Playgroud)common/deploy/jbossws-console.war lib/endorsed/jbossws-cxf-factories.jar server/<configuration>/deploy/jbossws-console-activator-jboss-beans.xml server/<configuration>/deployers/jbossws.deployer/ server/<configuration>/deployers/jbossws-jaxrpc.deployer/
server/<configuration>/deployers/switchboard-jboss-beans.xmlRun Code Online (Sandbox Code Playgroud)<entry> <key>javax.xml.ws.WebServiceContext</key> <value><inject bean="org.jboss.switchboard.WebServiceContextResourceProvider"/></value> </entry> ... and ... <inject bean="org.jboss.switchboard.WebServiceRefResourceProvider"/>
结果,WebService服务器堆栈不再可用,jbossws控制台也不再可用.
为了确保在运行JBoss的JavaSE版本中使用JAX-WS Metro实现,您还必须从Class-Path中删除与CXF和JAX-WS相关的任何jar:
Run Code Online (Sandbox Code Playgroud)lib/endorsed/jboss-jaxws-api_2.2_spec.jar lib/endorsed/stax-api.jar lib/endorsed/jboss-jaxb-api_2.2_spec.jar common/lib/jboss-jaxb-api_2.2_spec.jar common/lib/jboss-jaxws-api_2.2_spec.jar common/lib/jboss-jaxrpc-api_1.1_spec.jar common/lib/cxf-*.jar lib/wstx-lgpl.jar lib/jaxb-impl.jar lib/jaxb-xjc.jar
那时,JBoss 6.1甚至更快启动.