简体   繁体   English

Apache Camel stax2 NoSuchMethodError

[英]Apache Camel stax2 NoSuchMethodError

I'm getting very weird behavior from the Apache Camel application. 我从Apache Camel应用程序中得到了非常奇怪的行为。 I'm deploying the EAR on WebLogic 12.2.1.3 server on our test environment, and everything works fine. 我正在测试环境中的WebLogic 12.2.1.3服务器上部署EAR,并且一切正常。 The EAR contains all the dependencies used by the application. EAR包含应用程序使用的所有依赖项。

However, when I deploy the same EAR to production (it deploys fine), it gives the following runtime exception during message handling: 但是,当我将相同的EAR部署到生产环境(部署良好)时,它在消息处理期间给出了以下运行时异常:

Exception occurred during execution on the exchange: Exchange[ID-napoli-34361-1518770862962-0-99], StackTrace: org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[ID-napoli-34361-1518770862962-0-99]
    at org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1790)
    at org.apache.camel.impl.DefaultExchange.setException(DefaultExchange.java:350)
    at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:141)
    at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
    at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.syncInvoke(CxfConsumer.java:220)
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.invoke(CxfConsumer.java:147)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126)
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:191)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:220)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:247)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3697)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3667)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
    at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
    at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
    at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
    at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2443)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2291)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2269)
    at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1703)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1663)
    at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272)
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:644)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:415)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:355)
Caused by: java.lang.NoSuchMethodError: org.codehaus.stax2.ri.EmptyIterator.getInstance()Lorg/codehaus/stax2/ri/EmptyIterator;
    at com.ctc.wstx.sw.OutputElementBase.getPrefixes(OutputElementBase.java:358)
    at org.apache.cxf.staxutils.StaxUtils.writeStartElement(StaxUtils.java:811)
    at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:758)
    at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:722)
    at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:214)
    at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:174)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:516)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:418)
    at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:133)
    ... 51 more
, Out: null: ]

The camel route success all the way to the cxf component, which tries to call external web service, failing for some reason and causing the exception. 骆驼将成功路由一直传递到cxf组件,该组件尝试调用外部Web服务,由于某种原因失败并导致异常。

It's the same package with same dependencies on both environments, and in the production environment weblogic I can not see any external libraries installed, which could conflict with the EAR package. 这是一个在两个环境上都具有相同依赖项的软件包,在生产环境weblogic中,我看不到安装了任何外部库,这可能与EAR软件包发生冲突。 So, how do I trace what is causing the problem? 那么,如何跟踪导致问题的原因?

This seems to be a compatibility issue between Stax and Woodstox. 这似乎是Stax和Woodstox之间的兼容性问题。

See this issue and try to fix your dependencies: https://github.com/FasterXML/woodstox/issues/10 看到此问题并尝试修复依赖性: https : //github.com/FasterXML/woodstox/issues/10

The problem was weblogic providing the following library 问题是weblogic提供以下库

oracle_common/modules/org.codehaus.woodstox.stax2-api.jar

The different version of same library was also packaged within the EAR. EAR中还打包了同一库的不同版本。 The problem was solved by setting prefer-application-packages in the deployment descriptor. 通过在部署描述符中设置prefer-application-packages解决了该问题。

It is still unknown, why the application worked in our environment without the prefer-application-packages attribute. 尚不知道为什么该应用程序在没有prefer-application-packages属性的情况下可以在我们的环境中工作。 Shouldn't it have loaded the weblogic-one in our environment too? 它是否也应该在我们的环境中加载weblogic-one? What causes the seemingly random behavior in this case? 在这种情况下,是什么导致看似随机的行为?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 CXFServlet 抛出 java.lang.NoSuchMethodError: org.codehaus.stax2.ri.EmptyIterator.getInstance()Lorg/codehaus/stax2/ri/EmptyIterator; - CXFServlet throws java.lang.NoSuchMethodError: org.codehaus.stax2.ri.EmptyIterator.getInstance()Lorg/codehaus/stax2/ri/EmptyIterator; StAX / StAX2属性在源XML中的位置 - StAX/StAX2 attributes' location in source XML 无法获取stax2 java软件包的版本 - Unable to get version for stax2 java package 如何使用stax / stax2获取XML元素路径? - How to get XML element path using stax/stax2? 使用Woodstox / Stax2编写XML时验证失败 - Validation fails when writing XML with Woodstox / Stax2 NoClassDefFoundError:使用杰克逊的org / codehaus / stax2 / ri / Stax2WriterAdapter - NoClassDefFoundError: org/codehaus/stax2/ri/Stax2WriterAdapter using jackson Apache Camel抛出java.lang.NoSuchMethodError:org.apache.camel.util.ObjectHelper.notNull - Apache Camel throws java.lang.NoSuchMethodError: org.apache.camel.util.ObjectHelper.notNull Woodstox Stax2 XML W3C Schema验证-唯一约束问题 - Woodstox Stax2 XML W3C Schema validation - unique constraint issue 我应该如何针对W3架构使用Stax2验证API - How should I use Stax2 Validation API against a W3 Schema 使用stax2 XMLInputFactory2时如何转换输入流? - How can I transform input stream when I'm using stax2 XMLInputFactory2?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM