# Apache Axis

Apache Axis es un framework de código abierto, basado en XML para servicios web. Consiste en una implementación en Java y otra en C++ del servidor SOAP, así como diversos utilitarios y APIs para generar y desplegar aplicaciones de servicios web. Por medio de Apache Axis, los desarrolladores pueden crear aplicaciones computacionales interoperables y distribuidas. Axis se desarrolla bajo los auspicios de la Apache Software Foundation.

## Axis para Java

Al emplear la variante Java de Axis, existen dos maneras de exponer código Java como servicio web. Lo más fácil es usar los archivos JWS (Java Web Service), nativos de Axis. La otra manera consiste en usar despliegues a la medida. Los despliegues a la medida permiten adaptar los recursos que se desea exponer como servicios web.
Véase también Apache Axis2.

### Creación de servicios web vía JWS

Los archivos JWS contienen el código fuente de la clase Java que se desea exponer como servicio web. La principal diferencia entre un archivo Java corriente y un archivo jws consiste en su extensión. Otra diferencia es que los archivos jws se despliegan como código fuente y no como archivos .class compilados.
El siguiente ejemplo se ha tomado de la guía del usuario de Axis. Expone los métodos add y subtract de una clase "Calculator".

#### Despliegue de servicios web vía JWS

Una vez desplegado el servlet de Axis, basta copiar el archivo jws al directorio de Axis en el servidor. Este mecanismo funciona, por ejemplo, en caso de emplearse un contenedor Apache Tomcat. En el caso de otros contenedores web hace falta crear un archivo WAR a la medida.

#### Acceso a servicios web vía JWS

Puede accederse al servicio web creado y desplegado por vía de JWS a través del URL http://localhost:8080/axis/Calculator.jws. En caso de emplearse una configuración a la medida de Apache Tomcat u otro contenedor, la URL puede ser diferente.

### Servicios web desplegados a la medida

Para el despliegue a la medida de servicios web se requiere un descriptor de despliegue específico con una sintaxis denominada WSDD (Web Service Deployment Descriptor). Este descriptor puede emplearse para especificar los recursos que se desea exponer como servicios web. En su versión actual (1.3) soporta
* servicios sobre la base de RPC
* servicios sobre la base de EJB (de sesión) sin estado

#### Generación automática de WSDL

Cuando un servicio web se expone por medio de Axis, un archivo WSDL se generará automáticamente al acceder a la URL del servicio web con el apéndice ?WSDL.

## Axis para C++

Un ejemplo de la implementación y el despliegue de un servicio web simple por medio de la versión C++ de Axis puede hallarse en el tutorial para Axis-CPP (ver sección de enlaces externos).
Los pasos requeridos son:
* Crear el archivo wsdl
* Generar los stubs para cliente y servidor mediante wsdl2ws
* Proveer la implementación del servicio web del lado del servidor (p.ej. el método add del servicio de calculadora)
* Compilar el código servidor y actualizar el archivo deploy.wsdd generado con la ruta del archivo .dll
* Desplegar los archivos binarios al directorio especificado en el wsdd
* Compilar el cliente
* Ejecutar y usar...
Para más información sobre los pasos individuales, véase directamente el tutorial.

## Tecnologías relacionadas

* Apache Axis2 - rediseño/reimplementación de Axis
* Java Web Services Development Pack - framework para servicios web
* Apache CXF - otro framework para servicios web de Apache (ex XFire y Celtix)
* XML Interface for Network Services - framework para RPC y servicios web
* Web Services Invocation Framework - API Java para la invocación de servicios web
* webMethods Glue - producto comercial para la creación de servicios web
* AlchemySOAP - framework de código abierto en C++ para servicios web