You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Mark Slater <ma...@analogsoftware.com> on 2005/04/08 11:30:00 UTC

Interop with PHP5 SoapClient - IncompatibleClassChangeError

I'm working on a test for PHP5's Soap Client (version 5.0.3) and Apache  
Axis (version 1.2 RC3). I'm getting an exception:

<Servlet.service() for servlet axis threw exception>  
java.lang.IncompatibleClassChangeError
         at  
org.apache.axis.message.MessageElement.addTextNode(MessageElement.java: 
1387)
         at  
org.apache.axis.message.SOAPHandler.addTextNode(SOAPHandler.java:148)
         at  
org.apache.axis.message.SOAPHandler.endElement(SOAPHandler.java:112)
         at  
org.apache.axis.encoding.DeserializationContext.endElement(Deserializati 
onContext.java:1087)
         at  
org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
         at  
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown  
Source)
         at  
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis 
patcher.dispatch(Unknown Source)
         at  
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno 
wn Source)
         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown  
Source)
         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown  
Source)
         at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
         at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown  
Source)
         at javax.xml.parsers.SAXParser.parse(Unknown Source)
         at  
org.apache.axis.encoding.DeserializationContext.parse(DeserializationCon 
text.java:227)
         at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
         at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
         at  
org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java: 
345)
         at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
         at  
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:697)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         at  
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.j 
ava:327)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         .....
         at  
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool 
.java:684)
         at java.lang.Thread.run(Thread.java:552)

The java function is defined as:

boolean confirmCredentials( String username, String password ) { return  
false; }

This is something I didn't think would be difficult to process or  
handle.

PHP is sending this request (ormatted with newlines and whitespace for  
easier reading):

==============
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
     xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
     xmlns:ns1="http://rpc.whisper.ucsc.edu"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
     SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<SOAP-ENV:Body>
     <ns1:confirmCredentials>
         <username xsi:type="xsd:string">sdfdsf</username>
         <password xsi:type="xsd:string">xddsfs</password>
     </ns1:confirmCredentials>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
============

As you can see, the types being assigned are xsd:string... I was under  
the impression this would be automatically converted into Java String  
objects. Or is there some sort of setup I need to do for that to  
happen. Any suggestions are greatly appreciated.

Mark