You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Marc Giger (JIRA)" <ji...@apache.org> on 2008/04/30 21:11:55 UTC

[jira] Commented: (CXF-1560) EndpointReferenceUtils.getSchema threading issue

    [ https://issues.apache.org/jira/browse/CXF-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12593410#action_12593410 ] 

Marc Giger commented on CXF-1560:
---------------------------------

Hi Daniel,
My patch was not meant to apply as is. It just should show the problematic code part, and the possible solution;-)
Your patch works as expected.

Is your patch against cxf-2.1? I've tested it with cxf-2.0.6

Thanks

> EndpointReferenceUtils.getSchema threading issue
> ------------------------------------------------
>
>                 Key: CXF-1560
>                 URL: https://issues.apache.org/jira/browse/CXF-1560
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.6
>            Reporter: Marc Giger
>            Assignee: Daniel Kulp
>         Attachments: cxf-1560.patch, cxf-2.0.6-threading-issue.patch
>
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.