QName intQName = new QName("http://www.w3.org/2001/XMLSchema", "int"); QName stringQName = new QName("http://www.w3.org/2001/XMLSchema", "string");
//Crear la instancia del Servicio Web de manera dinámica ServiceFactory serviceFactory = ServiceFactory.newInstance(); Service service = serviceFactory.createService(serviceName);
//Crear el objeto de llamada del Servicio WEb Call call = (Call) service.createCall(); call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY, ""); call.setTargetEndpointAddress(endpoint);
//Establecer el método a invocar call.setOperationName(new QName("http://webservice.core.smsg.tec/", nameWebMethod));
// Definir parámetros de salida del método call.setReturnType(stringQName);
// Definir parámetros de entrada del método call.addParameter("idFuncional", stringQName, javax.xml.rpc.ParameterMode.IN); call.addParameter("proceso", stringQName, javax.xml.rpc.ParameterMode.IN); call.addParameter("tipo", stringQName, javax.xml.rpc.ParameterMode.IN); call.addParameter("user", stringQName, javax.xml.rpc.ParameterMode.IN);
Me está sucediendo lo mismo. Antes me funcionaba y no he cambiado (al menos intencionadamente) ninguna configuración y classpath ni nada por el estilo.
Hola soy nuevo en el desarrollo de aplicaciones en Java.
Se me ha pedido que cree una aplicación de consola que pueda acceder a servicios web usando la Api jax-rpc-1.1
Este es el código que uso, pero este me da una excepción a la hora de crear una nueva instancia de la clase javax.xml.rpc.ServiceFactory.
El mensaje de la excepción es :
Exception in thread "main" javax.xml.rpc.ServiceException: Provider com.sun.xml.rpc.client.ServiceFactoryImpl not found
El código es el siguiente:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package probasw;
import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.ServiceFactory;
/**
*
* @author mjulia
*/
public class ProbaSW {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ServiceException {
// TODO code application logic here
//Definiciones
QName serviceName = new QName("http://webservice.core.smsg.tec/", "enviarMensaje");
String endpoint = "http://localhost:8080/SistemaMensajes/enviarMensaje";
String nameWebMethod = "enviar";
QName intQName = new QName("http://www.w3.org/2001/XMLSchema", "int");
QName stringQName = new QName("http://www.w3.org/2001/XMLSchema", "string");
//Crear la instancia del Servicio Web de manera dinámica
ServiceFactory serviceFactory = ServiceFactory.newInstance();
Service service = serviceFactory.createService(serviceName);
//Crear el objeto de llamada del Servicio WEb
Call call = (Call) service.createCall();
call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY, "");
call.setTargetEndpointAddress(endpoint);
//Establecer el método a invocar
call.setOperationName(new QName("http://webservice.core.smsg.tec/", nameWebMethod));
// Definir parámetros de salida del método
call.setReturnType(stringQName);
// Definir parámetros de entrada del método
call.addParameter("idFuncional", stringQName, javax.xml.rpc.ParameterMode.IN);
call.addParameter("proceso", stringQName, javax.xml.rpc.ParameterMode.IN);
call.addParameter("tipo", stringQName, javax.xml.rpc.ParameterMode.IN);
call.addParameter("user", stringQName, javax.xml.rpc.ParameterMode.IN);
Object[] inParams = new Object[4];
inParams[0] = "1004";
inParams[1] = "37";
inParams[2] = "A20";
inParams[3] = "admin";
try {
//Invocar el WebMethod del WebService
String res = (String) call.invoke(inParams);
} catch (RemoteException ex) {
Logger.getLogger(ProbaSW.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Alguien sabe como solucionar el problema?
Gracias de antemano.