Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-1560

EndpointReferenceUtils.getSchema threading issue

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.6
    • Fix Version/s: 2.1.1, 2.0.7
    • Component/s: Core
    • Labels:
      None

      Description

      After the first time the service is started and the service is invoked in parallel with multiple threads I get the following
      stacktrace and the service returns a soap-fault:

      30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
      INFO: Interceptor has thrown exception, unwinding now
      java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
      at java.util.Vector.elementAt(Vector.java:427)
      at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
      at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
      at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
      at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeChoice(XmlSchemaSerializer.java:1229)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:917)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
      at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
      at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
      at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
      at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
      at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
      at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
      at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
      at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
      at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
      at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
      at org.apache.cxf.transport.local.LocalConduit.dispatchDirect(LocalConduit.java:100)
      at org.apache.cxf.transport.local.LocalConduit.close(LocalConduit.java:71)
      at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
      at org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:130)
      at org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
      at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:248)
      at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:170)
      at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:59)
      at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:53)
      at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
      at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143)
      at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87)
      at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
      at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
      at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
      at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
      at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
      at org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:59)
      at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor$1.run(MessageInvokerInterceptor.java:51)
      at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
      at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor.handleMessage(MessageInvokerInterceptor.java:71)
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
      at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
      at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
      at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
      at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
      at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
      at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
      at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
      at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
      at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.Server.handle(Server.java:324)
      at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
      at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
      at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
      at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
      30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
      INFO: Interceptor has thrown exception, unwinding now
      java.lang.ArrayIndexOutOfBoundsException: 6 >= 0
      at java.util.Vector.elementAt(Vector.java:427)
      at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
      at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
      at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
      at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:989)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:913)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
      at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
      at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
      at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
      at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
      at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
      at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
      at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
      at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
      at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
      at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
      ...
      ...
      ...

      If I invoke a fresh started service once with a single thread and after that with multiple threads it works fine.

      The attached patch fixes that but I'm not sure if it's the right place and who is at fault here. The overhead by this patch should be minimal.

        Attachments

        1. cxf-1560.patch
          12 kB
          Daniel Kulp
        2. cxf-2.0.6-threading-issue.patch
          0.7 kB
          Marc Giger

          Activity

            People

            • Assignee:
              dkulp Daniel Kulp
              Reporter:
              gigerstyle Marc Giger
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: