异常DTMManagerDefault incompatible的解决

异常java.lang.ClassCastException org.apache.xml.dtm.ref.DTMManagerDefault incompatible with org.apache.xml.dtm.DTMManager的解决


1. 发生异常的环境


WebSphere Platform 8.5.0.0 [ND 8.5.0.0 gm1218.01]

IBM J9VM - R26_Java626_SR2_20120322_1722_B106210

应用的WEB Module的类加载器是Parent-Last


2. 异常日志

[14-2-19 17:40:17:270 CST] 00000045 CompositeDocu E org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor  ContributionReadException occurred due to : org.apache.tuscany.sca.contribution.service.ContributionReadException: java.lang.ClassCastException: org.apache.xml.dtm.ref.DTMManagerDefault incompatible with org.apache.xml.dtm.DTMManager
   [14-2-19 17:40:17:278 CST] 00000045 SystemOut     O [default][2014-02-19 17:40:17,277][ERROR][com.primeton.sca.host.impl.EOSSCADomain:57] Generate the contributin 'file:/D:/IBM/WebSphere/AppServer/profiles/eos_profile/installedApps/ART02Node01Cell/default.ear/default.war/WEB-INF/_srv/work/system/com.primeton.bps.webservice/' error.
   org.apache.tuscany.sca.contribution.service.ContributionException: java.lang.IllegalArgumentException: Null InputStream is not a valid argument
       at org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.addContribution(ContributionServiceImpl.java:393)
       at org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.contribute(ContributionServiceImpl.java:189)
       at com.primeton.sca.host.impl.EOSSCADomain.buildContribution(EOSSCADomain.java:54)
       at com.primeton.sca.host.impl.EOSSCADomain.addContribution(EOSSCADomain.java:124)
       at com.primeton.ext.sca.host.ScaSystem.addContribution(ScaSystem.java:243)
       at com.primeton.sca.host.impl.SCAResourceLoadListener.load(SCAResourceLoadListener.java:59)
       at com.primeton.runtime.resource.impl.ResourceNotify.notifyResource(ResourceNotify.java:106)
       at com.primeton.runtime.resource.impl.ApplicationResourceLoaderManager.loadApplicationResource(ApplicationResourceLoaderManager.java:38)
       at com.primeton.ext.runtime.resource.startup.ResourceLoaderStartUpListener.start(ResourceLoaderStartUpListener.java:36)
       at com.primeton.runtime.core.impl.RuntimeListenerManagerImpl.startListener(RuntimeListenerManagerImpl.java:43)
       at com.primeton.ext.runtime.core.RuntimeManager.start(RuntimeManager.java:64)
       at com.primeton.ext.runtime.core.RuntimeJ2EEHost.contextInitialized(RuntimeJ2EEHost.java:52)
       at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1651)
       at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:414)
       at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
       at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)
       at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:749)
       at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)
       at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426)
       at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:718)
       at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1170)
       at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1370)
       at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:638)
       at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:968)
       at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:769)
       at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2172)
       at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445)
       at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
       at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:388)
       at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:116)
       at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:994)
       at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:349)
       at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783)
   Caused by: java.lang.IllegalArgumentException: Null InputStream is not a valid argument
       at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:614)
       at com.ctc.wstx.stax.WstxInputFactory.createXMLStreamReader(WstxInputFactory.java:317)
       at org.apache.tuscany.sca.contribution.processor.DefaultValidatingXMLInputFactory.createXMLStreamReader(DefaultValidatingXMLInputFactory.java:213)
       at org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor.read(CompositeDocumentProcessor.java:116)
       at org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor.read(CompositeDocumentProcessor.java:56)
       at org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor.read(ExtensibleURLArtifactProcessor.java:96)
       at org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.processReadPhase(ContributionServiceImpl.java:496)
       at org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.addContribution(ContributionServiceImpl.java:391)
       ... 32 more
3. 异常分析
   从这段日志中可以看出有2个异常:

