[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[wtp-dev] Seeking approval for 105335 - Axis on Tomcat 4.1 does not work


WTP PMC,

As per defect approval rules for 0.7, I would like to request approval for
defect 105335.

The defect fix is implemented and tested and I have reviewed it with Chris Brealey.


Defect 105335:

Starting with WTP0.7RC2 driver (after switching to Axis 1.2.1), creating bottom-up Web service using Axis runtime on Tomcat 4.1 does not work. You'll run into the following exception:

Unable to create WSDL from Java
NoClassDefFoundError: javax/activiation/DataHandler

After you hit this error, if you try to go thru a BU-Java scenario with Axis on
Tomcat 5.0, it will fail with a similar exception. Bottom line is, once you hit
this error, that's it, you can no longer create botton-up Web service. You need to
restart Eclipse WTP.


This problem does not occur with Tomcat 5.0.  Things will continue to work until you do a Axis on Tomcat 4.1
scenario.


We isolated the problem due to classloading behaviour in Axis 1.2.1 (please see the defect for more detail).  I'll be opening an Axis defect for this.  In the meanwhile, we workaround the problem by not passing in mail.jar and activation.jar in the classpath variable we pass to Axis Java2WSDLAxisAnt.

I've verified that this change only affect the classpath variable used to set the classpath for Axis Java2WSDLAxisAnt.

I've tested this fix with Tomcat 4.0, 4.1, 5.0 and 5.5 and the Web services scenarios work fine.

Please discuss, vote, or feel free to ask any further follow up questions.
The development contact is Kathy Chan, kathy@xxxxxxxxxxx


Kathy Chan
Rational Studio Java Web Services, IBM Toronto Lab
D3-354, D3/R8V/8200/MKM, 8200 Warden Avenue, Markham, Ontario, Canada, L6G 1C7
kathy@xxxxxxxxxx, (905) 413-3022, tieline: 969-6038, fax: (905) 413-4920

----- Forwarded by Kathy Chan/Toronto/IBM on 27/07/2005 02:32 PM -----
Chris Brealey/Toronto/IBM@IBMCA
Sent by: wtp-dev-bounces@xxxxxxxxxxx

27/07/2005 01:27 PM

Please respond to
"General discussion of project-wide or architectural issues."

To
wtp-dev@xxxxxxxxxxx
cc
Subject
[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._______________________________________________
wtp-dev mailing list
wtp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/wtp-dev