gpt4 book ai didi

java - 解决 axis2 和 OC4J 库冲突

转载 作者:行者123 更新时间:2023-11-30 07:38:48 25 4
gpt4 key购买 nike

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

我之前使用的是 axis 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 等)吗?

最佳答案

尝试通过将此添加到您的 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 bootstrap 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)

原文:OC4J Configuration for Web Services

关于java - 解决 axis2 和 OC4J 库冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com