You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Dennis Sosnoski (JIRA)" <ji...@apache.org> on 2011/02/21 10:56:38 UTC

[jira] Resolved: (CXF-3273) WS-RM ConcurrentModificationException from unsynchronized use of SequenceAcknowledgement

     [ https://issues.apache.org/jira/browse/CXF-3273?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dennis Sosnoski resolved CXF-3273.
----------------------------------

       Resolution: Fixed
    Fix Version/s: 2.4

Synchronized all use of collections in WS-RM acknowledgement processing (revision 1072914).

> WS-RM ConcurrentModificationException from unsynchronized use of SequenceAcknowledgement
> ----------------------------------------------------------------------------------------
>
>                 Key: CXF-3273
>                 URL: https://issues.apache.org/jira/browse/CXF-3273
>             Project: CXF
>          Issue Type: Bug
>          Components: WS-* Components
>    Affects Versions: 2.3.2
>            Reporter: Dennis Sosnoski
>             Fix For: 2.4
>
>
> The WS-RM code needs to use synchronized blocks for both modifying and accessing SequenceAcknowledgement. Currently the code appears to use synchronized blocks for modifying SequenceAcknowledgement information, but not for reading it (for example in RMSoapInterceptor.encode(SoapMessage, RMProperties), where the SequenceAcknowledgement is serialized to XML). This can result in ConcurrentModificationException:
>      [java] java.util.ConcurrentModificationException
>      [java]     at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
>      [java]     at java.util.AbstractList$Itr.next(AbstractList.java:420)
>      [java]     at com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister$1.next(Lister.java:284)
>      [java]     at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:135)
>      [java]     at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:155)
>      [java]     at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340)
>      [java]     at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696)
>      [java]     at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:152)
>      [java]     at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:189)
>      [java]     at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:316)
>      [java]     at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:323)
>      [java]     at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:72)
>      [java]     at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494)
>      [java]     at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
>      [java]     at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
>      [java]     at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:109)
>      [java]     at org.apache.cxf.ws.rm.soap.RMSoapInterceptor.encodeProperty(RMSoapInterceptor.java:396)
>      [java]     at org.apache.cxf.ws.rm.soap.RMSoapInterceptor.encode(RMSoapInterceptor.java:206)
>      [java]     at org.apache.cxf.ws.rm.soap.RMSoapInterceptor.encode(RMSoapInterceptor.java:154)
>      [java]     at org.apache.cxf.ws.rm.soap.RMSoapInterceptor.mediate(RMSoapInterceptor.java:138)
>      [java]     at org.apache.cxf.ws.rm.soap.RMSoapInterceptor.handleMessage(RMSoapInterceptor.java:126)
>      [java]     at org.apache.cxf.ws.rm.soap.RMSoapInterceptor.handleMessage(RMSoapInterceptor.java:93)
>      [java]     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
>      [java]     at org.apache.cxf.ws.addressing.ContextUtils.rebaseResponse(ContextUtils.java:403)
>      [java]     at org.apache.cxf.ws.addressing.MAPAggregator.mediate(MAPAggregator.java:547)
>      [java]     at org.apache.cxf.ws.addressing.MAPAggregator.handleMessage(MAPAggregator.java:227)
>      [java]     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
>      [java]     at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
>      [java]     at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:311)
>      [java]     at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:280)
>      [java]     at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)
>      [java]     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:922)
>      [java]     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:860)
>      [java]     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>      [java]     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
>      [java]     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114)
>      [java]     at org.eclipse.jetty.server.Server.handle(Server.java:352)
>      [java]     at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596)
>      [java]     at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1066)
>      [java]     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805)
>      [java]     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:212)
>      [java]     at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426)
>      [java]     at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510)
>      [java]     at org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34)
>      [java]     at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
>      [java]     at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450)
>      [java]     at java.lang.Thread.run(Thread.java:595)

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira