no se pudo encontrar el deserializador para el tipo: Error

Tengo que hacer una llamada SOAP desde mi programa java, para lo cual utilicé el eje apache. Mi programa es el siguiente:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.rpc.ParameterMode;
import javax.xml.namespace.QName;
public class Project {
   public static void main(String [] args) {

   try {

       String endpoint ="http://RequestUrl";
       Service  service = new Service();
       Call call = (Call) service.createCall();
       call.setTargetEndpointAddress( new java.net.URL(endpoint) );
       call.setOperationName(new QName(endpoint, "getFrsFileData"));
       String value = (String) call.invoke(new Object[] { "24BB7","frs1001" } );
       System.out.println(value);
       }

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

    }
   }

Esto en la ejecución da un error de la siguiente manera

  • Excepción: org.xml.sax.SAXException: parámetro de deserialización 'getFrsFileDataReturn': no ​​se pudo encontrar el deserializador para el tipo {http: // Url} FrsFileSoapDO en org.apache.axis.message.RPCHandler.onStartChild (RPCHandler.java:277) at org.apache.axis.encoding.DeserializationContext.startElement (DeserializationContext.java:1035) en org.apache.axis.message.SAX2EventRecorder.replay (SAX2EventRecorder.java:165) en org.apache.axis.message.ubessage.lement.MessageElement. MessageElement.java:1141) en org.apache.axis.message.RPCElement.deserialize (RPCElement.java:345) en org.apache.axis.message.RPCElement.getParams (RPCElement.java:384) en org.apache.axis .client.Call.invoke (Call.java:2467) en org.apache.axis.client.Call.invoke (Call.java:2366) en org.apache.axis.client.Call.invoke (Call.java:1812 ) en Project.main (Project.java:33) org.xml.sax.SAXException: parámetro de deserialización 'getFrsFileDataReturn': no ​​se pudo encontrar el deserializador para el tipo {http: // Url} FrsFileSoapDO

Intenté la misma llamada usando SOAPUI, pero no me ayudó a depurar esto.

Por favor, ayúdenme a depurar este código Java,

Gracias

Respuesta 1

Recibí ayuda de mi amigo y pude llegar a la respuesta. El problema es que la llamada de jabón da una respuesta de jabón que viene como un bean del tipo "FrsFileSoapDO". Como no he dado nada en el código de cómo mi programa entenderá el bean recibido, eso me dio un error que decía "no se pudo encontrar el deserializador para el tipo {http://Url}FrsFileSoapDO". Ahora el paso para aclarar el problema es

1) cree un "QName" para decir cuál es el espacio de nombres al que se refiere "FrsFileSoapDO".

2) crear Bean serializer (que sabe cómo serializar el bean),

3) crear un deserializador de frijoles (que sepa deserializar el frijol),

4) Realice el mapeo diciendo que QName q se asigna a la clase FrsFileSoapDO.class (antes de eso asegúrese de tener el FrsFileSoapDO.class con usted y que lo haya importado)

Ahora implementemos esto en el programa (estoy repitiendo solo el bloque try aquí)

try {

   String endpoint ="http://RequestUrl";
   Service  service = new Service();
   Call call = (Call) service.createCall();
   call.setTargetEndpointAddress( new java.net.URL(endpoint) );

   QName q = new QName ("http://Url", "FrsFileSoapDO"); // step 1
   BeanSerializerFactory bsf =   new BeanSerializerFactory(FrsFileSoapDO.class,q);   // step 2
   BeanDeserializerFactory bdf = new BeanDeserializerFactory(FrsFileSoapDO.class,q);  // step 3
   call.registerTypeMapping(FrsFileSoapDO.class,q, bsf, bdf); //step 4

   call.setOperationName(new QName(endpoint, "getFrsFileData"));
   FrsFileSoapDO s = (FrsFileSoapDO) call.invoke(new Object[] { "24BB7","frs1001" } );  
   System.out.println(s.getFilename());  
   }

Esto funciona dándome el resultado esperado.

El documento para las funciones Call, BeanSerializerFactory, BeanDeserializerFactory está disponible en BeanSerializerFactory y BeanDeserializerFactory

Respuesta: 2

Estoy tratando de crear un JASPI ServerAuthModule personalizado totalmente aislado de mi aplicación EAR. Depende de una versión heredada de Spring Framework 2.5.5. Estoy ejecutando WildFly 9.0.2.Final. Definí un ...

Tengo ese objeto oracle: CREATE O REPLACE tipo employee_obj AS object (id NUMBER (10), ...) función de procedimiento almacenado get_employee_obj () return employee_obj es ...

Acabo de habilitar Session en mi aplicación Google AppEngine / Java + GWT. ¿Y cómo lo uso? ¿Cómo obtengo el ID de sesión y reproduzco todas las cosas buenas de él? ¿Hay ejemplos reales de inicio de sesión simple ...

Tengo dos clases Una (Persona) para captadores y establecedores, y otra (Personas) para calcular los datos. Cuál es mi situación es que obtengo los datos de la base de datos usando ResultSet, luego creé un Objeto persona para ...