butek       02/02/20 08:49:53

  Modified:    java/src/org/apache/axis/client Stub.java
               java/src/org/apache/axis/wsdl/toJava JavaStubWriter.java
  Log:
  Make type mapping registration in the stubs thread safe.
  
  Revision  Changes    Path
  1.5       +16 -0     xml-axis/java/src/org/apache/axis/client/Stub.java
  
  Index: Stub.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Stub.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Stub.java 20 Feb 2002 13:55:19 -0000      1.4
  +++ Stub.java 20 Feb 2002 16:49:53 -0000      1.5
  @@ -97,6 +97,22 @@
       protected URL        cachedEndpoint     = null;
       protected Integer    cachedTimeout      = null;
   
  +    // Flag to determine whether this is the first call to register type mappings.
  +    // firstCallLock is used to access this in a thread-safe manner.
  +    private boolean firstCall     = true;
  +    private Object  firstCallLock = new Object();
  +
  +    /**
  +     * Is this the first time the type mappings are being registered?
  +     */
  +    protected boolean firstCall() {
  +        synchronized (firstCallLock) {
  +            boolean ret = firstCall;
  +            firstCall = false;
  +            return ret;
  +        }
  +    } // firstCall
  +
       /**
        * Sets the value for a named property. JAX-RPC 1.0 specification 
        * specifies a standard set of properties that may be passed 
  
  
  
  1.33      +1 -3      
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
  
  Index: JavaStubWriter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- JavaStubWriter.java       20 Feb 2002 13:55:20 -0000      1.32
  +++ JavaStubWriter.java       20 Feb 2002 16:49:53 -0000      1.33
  @@ -133,7 +133,6 @@
               pw.println("    private java.util.Vector cachedSerQNames = new 
java.util.Vector();");
               pw.println("    private java.util.Vector cachedSerFactories = new 
java.util.Vector();");
               pw.println("    private java.util.Vector cachedDeserFactories = new 
java.util.Vector();");
  -            pw.println("    private boolean firstCall = true;");
           }
           pw.println();
   
  @@ -199,8 +198,7 @@
               pw.println("            // The type mapping information is actually 
registered in");
               pw.println("            // the TypeMappingRegistry of the service, 
which");
               pw.println("            // is the reason why registration is only 
needed for the first call.");
  -            pw.println("            if (firstCall) {");
  -            pw.println("                firstCall = false;");
  +            pw.println("            if (firstCall()) {");
               pw.println("                for (int i = 0; i < 
cachedSerFactories.size(); ++i) {");
               pw.println("                    Class cls = (Class) 
cachedSerClasses.get(i);");
               pw.println("                    javax.xml.rpc.namespace.QName qName =");
  
  
  


Reply via email to