You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by "Dave Morehouse II (JIRA)" <ax...@ws.apache.org> on 2010/03/13 01:17:27 UTC

[jira] Commented: (AXIS-2272) Duplicated operation names

    [ 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-8080-3@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-8080-2@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-8080-1@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: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org