Author: veithen
Date: Mon Jul 6 19:01:34 2015
New Revision: 1689477
URL: http://svn.apache.org/r1689477
Log:
Fix another concurrency issue similar to AXIS-2850 and ensure that stubs are
thread safe.
Modified:
axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java
axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java
Modified:
axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java?rev=1689477&r1=1689476&r2=1689477&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java
(original)
+++
axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java
Mon Jul 6 19:01:34 2015
@@ -432,11 +432,14 @@ public abstract class Stub implements ja
* @return
*/
public Call _createCall() throws ServiceException {
- _call = (Call) service.createCall();
+ // A single stub instance may be used concurrently by multiple
threads; therefore we need
+ // to return the value of the local call variable instead of reading
the _call attribute.
+ Call call = (Call) service.createCall();
+ _call = call;
// TODO: There is a lot of code in the generated stubs that
// can be moved here.
- return _call;
+ return call;
}
/**
Modified:
axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java?rev=1689477&r1=1689476&r2=1689477&view=diff
==============================================================================
---
axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java
(original)
+++
axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java
Mon Jul 6 19:01:34 2015
@@ -46,7 +46,7 @@ public class MultithreadTestCase extends
private void testMultithreading(StubSupplier stubSupplier) throws
Throwable {
Report report = new Report();
final int numThreads = 50;
- final int numInvocations = 4;
+ final int numInvocations = 10;
CountDownLatch readyLatch = new CountDownLatch(numThreads);
CountDownLatch startLatch = new CountDownLatch(1);
Thread[] threads = new Thread[numThreads];