Acceder a web services remota
Publicado por Nacho (3 intervenciones) el 15/07/2009 09:44:23
Hola a todos:
Es la primera vez que escribo en este foro, estoy realizando unas web services para un proyecto, mi problema viene al realizar el acceso a la web service remota desde cliente, he creado el cliente a partir del WSDL y he probado el acceso mediante la herramienta de eclipse Test with webservice explorer, donde el acceso me lo hace de forma correcta.
Mi problema viene a la hora de acceder desde una clase java prueba creada por mi mismo, me da el siguiente error:
Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:Minimole
java.lang.NullPointerException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1772)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2923)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at net.emovilia.demos.visitasGenWS.VisitasSOAPStub.executeDatosEncargo(VisitasSOAPStub.java:332)
at net.emovilia.demos.visitasGenWS.VisitasProxy.executeDatosEncargo(VisitasProxy.java:56)
at net.emovilia.demos.visitasGenWS.Prueba.main(Prueba.java:154)
Al realizar el acceso a una webservice local, este mismo código lo hace de forma correcta, el problema viene cuando intento entrar en otra máquina.
El código que utilizo es el siguiente:
public class Prueba {
public static void main(String[] args) throws Exception{
ProcEncargoReq encargoReq;
encargoReq= new ProcEncargoReq();
ProcEncargoRes encargoRes;
encargoRes= new ProcEncargoRes();
Encargo encargo;
encargo= new Encargo();
String servicio= "prueba";
String version="12";
encargo.setServicio(servicio);
encargo.setVersion(version);
DatosEncargoType datosEncargo;
datosEncargo= new DatosEncargoType();
String accion= "Prueba";
String actuacionAl= "peritar";
String ciaCliente= "G";
String codActuacion= "12";
String codProfesional= "12";
DatosAseguradoType datosAsegurado;
datosAsegurado= new DatosAseguradoType();
DatosAutosType datosAutos;
datosAutos= new DatosAutosType();
DatosContactoType datosContacto;
datosContacto= new DatosContactoType();
String descActuacion="peritar";
String descLugarActuacion="calle";
FechaPrevistaType fechaPrevista;
fechaPrevista= new FechaPrevistaType();
HoraPrevistaType horaPrevista;
horaPrevista= new HoraPrevistaType();
String idEncargo="1";
String numSiniestro="12";
String observaciones="hola";
String tipoMensaje= "prueba";
String tipoProfesional="perito";
String tipoSubservicio="ayudar";
String urgente="si";
String modeloPlataf="AU";
String dniAseg="80146937";
String nombreAseg="Juan";
String compromiso="si";
String conductorVehicAseg="Pepe";
String matriculaVehicAseg="1234";
String modeloVehicAseg="fiat";
String vehicSustitucion="fiat";
String nombre= "Miguel";
String telefono= "9311111";
String anyPrev="2009";
String diaPrev="4";
String mesPrev="8";
String horaPrev="18";
String minPrev="30";
datosEncargo.setAccion(accion);
datosEncargo.setActuacionAl(actuacionAl);
datosEncargo.setCiaCliente(ciaCliente);
datosEncargo.setCodActuacion(codActuacion);
datosEncargo.setCodProfesional(codProfesional);
datosAsegurado.setDniAseg(dniAseg);
datosAsegurado.setNombreAseg(nombreAseg);
datosEncargo.setDatosAsegurado(datosAsegurado);
datosAutos.setCompromiso(compromiso);
datosAutos.setConductorVehicAseg(conductorVehicAseg);
datosAutos.setMatriculaVehicAseg(matriculaVehicAseg);
datosAutos.setModeloVehicAseg(modeloVehicAseg);
datosAutos.setVehicSustitucion(vehicSustitucion);
datosEncargo.setDatosAutos(datosAutos);
datosContacto.setNombre(nombre);
datosContacto.setTelefono(telefono);
datosEncargo.setDatosContacto(datosContacto);
fechaPrevista.setAnyPrev(anyPrev);
fechaPrevista.setDiaPrev(diaPrev);
fechaPrevista.setMesPrev(mesPrev);
datosEncargo.setFechaPrevista(fechaPrevista);
horaPrevista.setHoraPrev(horaPrev);
horaPrevista.setMinPrev(minPrev);
datosEncargo.setHoraPrevista(horaPrevista);
datosEncargo.setDescActuacion(descActuacion);
datosEncargo.setDescLugarActuacion(descLugarActuacion);
datosEncargo.setIdEncargo(idEncargo);
datosEncargo.setModeloPlataf(modeloPlataf);
datosEncargo.setNumSiniestro(numSiniestro);
datosEncargo.setObservaciones(observaciones);
datosEncargo.setTipoMensaje(tipoMensaje);
datosEncargo.setTipoProfesional(tipoProfesional);
datosEncargo.setTipoSubservicio(tipoSubservicio);
datosEncargo.setUrgente(urgente);
System.out.println("Hemos llegado hasta aquí");
encargoReq.setEncargo(encargo);
String endpointURL="http://demos.emovilia.net:8080/visitasGenWS/services/visitasSOAP";
//Service service= new Service();
//SinMobilInHandlerService service= new SinMobilInHandlerServiceLocator();
System.out.println("Hemos llegado hasta aquí");
//SinMobilInHandler sinMobilInHandler= service.getSinMobilInHandler();
System.out.println("Hemos llegado hasta aquí");
//urgenteRes= sinMobilInHandler.executeAceptarEncargo(urgenteReq);
//System.out.println(urgenteRes.getCodError());
Visitas_Service WSService = new Visitas_ServiceLocator ();
Visitas_PortType WS = WSService.getvisitasSOAP();
//SinMobilInHandlerServiceLocator service= WSServiceLocator.
//urgenteRes= WS.executeAceptarEncargo(urgenteReq);
VisitasProxy WSProxy= new VisitasProxy();
System.out.println("Hemos llegado hasta aquí");
WSProxy.setEndpoint(endpointURL);
encargoRes= WSProxy.executeDatosEncargo(encargoReq);
System.out.println("Hemos llegado hasta aquí");
System.out.println(encargoRes.getCodError());
//call.setTargetEndpointAddress(endpointURL);
//call.setOperationName("executeAceptarEncargo");
//String url= service.getSinMobilInHandlerAddress();
//call.addParameter("urgenteReq", XMLType.ProcEncargoUrgente, javaType, parameterMode)
}
}
El error lo genera al realizar la llamada a executeDatosEncargo.
Si alguien me puede ayudar se lo agradecería muchísimo.
Muchas gracias.
Es la primera vez que escribo en este foro, estoy realizando unas web services para un proyecto, mi problema viene al realizar el acceso a la web service remota desde cliente, he creado el cliente a partir del WSDL y he probado el acceso mediante la herramienta de eclipse Test with webservice explorer, donde el acceso me lo hace de forma correcta.
Mi problema viene a la hora de acceder desde una clase java prueba creada por mi mismo, me da el siguiente error:
Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:Minimole
java.lang.NullPointerException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1772)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2923)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at net.emovilia.demos.visitasGenWS.VisitasSOAPStub.executeDatosEncargo(VisitasSOAPStub.java:332)
at net.emovilia.demos.visitasGenWS.VisitasProxy.executeDatosEncargo(VisitasProxy.java:56)
at net.emovilia.demos.visitasGenWS.Prueba.main(Prueba.java:154)
Al realizar el acceso a una webservice local, este mismo código lo hace de forma correcta, el problema viene cuando intento entrar en otra máquina.
El código que utilizo es el siguiente:
public class Prueba {
public static void main(String[] args) throws Exception{
ProcEncargoReq encargoReq;
encargoReq= new ProcEncargoReq();
ProcEncargoRes encargoRes;
encargoRes= new ProcEncargoRes();
Encargo encargo;
encargo= new Encargo();
String servicio= "prueba";
String version="12";
encargo.setServicio(servicio);
encargo.setVersion(version);
DatosEncargoType datosEncargo;
datosEncargo= new DatosEncargoType();
String accion= "Prueba";
String actuacionAl= "peritar";
String ciaCliente= "G";
String codActuacion= "12";
String codProfesional= "12";
DatosAseguradoType datosAsegurado;
datosAsegurado= new DatosAseguradoType();
DatosAutosType datosAutos;
datosAutos= new DatosAutosType();
DatosContactoType datosContacto;
datosContacto= new DatosContactoType();
String descActuacion="peritar";
String descLugarActuacion="calle";
FechaPrevistaType fechaPrevista;
fechaPrevista= new FechaPrevistaType();
HoraPrevistaType horaPrevista;
horaPrevista= new HoraPrevistaType();
String idEncargo="1";
String numSiniestro="12";
String observaciones="hola";
String tipoMensaje= "prueba";
String tipoProfesional="perito";
String tipoSubservicio="ayudar";
String urgente="si";
String modeloPlataf="AU";
String dniAseg="80146937";
String nombreAseg="Juan";
String compromiso="si";
String conductorVehicAseg="Pepe";
String matriculaVehicAseg="1234";
String modeloVehicAseg="fiat";
String vehicSustitucion="fiat";
String nombre= "Miguel";
String telefono= "9311111";
String anyPrev="2009";
String diaPrev="4";
String mesPrev="8";
String horaPrev="18";
String minPrev="30";
datosEncargo.setAccion(accion);
datosEncargo.setActuacionAl(actuacionAl);
datosEncargo.setCiaCliente(ciaCliente);
datosEncargo.setCodActuacion(codActuacion);
datosEncargo.setCodProfesional(codProfesional);
datosAsegurado.setDniAseg(dniAseg);
datosAsegurado.setNombreAseg(nombreAseg);
datosEncargo.setDatosAsegurado(datosAsegurado);
datosAutos.setCompromiso(compromiso);
datosAutos.setConductorVehicAseg(conductorVehicAseg);
datosAutos.setMatriculaVehicAseg(matriculaVehicAseg);
datosAutos.setModeloVehicAseg(modeloVehicAseg);
datosAutos.setVehicSustitucion(vehicSustitucion);
datosEncargo.setDatosAutos(datosAutos);
datosContacto.setNombre(nombre);
datosContacto.setTelefono(telefono);
datosEncargo.setDatosContacto(datosContacto);
fechaPrevista.setAnyPrev(anyPrev);
fechaPrevista.setDiaPrev(diaPrev);
fechaPrevista.setMesPrev(mesPrev);
datosEncargo.setFechaPrevista(fechaPrevista);
horaPrevista.setHoraPrev(horaPrev);
horaPrevista.setMinPrev(minPrev);
datosEncargo.setHoraPrevista(horaPrevista);
datosEncargo.setDescActuacion(descActuacion);
datosEncargo.setDescLugarActuacion(descLugarActuacion);
datosEncargo.setIdEncargo(idEncargo);
datosEncargo.setModeloPlataf(modeloPlataf);
datosEncargo.setNumSiniestro(numSiniestro);
datosEncargo.setObservaciones(observaciones);
datosEncargo.setTipoMensaje(tipoMensaje);
datosEncargo.setTipoProfesional(tipoProfesional);
datosEncargo.setTipoSubservicio(tipoSubservicio);
datosEncargo.setUrgente(urgente);
System.out.println("Hemos llegado hasta aquí");
encargoReq.setEncargo(encargo);
String endpointURL="http://demos.emovilia.net:8080/visitasGenWS/services/visitasSOAP";
//Service service= new Service();
//SinMobilInHandlerService service= new SinMobilInHandlerServiceLocator();
System.out.println("Hemos llegado hasta aquí");
//SinMobilInHandler sinMobilInHandler= service.getSinMobilInHandler();
System.out.println("Hemos llegado hasta aquí");
//urgenteRes= sinMobilInHandler.executeAceptarEncargo(urgenteReq);
//System.out.println(urgenteRes.getCodError());
Visitas_Service WSService = new Visitas_ServiceLocator ();
Visitas_PortType WS = WSService.getvisitasSOAP();
//SinMobilInHandlerServiceLocator service= WSServiceLocator.
//urgenteRes= WS.executeAceptarEncargo(urgenteReq);
VisitasProxy WSProxy= new VisitasProxy();
System.out.println("Hemos llegado hasta aquí");
WSProxy.setEndpoint(endpointURL);
encargoRes= WSProxy.executeDatosEncargo(encargoReq);
System.out.println("Hemos llegado hasta aquí");
System.out.println(encargoRes.getCodError());
//call.setTargetEndpointAddress(endpointURL);
//call.setOperationName("executeAceptarEncargo");
//String url= service.getSinMobilInHandlerAddress();
//call.addParameter("urgenteReq", XMLType.ProcEncargoUrgente, javaType, parameterMode)
}
}
El error lo genera al realizar la llamada a executeDatosEncargo.
Si alguien me puede ayudar se lo agradecería muchísimo.
Muchas gracias.
Valora esta pregunta


0