Author: darran.lofthouse(a)jboss.com
Date: 2009-06-22 10:35:08 -0400 (Mon, 22 Jun 2009)
New Revision: 10216
Modified:
stack/native/branches/dlofthouse/JBWS-2681/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java
Log:
Synchronize on initialization to eliminate concurrency related failures.
Modified:
stack/native/branches/dlofthouse/JBWS-2681/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java
===================================================================
---
stack/native/branches/dlofthouse/JBWS-2681/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java 2009-06-22
14:34:35 UTC (rev 10215)
+++
stack/native/branches/dlofthouse/JBWS-2681/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java 2009-06-22
14:35:08 UTC (rev 10216)
@@ -182,7 +182,7 @@
// com/sun/ts/tests/jaxws/api/javax_xml_ws/Service#GetPort1NegTest1WithWsdl
EndpointMetaData epMetaData = serviceMetaData.getEndpoint(portName);
- if (serviceMetaData.getEndpoints().size() > 0 && epMetaData == null)
+ if (epMetaData == null && serviceMetaData.getEndpoints().size() > 0)
throw new WebServiceException("Cannot get port meta data for: " +
portName);
// This is the case when the service could not be created from wsdl
@@ -265,9 +265,15 @@
// Adjust the endpoint meta data according to the annotations
if (annotatedPorts.contains(portName) == false)
{
- JAXWSClientMetaDataBuilder metaDataBuilder = new JAXWSClientMetaDataBuilder();
- metaDataBuilder.rebuildEndpointMetaData(epMetaData, seiClass);
- annotatedPorts.add(portName);
+ synchronized (epMetaData)
+ {
+ if (annotatedPorts.contains(portName) == false)
+ {
+ JAXWSClientMetaDataBuilder metaDataBuilder = new
JAXWSClientMetaDataBuilder();
+ metaDataBuilder.rebuildEndpointMetaData(epMetaData, seiClass);
+ annotatedPorts.add(portName);
+ }
+ }
}
return (T)createProxy(seiClass, epMetaData);
Show replies by date