解决axis2和OC4J库冲突

时间:2009-09-18 19:32:35

标签: java shared-libraries axis2 oc4j

我正在尝试将Axis2 Web服务部署到OC4J 10.1.3应用服务器。

之前我使用的是轴1.4,刚刚创建了我自己的共享库,包含了所有文件。有一个1.4的问题用1.5修补,所以现在我正在使用它,但它不包括所有的库。这次我将axis2.war部署到OC4J服务器,我正在使用axis2管理页面尝试部署我的Web服务。

如果我通过axis2部署了一个Web服务,那么我将得到一个java.lang.NoSuchMethodError: javax.jws.WebMethod.exclude()Z,但我找不到冲突的库。 Axis2里面有新的jax-ws库,但我认为这是OC4J应用服务器上的一个问题。我排除了xml.jar(因为它有旧的JAXB 1.0库),这解决了我本地机器上的问题,但没有解决linux盒子上的问题。

我尝试编辑部署计划以首先搜索本地文件夹,这允许我部署服务,但是当我尝试访问它或WSDL时,我得到关于类强制转换异常和JXDocumentBuilderFactory的错误(我不知道)此刻没有确切的错误。)

我将linux盒子上的共享库与我本地机器上的共享库进行了比较,并且我在每个机器上使用了相同的库(我没有验证每个jar的版本)。如果将axis2部署到OC4J并将我的服务部署到axis2,那么我不会继承axis2库(jax-ws等)吗?

1 个答案:

答案 0 :(得分:4)

尝试通过将此添加到orion-application.xml中来删除冲突的继承库:

<orion-application>
  <imported-shared-libraries>
    <remove-inherited name="PUT_HERE_THE_NAME_OF_THE_LIBRARY"/>
  </imported-shared-libraries>
</orion-application>

更多信息:Removing and/or Replacing an Oracle Shared Library Imported by Default

修改
我搜索了共享库,发现它不存在,jws-api.jar在启动时被加载,无法轻易删除:

替换OC4J JAX-WS库
OC4J初步支持JAX-WS,遗憾的是,这意味着在OC4J启动期间,它会加载过时的JAX-WS API并由Oracle实现。甚至在共享库开始运行之前,在OC4J启动的早期阶段就会发生这种情况 引导时OC4J库在$ ORACLE_HOME / j2ee / home / oc4j.jar引导程序jar的boot.xml文件中配置。要摆脱这个:

1 - 将jar文件复制到$ {oracle.home} / webservices / lib / jaxws
2 - 解压缩OC4J.jar文件
3-Locate META-INF / boot.xml
4 - 用你的jar替换这行中的路径:

<code-source 
   path="${oracle.home}/webservices/lib/jws-api.jar" 
   if="java.specification.version == /1\.[5-6]/"
/>  

5-Repackage oc4j.jar(不要忘记MANIFEST.MF - 使用jar -m META-INF / MANIFEST.MF)

原始文章:OC4J Configuration for Web Services