Title: problems with call.invoke()

I am having trouble with call.invoke(). My test app is throwing a SAXException:

- Exception:
org.xml.sax.SAXException: Bad types (int -> class java.lang.String)
        at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:285)
        at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:893)
        at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200)
        at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:684)
        at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:241)
        at org.apache.axis.message.RPCElement.getParams(RPCElement.java:265)
        at org.apache.axis.client.Call.invoke(Call.java:1871)
        at org.apache.axis.client.Call.invoke(Call.java:1777)
        at org.apache.axis.client.Call.invoke(Call.java:1315)
        at TestXML.doPost(TestXML.java:45)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:211)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:309)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:336)
        at com.evermind._efb._plc(.:518)
        at com.evermind._efb._adc(.:174)
        at com.evermind._cs._yqb(.:614)
        at com.evermind._cs._yrb(.:189)
        at com.evermind._bx.run(.:62)
org.xml.sax.SAXException: Bad types (int -> class java.lang.String)

Here is what my code looks like (I just started using axis, so any help would be appreciated):

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.Constants;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

public class TestXML extends HttpServlet {

        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                    try {

                        String userName = "";
                        String loanData = "";
                        String action = "">
                        String params = "";
                        Boolean compressResp = new Boolean("false");

                        String endpoint = "http://localhost/soap/test";

                        Service  service = new Service();
                        Call     call    = (Call) service.createCall();

                        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
                        call.setOperationName(new QName("http://localhost", "SomeAction"));
                        call.setReturnType(Constants.XSD_STRING);

                        call.addParameter("UserName", Constants.XSD_STRING, ParameterMode.IN);
                        call.addParameter("Data", Constants.XSD_STRING, ParameterMode.IN);
                        call.addParameter("Action", Constants.XSD_STRING, ParameterMode.IN);
                        call.addParameter("Params", Constants.XSD_STRING, ParameterMode.IN);
                        call.addParameter("CompressResp", Constants.XSD_BOOLEAN, ParameterMode.IN);

                        String ret = (String) call.invoke( new Object[] { userName, data, action, params, compressResp } );

                        System.out.println("Sent 'Hello!', got '" + ret + "'");

                    } catch (Exception e) {
                        System.err.println(e.toString());
                    }

        }

        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                this.doPost(request,response);
        }
}

Thanks!

Edgar Castanedo

Reply via email to