axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Barry Lagerweij" <ba...@barito.nl>
Subject Pending axis fixes
Date Mon, 08 Apr 2002 11:00:17 GMT
Hello all,

I've made a few modifications to Axis, which addresses a few issues that
we've encountered. If possible, I'ld like to see these changes included in
the main-tree.

The changes include the following:
1) Inherited interfaces do not work (bug #7722)
2) Java2WSDL does not support inherited methods (bug #7718)
3) AxisClient re-uses session-cookies
4) Axis uses wrong classloader.

The first two bugs are reported to bugzilla, the third/fourth one is not
(yet). When Axis is maintaining session-info, it does this for *ALL*
services. When I create a new Service object, the session-cookies are
re-used. This means that all AxisClients share the same SOAP-session (!!!)
on the server.

To fix this, I've made the following changes to Service.java and Call.java :

- Service.java now has a 'Transport' member, and getTransport() and
setTransport().
- Call.java now tries to get the Transport from the Service, instead of
using the Hashtable with TransportImpls:
            // Do we already have a transport for this address?
-            //Transport transport = (Transport)
transportImpls.get(address);
+            Transport transport = service.getTransport();

and later:
-                //transportImpls.put(address, transport);
+                service.setTransport(transport);

As you can see, there was a Hashtable of transports _GLOBALLY_ (static).
When two different Service objects are trying to call the same URL-Address,
they share the session-cookie !

The 4th bug involves the ClassLoader per MessageContext. I'm wondering why
we need a ClassLoader per MessageContext when one is not using .JWS support
? The current implementation in MessageContext uses the
Thread.currentThread().getContextClassLoader(). This ussually works, but in
a webserver environment (I'm using Oracle OC4J / OrionServer), this screws
up sometimes. I ended up with classes that were loaded by the ClassLoader in
another J2EE application, which caused a lot of ClassCastExceptions. I'm not
sure why we need to worry about ClassLoaders (there must be a very good
reason for it), but when I turn it off inside MessageContext.java, my
application works like a charm !

I hope that these changes will improve the quality of Axis, and help other
people that encountered the same issues as I have. Keep up the good work !

With kind regards,

Barry Lagerweij


Mime
View raw message