解决Axis2和OC4J库冲突
-
22-07-2019 - |
题
我试图部署Axis 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(我不错误“T具有此时的确切的错误)。
我比较了与那些在Linux中的共享库我的本地机器上,并且我用在每个相同的那些(我没有验证每个罐子的版本,虽然)。如果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>
更多这里:卸下和/或更换Oracle共享库默认
进口修改强>结果 我搜索的共享库,发现不存在,JWS-api.jar文件在启动时被加载,并且不能被容易地除去:
<强>更换OC4J JAX-WS库强>结果 OC4J对JAX-WS的初步支持,遗憾的是这意味着OC4J启动期间,由Oracle加载过时的JAX-WS API和实现。这发生之前的共享库进入行动,在OC4J启动的一个非常早期的阶段。结果 启动时OC4J库被配置在$ ORACLE_HOME / J2EE /家boot.xml文件/ oc4j.jar引导罐子。为了摆脱这样的:
1张复印的jar文件为$ {oracle.home} / web服务/ LIB / JAXWS结果 2解压文件OC4J.jar结果 3-找到META-INF / boot.xml结果 用您的罐子此线4 - 替换路径:
<code-source
path="${oracle.home}/webservices/lib/jws-api.jar"
if="java.specification.version == /1\.[5-6]/"
/>
5重新包装oc4j.jar(不要忘记MANIFEST.MF - 使用罐-m META-INF / MANIFEST.MF)
原创文章: OC4J配置的Web服务 强>