Accediendo a un Servicio Web desde Java con Axis

Víctor Fariña General, Technology 398 Comments

Problema
Recientemente tuvimos la necesidad de acceder a un servicio web que nos daba la autenticacion a una cantidad de servicios de un cliente. Este tenia todo centralizado en LDAP y no se permitia el acceso directo al servidor LDAP, solo a traves de un SW que te respondia OK o KO en funcion de si la combinacion login/password era correcta o no. Lo unico que nos dieron es un wsdl que describe el Servicio Web.

SoluciónPara empezar con todo esto empezamos a buscar informacion sobre acceder a servicios web via java, y la verdad es que encontramos bastante poco, bastante menos de lo que a mi me gustaría (lo que encontré está en la zona de referencias)
Para poder reproducir todo esto, vamos a hacer un ejemplo.

Implementación
Como ejemplo nos vale el Servicio Web de Google al cual accederemos para que nos corriga las palabras que le introducimos.
El WSDL lo tenemos aqui : Google WSDL

PASO 1:
Lo que debemos hacer primero es obtener todas las librerias necesarias para el acceso a un servicio web remoto, estas son por lo menos:

  • axis-ant.jar
  • commons-discovery.jar
  • commons-logging.jar
  • jaxrpc.jar
  • log4j-1.2.4.jar
  • saaj.jar
  • wsdl4j.jar
  • axis.jar

Os las podeis bajar todas juntas de aqui.PASO 2:
Ahora que tenemos todas las librerias, vamos a generar el proxy de la conexion al servicio web, para ello, usaremos el fantastico WSDL2Java, que viene con axis, y requiere como parametro la ruta al servicio WEB o su URL:

java -classpath «axis-ant.jar:commons-discovery-0.2.jar:commons-logging-1.0.4.jar:jaxrpc.
jar:log4j-1.2.8.jar:saaj.jar:wsdl4j-1.5.1.jar:axis.jar» org.apache.axis.wsdl.WSDL2Java http://api.google.com/GoogleSearch.wsdl
Recordad, que si usais Windows, debeis de Cambiar de Sistema Operativo o Sustituir los «:» por «;» punto y coma.
Este comando nos genera una estructura de archivos a partir de donde estemos con 6 o 7 archivos que usaremos para realizar la conexion.

PASO 3:
Ahora que ya tenemos el proxy de conexion vamos a escribir un simple cliente java que lo use:
package GoogleSearch;public class GoogleSearchClient {        public static void main(String[] args) throws Exception {                // Crea el servicio                GoogleSearchService service = new GoogleSearchServiceLocator();                // Ahora usamos el servicio para crear un proxy hacia el Service Definition Interface (SDI)                GoogleSearchPort google = service.getGoogleSearchPort();                // Hacer la llamada                String key = «KEY OBTENIDA DE GOOGLE API en www.google.com/api»;                String query = «wickle»;                int start = 0;                int maxResults = 10;                boolean filter = true;                String restrict = «»;                boolean safeSearch = true;                String languageRestrict = «lang_en»;                String inputEncoding = «UTF-8»;                String outputEncoding = «UTF-8»;                GoogleSearchResult gsr =                        google.doGoogleSearch(key,query,start,maxResults,filter,restrict,safeSearch,i                                 languageRestrict,inputEncoding,outputEncoding);                ResultElement[] re = gsr.getResultElements();                for (int i = 0; i < re.length; i++) {                        System.out.println(re[i].getURL());                }        }}

PASO 4:
Compilamos Todo :
javac -classpath «axis-ant.jar:commons-discovery-0.2.jar:commons-logging-1.0.4.jar:
jaxrpc.jar:log4j-1.2.8.jar:saaj.jar:wsdl4j-1.5.1.jar:axis.jar» GoogleSearch/*

PASO 5:
Ejecutamos ahora el cliente creado :
java -classpath «axis-ant.jar:commons-discovery-0.2.jar:commons-logging-1.0.4.jar:
jaxrpc.jar:log4j-1.2.8.jar:saaj.jar:wsdl4j-1.5.1.jar:axis.jar:.» GoogleSearch/GoogleSearchClient– Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.http://www.wickle.com/wiki/index.php/Main_Pagehttp://www.wickle.com/wikis/index.php/Graphviz_extension….

et voila 😉 …
Ya tenemos creado un cliente de un Servicio Web.

REFERENCIAS
http://www.bawsug.org/archives/000008.html
http://www.myspotter.com/webservices1.shtml

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.