AxisService name not unique enough
----------------------------------

                 Key: AXIS2-3400
                 URL: https://issues.apache.org/jira/browse/AXIS2-3400
             Project: Axis 2.0 (Axis2)
          Issue Type: Improvement
          Components: kernel
    Affects Versions: 1.3
            Reporter: David Poon


The generated (client) stub implementation's populateAxisService() method 
creates the AxisService name using Object.hashCode() as a means to "ensure" 
uniqueness, for example:

//creating the Service with a unique name
_service = new org.apache.axis2.description.AxisService("IsisLocation" + 
this.hashCode());

In our performance and stress test runs, we find that from time to time, 
"duplicate name found" errors would occur. We reuse the same configuration 
context instance over multiple client service invocations. The javadoc of 
java.lang.Object.hashCode() states that:

"... It is not required that if two objects are unequal according to the 
java.lang.Object.equals(java.lang.Object) method, then calling the hashCode 
method on each of the two objects must produce distinct integer results. ... As 
much as is reasonably practical, the hashCode method defined by class Object 
does return distinct integers for distinct objects. (This is typically 
implemented by converting the internal address of the object into an integer, 
but this implementation technique is not required by the JavaTM programming 
language.)"

In essence uniqueness is not guaranteed.

Even though the Stub's finalize() method calls its own cleanup() method (which 
would remove the AxisService name), it is still possible for a duplicate name 
being generated whilst the other Stub is still in use (by another thread).

Perhaps in addition to using hashCode(), a static incrementing counter could be 
appended to the generated name as well?

-- 
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]

Reply via email to