[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[wtp-dev] Fw: [Bug 105335] Axis on Tomcat 4.1 does not work


A heads up: Bug 105335 opened by Jeff represents a critical issue between Axis 1.2.1 and Tomcat 4.1. We will have to fix this somehow before releasing WTP 0.7. We are working on this and are hopeful of making a cheap and tactical fix as described by Jeff in the bug. Worst case is we revert to Axis 1.1.

Cheers - CB.

Chris Brealey
Senior Advisory Technical Manager, Rational Java Web Services, IBM Canada Ltd.
D3-275, D3/ENX/8200/MKM, 8200 Warden Avenue, Markham, Ontario, Canada, L6G 1C7
cbrealey@xxxxxxxxxx, 905.413.6038, tieline:969.6038, fax:905.413.4920

----- Forwarded by Chris Brealey/Toronto/IBM on 07/27/2005 01:21 PM -----
bugzilla-daemon@xxxxxxxxxxx

07/27/2005 12:48 PM

To
Chris Brealey/Toronto/IBM@IBMCA
cc
Subject
[Bug 105335] Axis on Tomcat 4.1 does not work





https://bugs.eclipse.org/bugs/show_bug.cgi?id=105335





------- Additional Comments From jeffliu@xxxxxxxxxx  2005-07-27 12:48 -------
The problem is that when the WS wizard invokes the Java2WSDLAxisAnt task, the
task itself will construct an AntClassLoader around the classpath that the WS
wizard passes into the task.

In a Tomcat 4.1 scenario, the classpath contains activation.jar and mail.jar,
whereas, in a Tomcat 5.0 scenario, the classpath does NOT contain the two jars.

After the AntClassLoader is constructed, Axis will CACHE this classloader in a
class call ClassUtils. Later on, when the TypeMappingRegistry is initialized,
the TypeMappingRegistry will determine whether type mapping for attachment is
needed. The way this is determined is by calling:

ClassUtils.forName("javax.activiation.DataHandler");

Of course this returns true because ClassUtils uses the CACHED AntClassLoader,
which has activation.jar and mail.jar on its classpath. So the
TypeMappingRegistry will go ahead and initialize the type mapping for
attachment. However, in the attachment type mapping's initialization method, it
does a:

Class.forName("javax.activiation.DataHandler");

instead of a:

ClassUtils.forName("javax.activiation.DataHandler");

Since Class.forName("...") will go to the Eclipse class loader, which does not
have activation.jar and mail.jar on its classpath. A NoClassDefFoundError is
being thrown. This exception propagates back to the WS wizard and the wizard
throws up an error dialog. IMHO, this is a bug in Axis. However, we are the one
that need to workaround it.....



------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.