【问题标题】:Axis2 Weblogic 10 jar conflictAxis2 Weblogic 10 jar 冲突
【发布时间】:2010-11-01 07:51:37
【问题描述】:

我正在尝试在 Weblogic 10 服务器上部署一个axis2 webservice 客户端。但是我收到以下错误:

java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory 在 javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136) 在 weblogic.servlet.internal.WebAppHelper$IOHelperImpl.parseXML(WebAppHelper.java:247) 在 weblogic.descriptor.DescriptorCache.parseXML(DescriptorCache.java:350) 在 weblogic.servlet.internal.WebAppHelper.parseTagLibraries(WebAppHelper.java:142) 在 weblogic.servlet.internal.WebAppHelper.(WebAppHelper.java:60) 在 weblogic.servlet.internal.WebAppServletContext.(WebAppServletContext.java:402) 在 weblogic.servlet.internal.WebAppServletContext.(WebAppServletContext.java:452) 在 weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:410) 在 weblogic.servlet.internal.WebAppModule.registerWebApp(WebAppModule.java:582) 在 weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:298) 在 weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176) 在 weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93) 在 weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:360) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26) 在 weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:56) 在 weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:46) 在 weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:615) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26) 在 weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191) 在 weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:147) 在 weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:61) 在 weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:189) 在 weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:87) 在 weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217) 在 weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:719) 在 weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1186) 在 weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:248) 在 weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:157) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45) 在 weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464) 在 weblogic.work.ExecuteThread.execute(ExecuteThread.java:200) 在 weblogic.work.ExecuteThread.run(ExecuteThread.java:172)cuteThread.run(ExecuteThread.java:172)

我的weblogic-application.xml如下:

<wls:prefer-application-packages>
<wls:package-name>com.ctc.wstx.*</wls:package-name>
<wls:package-name>javax.xml.*</wls:package-name>
<wls:package-name>org.apache.*</wls:package-name>
</wls:prefer-application-packages>

</wls:weblogic-application>

所有帮助将不胜感激!

【问题讨论】:

    标签: java weblogic axis2 weblogic-10.x


    【解决方案1】:

    修复了问题: weblogic-application.xml 应该是:

    <wls:prefer-application-packages>
    <wls:package-name>org.apache.*</wls:package-name>
    </wls:prefer-application-packages>
    
    </wls:weblogic-application>
    

    以便它获取 weblogic stax-api 实现 jar。也没有直接的方法让 weblogic stax 解析器与 Axis2 1.5.2 一起工作。所以你需要在类路径中有woodstock解析器。

    【讨论】:

      【解决方案2】:

      问题与 CXF 相同。我尝试了所有这些方法并最终放置了巨大的包列表。最后放弃了,我们决定使用Tomcat。

      上面给出的列表只是 apache 类,你可能需要添加更多的依赖包。

      参考:http://cxf.apache.org/docs/application-server-specific-configuration-guide.html#ApplicationServerSpecificConfigurationGuide-WebLogic

      【讨论】:

      • 是的,Weblogic 与第三方 xml 库存在巨大的 jar 冲突问题。所以如果我们想避免jar冲突,最好的办法是使用JAX-WS(Weblogic webservices)的Weblogic实现。
      猜你喜欢
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 2023-02-18
      • 1970-01-01
      • 2013-05-17
      相关资源
      最近更新 更多