[ 
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]

Reply via email to