[jboss-cvs] JBossAS SVN: r79039 - branches/JBoss_4_0_3_SP1_CP/jaxrpc/src/main/org/jboss/axis.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Oct 2 12:38:09 EDT 2008
Author: darran.lofthouse at jboss.com
Date: 2008-10-02 12:38:09 -0400 (Thu, 02 Oct 2008)
New Revision: 79039
Modified:
branches/JBoss_4_0_3_SP1_CP/jaxrpc/src/main/org/jboss/axis/AxisProperties.java
Log:
[ASPATCH-391] Web Service JAX-RPC Service Initialisation Not ThreadSafe.
Modified: branches/JBoss_4_0_3_SP1_CP/jaxrpc/src/main/org/jboss/axis/AxisProperties.java
===================================================================
--- branches/JBoss_4_0_3_SP1_CP/jaxrpc/src/main/org/jboss/axis/AxisProperties.java 2008-10-02 16:21:27 UTC (rev 79038)
+++ branches/JBoss_4_0_3_SP1_CP/jaxrpc/src/main/org/jboss/axis/AxisProperties.java 2008-10-02 16:38:09 UTC (rev 79039)
@@ -69,6 +69,8 @@
{
private static Logger log = Logger.getLogger(AxisProperties.class.getName());
+ // A lock to control static initialisation of altNameDiscoverer
+ private static final Object lock = new Object();
private static DiscoverNamesInAlternateManagedProperties altNameDiscoverer;
private static DiscoverMappedNames mappedNames;
private static NameDiscoverers nameDiscoverer;
@@ -94,11 +96,21 @@
{
if (nameDiscoverer == null)
{
- nameDiscoverer = new NameDiscoverers();
- nameDiscoverer.addResourceNameDiscover(getAlternatePropertyNameDiscoverer());
- nameDiscoverer.addResourceNameDiscover(new DiscoverNamesInManagedProperties());
- nameDiscoverer.addResourceNameDiscover(new DiscoverServiceNames(getClassLoaders()));
- nameDiscoverer.addResourceNameDiscover(getMappedNames());
+ synchronized (lock)
+ {
+ // Double check, we may have been waiting to obtain the lock while another thread was initialising.
+ if (nameDiscoverer == null)
+ {
+ NameDiscoverers nameDiscoverer = new NameDiscoverers();
+ nameDiscoverer.addResourceNameDiscover(getAlternatePropertyNameDiscoverer());
+ nameDiscoverer.addResourceNameDiscover(new DiscoverNamesInManagedProperties());
+ nameDiscoverer.addResourceNameDiscover(new DiscoverServiceNames(getClassLoaders()));
+ nameDiscoverer.addResourceNameDiscover(getMappedNames());
+
+ // Only make available once fully initialised.
+ AxisProperties.nameDiscoverer = nameDiscoverer;
+ }
+ }
}
return nameDiscoverer;
}
More information about the jboss-cvs-commits
mailing list