> java.lang.ClassCastException: org.apache.xml.dtm.ref.DTMManagerDefault incompatible with org.apache.xml.dtm.DTMManager
> java.lang.IllegalArgumentException: Null InputStream is not a valid argument
   查看代码发现是由于第一个异常造成了一个InputStream变量为null,从而引起第二个异常。
   对于第一个异常首先怀疑的就是2个类的类加载器不是同一个,然后通过一个test.jsp测试发现这2个类都是同一个类加载器加载并且都是在同一个jar(WEB-INF/lib/xalan-2.5.0.jar)里,
   这个测试结果不符合预期,按照这个测试结果不会出现ClassCast异常,而且异常栈里也没有发现ClassCast的具体调用位置,通过代码调试发现了异常栈如下:

   [org.apache.xml.dtm.DTMManager.newInstance(Unknown Source),
   org.apache.xpath.XPathContext.<init>(Unknown Source),
   org.apache.xpath.jaxp.XPathExpressionImpl.evaluate(Unknown Source),
   org.apache.tuscany.sca.policy.util.PolicyComputationUtils.addApplicablePolicySets(PolicyComputationUtils.java:304),
   org.apache.tuscany.sca.policy.util.PolicyComputationUtils.addApplicablePolicySets(PolicyComputationUtils.java:236),
   org.apache.tuscany.sca.policy.util.PolicyComputationUtils.addApplicablePolicySets(PolicyComputationUtils.java:349),
   org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor.read(CompositeDocumentProcessor.java:98),
   org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor.read(CompositeDocumentProcessor.java:56),
   org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor.read(ExtensibleURLArtifactProcessor.java:96),
   org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.processReadPhase(ContributionServiceImpl.java:496),
   org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.addContribution(ContributionServiceImpl.java:391),
   org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.contribute(ContributionServiceImpl.java:189),
   com.primeton.sca.host.impl.EOSSCADomain.buildContribution(EOSSCADomain.java:54),
   com.primeton.sca.host.impl.EOSSCADomain.addContribution(EOSSCADomain.java:124),
   com.primeton.ext.sca.host.ScaSystem.addContribution(ScaSystem.java:243),
   com.primeton.sca.host.impl.SCAResourceLoadListener.load(SCAResourceLoadListener.java:59),
   com.primeton.runtime.resource.impl.ResourceNotify.notifyResource(ResourceNotify.java:106),
   com.primeton.runtime.resource.impl.ApplicationResourceLoaderManager.loadApplicationResource(ApplicationResourceLoaderManager.java:38),
   com.primeton.ext.runtime.resource.startup.ResourceLoaderStartUpListener.start(ResourceLoaderStartUpListener.java:36),
   com.primeton.runtime.core.impl.RuntimeListenerManagerImpl.startListener(RuntimeListenerManagerImpl.java:43),
   com.primeton.ext.runtime.core.RuntimeManager.start(RuntimeManager.java:64),
   com.primeton.ext.runtime.core.RuntimeJ2EEHost.contextInitialized(RuntimeJ2EEHost.java:52),
   com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1651),
   com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:414),
   com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88),
   com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169),
   com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:749),
   com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634),
   com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426),
   com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:718),
   com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1170),
   com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1370),
   com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:638),
   com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:968),
   com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:769),
   com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2172),
   com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445),
   com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123),
   com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:388),
   com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:116),
   com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:994),
   com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:349),
   com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783)]

可以看到是由org.apache.xpath.XPathContext构造函数里调用了DTMManager.newInstance()。

org.apache.xpath.XPathContext是在IBM J9VM - R26_Java626_SR2_20120322_1722_B106210的bootclasspath里,而且bootclasspath中也包含org.apache.xml.dtm.DTMManager。

所以在WEB-INF/lib下又存在另一个DTMManager并且是Parent-Last的ClassLoader的情况下会造成和bootclasspath的冲突,出现ClassCast的错误。

4. 异常解决


可以删除xalan-2.5.0.jar。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值