[
https://issues.apache.org/jira/browse/AXIS-2272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12844770#action_12844770
]
Dave Morehouse II commented on AXIS-2272:
-----------------------------------------
I've found a path to reproduce. On a multi-core/processor server I can cause
this issue to happen every time. Using Tomcat, simple issue several requests
for the list of Web Services page BEFORE the server is started. This will
cause multiple methods to be generated in JavaServiceDesc, due to a race
condition. Below I've included the stack traces that show multiple threads
updating the JavaServiceDesc at the same time. I was able to reproduce this
issue using a simple wget script that launched 3 instances of wget hitting
http://localhost:8080/services/
The fix for this issue is to add synchronized to the public
loadServiceDescription methods. This prevents multiple threads from updating
the internal state of the JavaServiceDesc at the same time. Since the
JavaServiceDesc is cached, once the JavaServiceDesc is in a bad state, all WSDL
generated will continue to be incorrect until the next server restart.
{noformat}
http-808...@15af daemon, priority=5, in group 'main', status: 'RUNNING'
at
org.apache.axis.description.JavaServiceDesc.addOperationDesc(JavaServiceDesc.java:382)
at
org.apache.axis.description.JavaServiceDesc.createOperationForMethod(JavaServiceDesc.java:1,290)
at
org.apache.axis.description.JavaServiceDesc.createOperationsForName(JavaServiceDesc.java:1,150)
at
org.apache.axis.description.JavaServiceDesc.getSyncedOperationsForName(JavaServiceDesc.java:1,112)
at
org.apache.axis.description.JavaServiceDesc.loadServiceDescByIntrospectionRecursive(JavaServiceDesc.java:962)
at
org.apache.axis.description.JavaServiceDesc.loadServiceDescByIntrospection(JavaServiceDesc.java:896)
at
org.apache.axis.providers.java.JavaProvider.initServiceDesc(JavaProvider.java:477)
at
org.apache.axis.handlers.soap.SOAPService.getInitializedServiceDesc(SOAPService.java:286)
at
org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:500)
at
org.apache.axis.deployment.wsdd.WSDDDeployment.getDeployedServices(WSDDDeployment.java:503)
at
org.apache.axis.configuration.FileProvider.getDeployedServices(FileProvider.java:296)
at
org.apache.axis.transport.http.AxisServlet.reportAvailableServices(AxisServlet.java:482)
at
org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:260)
at
com.gearworks.servlet.GearworksAxisServlet.doGet(GearworksAxisServlet.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at
com.gearworks.servlet.GearworksAxisServlet.doGet(GearworksAxisServlet.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.WebServiceAuthentificatorFilter.doFilter(WebServiceAuthentificatorFilter.java:83)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.RequestThrottleFilter.doFilter(RequestThrottleFilter.java:60)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.ContentLengthServletFilter.doFilter(ContentLengthServletFilter.java:85)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.servlet.LoggingFilter.doFilter(LoggingFilter.java:126)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.WebServiceRedirectFilter.doFilter(WebServiceRedirectFilter.java:59)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
http-808...@159d daemon, priority=5, in group 'main', status: 'RUNNING'
at
org.apache.axis.description.JavaServiceDesc.addOperationDesc(JavaServiceDesc.java:382)
at
org.apache.axis.description.JavaServiceDesc.createOperationForMethod(JavaServiceDesc.java:1,290)
at
org.apache.axis.description.JavaServiceDesc.createOperationsForName(JavaServiceDesc.java:1,150)
at
org.apache.axis.description.JavaServiceDesc.getSyncedOperationsForName(JavaServiceDesc.java:1,112)
at
org.apache.axis.description.JavaServiceDesc.loadServiceDescByIntrospectionRecursive(JavaServiceDesc.java:962)
at
org.apache.axis.description.JavaServiceDesc.loadServiceDescByIntrospection(JavaServiceDesc.java:896)
at
org.apache.axis.description.JavaServiceDesc.loadServiceDescByIntrospection(JavaServiceDesc.java:846)
at
org.apache.axis.description.JavaServiceDesc.getOperations(JavaServiceDesc.java:410)
at
org.apache.axis.transport.http.AxisServlet.reportAvailableServices(AxisServlet.java:510)
at
org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:260)
at
com.gearworks.servlet.GearworksAxisServlet.doGet(GearworksAxisServlet.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at
com.gearworks.servlet.GearworksAxisServlet.doGet(GearworksAxisServlet.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.WebServiceAuthentificatorFilter.doFilter(WebServiceAuthentificatorFilter.java:83)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.RequestThrottleFilter.doFilter(RequestThrottleFilter.java:60)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.ContentLengthServletFilter.doFilter(ContentLengthServletFilter.java:85)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.servlet.LoggingFilter.doFilter(LoggingFilter.java:126)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.WebServiceRedirectFilter.doFilter(WebServiceRedirectFilter.java:59)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
http-808...@158a daemon, priority=5, in group 'main', status: 'RUNNING'
at
org.apache.axis.description.JavaServiceDesc.addOperationDesc(JavaServiceDesc.java:382)
at
org.apache.axis.description.JavaServiceDesc.createOperationForMethod(JavaServiceDesc.java:1,290)
at
org.apache.axis.description.JavaServiceDesc.createOperationsForName(JavaServiceDesc.java:1,150)
at
org.apache.axis.description.JavaServiceDesc.getSyncedOperationsForName(JavaServiceDesc.java:1,112)
at
org.apache.axis.description.JavaServiceDesc.loadServiceDescByIntrospectionRecursive(JavaServiceDesc.java:962)
at
org.apache.axis.description.JavaServiceDesc.loadServiceDescByIntrospection(JavaServiceDesc.java:896)
at
org.apache.axis.providers.java.JavaProvider.initServiceDesc(JavaProvider.java:477)
at
org.apache.axis.handlers.soap.SOAPService.getInitializedServiceDesc(SOAPService.java:286)
at
org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:500)
at
org.apache.axis.deployment.wsdd.WSDDDeployment.getDeployedServices(WSDDDeployment.java:503)
at
org.apache.axis.configuration.FileProvider.getDeployedServices(FileProvider.java:296)
at
org.apache.axis.transport.http.AxisServlet.reportAvailableServices(AxisServlet.java:482)
at
org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:260)
at
com.gearworks.servlet.GearworksAxisServlet.doGet(GearworksAxisServlet.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at
com.gearworks.servlet.GearworksAxisServlet.doGet(GearworksAxisServlet.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.WebServiceAuthentificatorFilter.doFilter(WebServiceAuthentificatorFilter.java:83)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.RequestThrottleFilter.doFilter(RequestThrottleFilter.java:60)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.ContentLengthServletFilter.doFilter(ContentLengthServletFilter.java:85)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.servlet.LoggingFilter.doFilter(LoggingFilter.java:126)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.gearworks.webservice.security.servlet.WebServiceRedirectFilter.doFilter(WebServiceRedirectFilter.java:59)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
{noformat}
> Duplicated operation names
> --------------------------
>
> Key: AXIS-2272
> URL: https://issues.apache.org/jira/browse/AXIS-2272
> Project: Axis
> Issue Type: Bug
> Components: WSDL processing
> Affects Versions: 1.2.1
> Environment: Server - jakarta tomcat 5.0.28, spring framework 1.2.5
> OS - Windows server 2003
> Java - java full version "1.4.2_07-b05"
> Client - Macromedia flex running in MS IE 6.0
> Reporter: Alex Grivnin
> Attachments: axis.zip
>
>
> Axis generates invalid WSDL - more specifically operation names appears to be
> duplicated in WSDL.
> This happens sporadically and I do not have a specific scenario to reproduce
> it. But I'll try to describe the application flow and may be it will provide
> some hint...
> Our application runs on a Tomcat server 5.0.28, it uses spring framework
> 1.2.5 for binding Axis beans which are exposed to the client. See wsdd
> fragment at the end of the message as well as spring context.
> At some point client (Macromedia flesh) requests wsdl before calling a web
> service and gets an exception that fetched WSDL is not supported (as it
> contains duplicated operation names).
> Configuration files:
> --------------------------
> ------- WSDD fragment ----------
> <service name="filtersWS" provider="Handler" style="java:RPC">
> <parameter name="handlerClass"
> value="com.mercury.onyx.client.services.axis.SpringBeanRPCProvider"/>
> <parameter name="methodName"
> value="deleteFilter,getFilter,saveUserFilter,getUserViews,getUserFilterCategories"/>
> <parameter name="springBean" value="filtersWS"/>
> <beanMapping
> languageSpecificType="java:com.mercury.onyx.client.services.vo.FilterCategoryVO"
> qname="ns3:FilterCategoryVO" xmlns:ns3="someNamespace"/>
> <beanMapping
> languageSpecificType="java:com.mercury.onyx.client.services.vo.FilterVO"
> qname="ns3:FilterVO" xmlns:ns3="someNamespace"/>
> <beanMapping
> languageSpecificType="java:com.mercury.onyx.client.services.vo.FilterDefinitionVO"
> qname="ns3:FilterDefinitionVO" xmlns:ns3="someNamespace"/>
> <beanMapping
> languageSpecificType="java:com.mercury.onyx.client.services.vo.FilterConstraintVO"
> qname="ns3:FilterConstraintVO" xmlns:ns3="someNamespace"/>
> <beanMapping
> languageSpecificType="java:com.mercury.onyx.client.services.vo.ViewVO"
> qname="ns3:ViewVO" xmlns:ns3="someNamespace"/>
> <beanMapping
> languageSpecificType="java:com.mercury.onyx.client.services.vo.AttributeVO"
> qname="ns3:AttributeVO" xmlns:ns3="someNamespace"/>
> </service>
> ------- End of WSDD fragment ----------
> ------- Spring bean context -------------
> <bean id="filtersWS"
> class="com.mercury.onyx.client.services.webservices.FiltersWS">
> <property name="filterDAO">
> <ref bean="filterDAO"/>
> </property>
> <property name="viewDAO">
> <ref bean="viewDAO"/>
> </property>
> <property name="userDAO">
> <ref bean="userDAO"/>
> </property>
> </bean>
> ------- End of Spring bean context -------------
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]