Bug with concurrent soap requests and aegis
-------------------------------------------
Key: XFIRE-773
URL: http://jira.codehaus.org/browse/XFIRE-773
Project: XFire
Issue Type: Bug
Components: Aegis Module
Affects Versions: 1.2.2
Environment: win xp, jdk-1.5.0_06, apache-tomcat-5.5.17, spring-1.2.6,
httpclient-3.0.1
Reporter: Jose Dillet
Assigned To: Dan Diephouse
Attachments: testWS.war, WS Test.jmx
I'm getting some problems when I launch some concurrent requests to a web
service made using xfire and spring.
I have a simple service (MyService) with a method (testService) that returns an
object (MyObject).
I test it launching some concurrent requests using JMeter (jmeter -n -t "WS
Test.jmx").
With this test, sometime I get the following exception:
2006-11-22 17:53:16,078 ERROR [org.codehaus.xfire.handler.DefaultFaultHandler]
Fault occurred!
java.util.ConcurrentModificationException
at
java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
at java.util.AbstractList$Itr.next(AbstractList.java:420)
at
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:394)
at
org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:200)
at
org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:273)
at
org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:89)
at
org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:80)
at
org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:56)
at
org.codehaus.xfire.transport.http.XFireServletChannel.sendViaServlet(XFireServletChannel.java:85)
at
org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:44)
at
org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at
org.codehaus.xfire.service.binding.PostInvocationHandler.invoke(PostInvocationHandler.java:36)
at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
at
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
at
org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:301)
at
org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:130)
at
org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
or, sometimes I get this other exception:
Fault occurred!
org.codehaus.xfire.XFireRuntimeException: Couldn't get property null from bean
[EMAIL PROTECTED] Nested exception is java.lang.NullPointerException: null
java.lang.NullPointerException
at
org.codehaus.xfire.aegis.type.basic.BeanType.readProperty(BeanType.java:461)
at
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:402)
at
org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:200)
at
org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:273)
at
org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:89)
at
org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:80)
at
org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:56)
at
org.codehaus.xfire.transport.http.XFireServletChannel.sendViaServlet(XFireServletChannel.java:85)
at
org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:44)
at
org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at
org.codehaus.xfire.service.binding.PostInvocationHandler.invoke(PostInvocationHandler.java:36)
at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
at
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
at
org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:301)
at
org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:130)
at
org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
and sometimes it ends without any exception. Also, when I get an exception, and
I try to access to wsdl file, sometimes I get another exception, or sometimes
the definition of the object MyObject returned is wrong, because every field is
repeated many times.
I guess that problem is related to aegis configuration, because if I delete
file MyObject.aegis.xml, then I never get these errors. Unfortunately, not all
executions end with an exception, but launching it several times leads to
finally get some of these exceptions.
In testService I have added a sleep, to slow the execution of the method. In my
real project, there is no sleep, but my service method is heavier, so I put the
sleep to emulate the behaviour of my real service.
I attach a war with a complete test application, a a jmx file to test the
application with JMeter (launching 30 concurrent threads)
Hope you can reproduce the bug.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email