[
https://issues.apache.org/jira/browse/AXIS2-4819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andreas Veithen updated AXIS2-4819:
-----------------------------------
Fix Version/s: 1.5.4
Targeting this one for 1.5.4.
> Race condition in WSDLDataLocator
> ---------------------------------
>
> Key: AXIS2-4819
> URL: https://issues.apache.org/jira/browse/AXIS2-4819
> Project: Axis2
> Issue Type: Bug
> Components: wsdl
> Affects Versions: 1.4.1
> Reporter: Ivan Dubrov
> Fix For: 1.5.4
>
>
> Observable behaviour:
> Sometimes WSDL request returns wrong WSDL. This occurs when multiple WSDL
> requests are made at the same time.
> The cause:
> org.apache.axis2.dataretrieval.WSDLDataLocator is created only once and
> reused in a multiple requests (see DataLocatorFactory, static method
> createDataLocator. The problem is that DataLocator contains a state that is
> changed during the request, most importantly the field "theService". It is
> possible that two concurrent WSDL request are processed at the same time and
> one request overrides theService field set by other request. Consider the
> following scenario:
> 1. Both requests arrive (at the same time) at the line 129 (I assume version
> 1.4.1), which read:
> <pre>
> axisService2WOM = new AxisService2WSDL11(theService);
> </pre>
> 2. Both requests start executing the line (reading theService field).
> 3. Since WSDLDataLocator is shared between those two requests and theService
> is field of that class, both requests will use same AxisService to generate
> WSDL. As a result, both requests will output the same WSDL, which is
> obviously wrong.
> I don't understand, why theService is made field after all? I think, it
> should be a local variable instead.
--
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]