axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Davanum Srinivas (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Updated: (AXIS-1903) IncompatibleClassChangeError when deploying Axis 1.2-RC3 on WebSphere 5.1 with PARENT_FIRST classloading
Date Fri, 10 Jun 2005 20:46:49 GMT
     [ http://issues.apache.org/jira/browse/AXIS-1903?page=all ]

Davanum Srinivas updated AXIS-1903:
-----------------------------------

    Description: 
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/

  was:
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/

       Priority: Blocker  (was: Major)

upgrading to blocker.

> 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
>     Priority: Blocker

>
> 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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message