[ http://issues.apache.org/jira/browse/AXIS-1903?page=comments#action_62224 ] Jim Breen commented on AXIS-1903: ---------------------------------
I initially had the exact same issue with 1.2-RC3 (albeit in WAS 5.1 on Windows 2000). However, I didn't understand why David's code change is necessary. That change is in effect making Axis compatible with the version of saaj.jar that ships with WebSphere (webservices.jar). The real solution should be to configure the classloaders so that the version of saaj.jar in WEB-INF/lib with axis.jar gets loaded first. I'm not going to claim to understand exactly why this works, but I got past the IncompatibleClassChangeError with out any code or manifest changes by configuring WAS classloading as follows: Application Classloader Mode: PARENT_FIRST WAR Classloader Policy: Module WAR Classloader Mode: PARENT_FIRST > IncompatibleClassChangeError when deploying Axis 1.2-RC3 on WebSphere 5.1 > with PARENT_FIRST classloading > -------------------------------------------------------------------------------------------------------- > > Key: AXIS-1903 > URL: http://issues.apache.org/jira/browse/AXIS-1903 > Project: Axis > Type: Bug > Components: SAAJ > Versions: 1.2RC3 > Environment: WebSphere 5.1.x on Linux (2.4.x kernel). > Reporter: David Tompkins > > I am deploying Axis 1.2RC3 in a war that resides within an ear. The axis jars > are in the war/WEB-INF/lib dir. For various reasons related to the other > contents of my ear, I must use PARENT_FIRST classloading. As many have > reported, if you have PARENT_FIRST classloading on WebSphere 5.1 with Axis > 1.2RC3, then there is a conflict between the version of saaj (1.1) that ships > with WebSphere, and the version of saaj (1.2) that Axis 1.2RC3 expects, and > you get the following exception: > > java.lang.IncompatibleClassChangeError: class org.apache.axis.SOAPPart does > not implement interface org.w3c.dom.Document > > This issue can be resolved with PARENT_LAST classloading and a manifest which > specifies the classpath...but for those of use who can't use PARENT_LAST > classloading, there is another option. > > It appears that a single source code change to Axis will eliminate the issue > altogether. The offending code is in > org.apache.axis.message.MessageElement.addTextNode(), and can be patched as > follows: > > OLD CODE: > > public SOAPElement addTextNode(String s) throws SOAPException { > try { > Text text = getOwnerDocument().createTextNode(s); > ((org.apache.axis.message.Text)text).setParentElement(this); > return this; > } catch (ClassCastException e) { > throw new SOAPException(e); > } > } > > PATCHED CODE: > > public SOAPElement addTextNode(String s) throws SOAPException { > try { > Text text = new org.apache.axis.message.Text(s); > this.appendChild(text); > return this; > } catch (ClassCastException e) { > throw new SOAPException(e); > } > > After making this change, Axis 1.2RC3 will run on WebSphere 5.1 with > PARENT_FIRST classloading, and no exceptions will be thrown. > > -DT > > --------------------------------- > David Tompkins > Sr. Computer Scientist > Adobe Systems, Inc. > tompkins _AT_ adobe _DOT_ com > http://www.dt.org/ -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira
