2

我正在尝试将 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等)吗?

4

1 回答 1

4

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

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

更多信息:删除和/或替换默认导入的 Oracle 共享库

编辑:
我搜索了共享库,发现不存在,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-找到 META-INF/boot.xml
4-将此行中的路径替换为您的 jar:

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

5-重新打包 oc4j.jar(不要忘记 MANIFEST.MF - 使用 jar -m META-INF/MANIFEST.MF)

原始文章:Web 服务的 OC4J 配置

于 2009-09-20T21:29:31.630 回答