"Web-Services" mediante WSDL/WSDD

"Web-Services" con Clases Existentes.

Una de las deficiencias en utilizar "Web-Services" Nativos (*.wsd) es que estos deben ser escritos desde cero, mediante Axis es posible activar ("deploy") cualquier Clase Java residente en un sistema.

Código Fuente Calculadora.java
public class Calculadora {
  public int sumar(int x, int y)
  {
    return x + y; 
  }


  public int restar(int x, int y)
  {
    return x - y;
  }
}

La Clase anterior representa la misma utilizada para generar el "Web-Service" nativo (*.wsd) descrito en la sección anterior, sin embargo, en esta sección se asume que esta misma Clase ya residía en el sistema, en otras palabras, representa un Clase Java compilada .class.

El primer paso para activar dicha Clase Java (.class) como "Web-Service" es colocarla bajo el alcance de Axis, esto implica colocarla bajo el "Web-Archive" donde reside Axis:

+-usr/local/tomcat/webapps+--\
                             |
 /---------------------------/                       
 |
 \ +-axis-+ 
          |
          |-*.jws (Clases/Métodos con Web-Services Nativos)
          |
          +-WEB-INF+
                   |
                   +-web.xml
                   |
                   +-classes--+
                              |
                              +- Calculadora.class
                  

Al ser colocada la Clase bajo el directorio classes, Axis ya tiene acceso a ésta, el siguiente paso es llevar acabo la activación ("deployment") del "Web-Service".

Activación de "Web-Services" y WSDD.

Para observar los "Web-Services" actualmente activados dentro de Axis basta visitar el siguiente URL:

 http://www.servidorprueba.com:8080/axis/servlet/AxisServlet 

El URL anterior corresponde aquel definido en el archivo web.xml del "Web-Archive declarado en la instalación y configuración de Axis , como se puede observar aún no esta activado ("deployed") el "Web-Service", para llevar acabo la activación es utilizado un WSDD ("Web-Services Deployment Descriptor").

Definición de WSDD Calculo.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
               xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

   <service name="Calculo" provider="java:RPC">
       <parameter name="className" value="Calculadora"/>
       <parameter name="allowedMethods" value="*"/>
   </service>

</deployment>

Los elementos anteriores describen la manera en que debe ser activado ("deployed") el "Web-Service", el elemento service name="Calculo" indica el nombre bajo el que será activado el "Web-Service", mientras parameter name="className" es utilizado para indicar la Clase Java que será activada como "Web-Service", y parameter name="allowedMethods" es empleado para indicar los métodos de la Clase que serán accesibles, en este caso se están indicando todos los métodos que incluyen sumar y restar.

Una vez definido este archivo WSDD, es necesario invocarlo en Axis esto se hace mediante el siguiente comando:

$ java org.apache.axis.client.AdminClient Calculo.wsdd

Al ser invocado el comando anterior se activa ("deploy") el "Web-Service" dentro de Axis, si ahora visita el URL http://www.servidorprueba.com:8080/axis/servlet/AxisServlet encontrará que se encuentra en la lista el "Web-Service" Calculo.

Generación de WSDL ("Web-Servces Description Language").

Dentro de la lista de "Web-Services" que reside en el URL http://www.servidorprueba.com:8080/axis/servlet/AxisServlet se puede observar que existe un link llamado WSDL, al seguir este link será generado un archivo en WSDL que contiene el "Web-Service" seleccionado.

Mediante esta descripción WSDL es que podrá distribuir su "Web-Service" para que este sea implementado en otros lenguajes como C++,Perl y .Net, de la misma manera, es este mismo archivo el que es utilizado para publicar "Web-Services" a un directorio distribuido como UDDI o ebXML.