Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Consumir servicio web desde una aplicación java (jar)

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.

diciembre 22, 2011 | Registered Commentermjulia

Buenos días,

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.

¿Lo has conseguido solucionar?

febrero 15, 2012 | Unregistered Commenterzampachu