style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

cliente Web Service con RPC

Hola tengo un problema al realizar una prueba de conexion a un WebService, al tener solo un parametro de respuesta por ejemplo solo un String no hay problema, pero al modificar el Webservice y regresar por ejemplo un objeto Persona

manda un error por que no puede procesar el complexType.

alguien sabe como le digo que va traer un complex type si solo tengo el WSDL para poder conectarme al WebService???

Connection E com.ibm.ws.webservices.engine.client.Connection invoke WSWS3227E: Error: Excepción:
org.xml.sax.SAXException: WSWS3084E: Error: SimpleDeserializer ha detectado un elemento hijo que NO se esperaba, cuando intentaba realizar una deserialización.
at com.ibm.ws.webservices.engine.utils.MCUtils.interceptDeserializationException(MCUtils.java:186)
at com.ibm.ws.webservices.engine.xmlsoap.ext.RequestResponse.deserialize(RequestResponse.java:469)
at com.ibm.ws.webservices.engine.xmlsoap.ext.RequestResponse.getParams(RequestResponse.java:598)

el codigo es el siguiente:

//WSVoice servicio=WSVoice.JWSAbreSesion;
                        String response=null;
                //String targetNamespace = "http://ws.voice.com/";
                String targetNamespace = resourceBundle.getString("servicio.Clave.nameSpace");
                        String endPoint = resourceBundle.getString("servicio.Clave.endPoint");
                        String portType = resourceBundle.getString("servicio.Clave.PortType");
                        String operation= resourceBundle.getString("servicio.Clave.Operation");
                        String serviciows=resourceBundle.getString("servicio.Clave.Service");
                       
                        log.info(argumentosOperacion.length+"--"+tiposDedatosXMLargumentosOperacion.length);
                for(int i = 0; i < argumentosOperacion.length;i++){
                        log.info(argumentosOperacion[i]+"--"+tiposDedatosXMLargumentosOperacion[i]);
                }
                       
                try {
                    /* Service lookup */
                    ServiceFactory serviceFactory = ServiceFactory.newInstance();
                    javax.xml.rpc.Service service = serviceFactory.createService(
                        new QName(targetNamespace, serviciows));//"VoiceSessionService"
         
                    /* Service access */
                    Call call = (Call) service.createCall();
                    call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY, "http://schemas.xmlsoap.org/soap/encoding/");
                    call.setProperty(Call.OPERATION_STYLE_PROPERTY, "wrapped");
                    //call.setProperty(Call.PASSWORD_PROPERTY, "");
                    //call.setProperty(Call.USERNAME_PROPERTY, "");
                    call.setTargetEndpointAddress(
                        //"http://localhost:9082/VoiceWS/VoiceSessionService");
                                endPoint+serviciows);
                    call.removeAllParameters();
                    call.setPortTypeName(new QName(targetNamespace,portType));// "VoiceSessionPort"));
                    call.setOperationName(new QName(targetNamespace, operation));//"StartSession"));
                    if (call.isParameterAndReturnSpecRequired(call.getOperationName())){
                        for(int i=0;i<argumentosOperacion.length;i++){
                                call.addParameter("in"+i,XMLType.XSD_STRING,
                            String.class, javax.xml.rpc.ParameterMode.IN);
                        }
                       call.setReturnType(XMLType.XSD_STRING);
                    }
                   
                   
                    /* Service invocation */
                    Object [] o = new Object[argumentosOperacion.length];
                    for(int i = 0; i < argumentosOperacion.length;i++){
                        o[i] = (Object)argumentosOperacion[i];
                    }
                    Object obj = call.invoke(o);
                    response=(String)obj;
                    log.info("Respuesta:"+response);

                } catch(Exception e) {
                        log.debug(e);
                        String outPut = e.toString();
                         if(outPut.indexOf("timed out")>=0){
                         outPut = "TIMEOUT";
                      }else{
                          log.error("Error en conexion  a WS:"+    e.getMessage());
                          throw new ServiceException("Error99999");
                      }
                }
                return response;

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">