使用本机Java SE 6 JAX-WS实现而不是JBoss WS堆栈

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版本,我将非常感激.

那么,这可行吗?有人指出了方向吗?

Yve*_*tin 7

以下是从JBoss 6.1.0.Final中删除JBossWS-CXF客户端和服务器堆栈的过程.<configuration>可能由您使用的服务器配置替换default.

  • 删除以下文件和目录结构
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/
Run Code Online (Sandbox Code Playgroud)
  • 编辑并删除以下两个部分 server/<configuration>/deployers/switchboard-jboss-beans.xml
<entry>
  <key>javax.xml.ws.WebServiceContext</key>
  <value><inject bean="org.jboss.switchboard.WebServiceContextResourceProvider"/></value>
</entry>
... and ...
<inject bean="org.jboss.switchboard.WebServiceRefResourceProvider"/>
Run Code Online (Sandbox Code Playgroud)

结果,WebService服务器堆栈不再可用,jbossws控制台也不再可用.

为了确保在运行JBoss的JavaSE版本中使用JAX-WS Metro实现,您还必须从Class-Path中删除与CXF和JAX-WS相关的任何jar:

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
Run Code Online (Sandbox Code Playgroud)

那时,JBoss 6.1甚至更快启动.