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
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.
-
You can reply to this email to add a comment to the issue online.