Hi all,
I am geting the following exception periodically when axis server tries to
deserialize incoming requests.
It happens at a relatively low rate (20 times a day out of heavy load traffic,
like 5M calls).
From the code, it looks like TypeDesc class is not thread-safe, as inside
getFieldNameForElement(), multiple threads executing this method could
potentially be accessing the private member fieldElementMap hashmap at the same
time (get() and put()), which results in concurrent modification exception. So
this looks like a threading poblem inside Axis1.x framework.
Has anyone encounter this same problem? Any advice on how to resolve this?
I am using Axis1.1 (but i see Axis1.3 also has the exact same code there)
thanks
gary
st=java.util.ConcurrentModificationException: concurrent access to HashMap
attempted by Thread[http-0.0.0.0-8080-Processor107,5,main]
at java.util.HashMap.onEntry(HashMap.java:214)
at java.util.HashMap.transfer(HashMap.java:686)
at java.util.HashMap.resize(HashMap.java:676)
at java.util.HashMap.addEntry(HashMap.java:1049)
at java.util.HashMap.put(HashMap.java:561)
at
org.apache.axis.description.TypeDesc.getFieldNameForElement(TypeDesc.java:355)
at
org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:209)
at
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:963)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:722)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:184)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:333)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:481)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:323)
at org.apache.axis.transport.http.AxisServlet.doPostOrGet(AxisServlet.java:954)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:816)