Accediendo a un Servicio Web desde Java con Axis

Accediendo a un Servicio Web desde Java con Axis

coffman
/
/

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ón
Para 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:

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_Page
http://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

AJAX y APPFUSE 1.8.2 .. DWR en funcionamientoDia 1 - Xoanin