Resulta que tengo que hacer una práctica para una asignatura de la universidad que consiste en realizar un servicio web que ofrezca acceso a bases de datos distribuidas usando WS-DAI para codificar esos datos y un drive JDBC para acceder a las bases de datos. Como la cosa es larga, voy a intentar guardar los pasos que dé, por dos motivos: puede resultarle interesante a alguien y me ayudará a aclararme a la hora de documentar todo lo que hice.
Hoy empezaré explicando lo que he hecho para tener listo el motor para ofrecer servicios web,
esto es, Axis. Los pasos que he seguido son los siguientes:
- Instalar Tomcat. Para ello, me he ido a la página oficial de Tomcat y me he descargado la versión elegida (en mi caso, los binarios de tomcat versión 4.1). Los he descomprimido en el directorio de instalación (normalmente, sería /usr/local/tomcat, pero yo he preferido mi home, ~/tomcat). La instalación es tan sencilla como eso. Para que termine de funcionar, tendreis que añadir la variable de entorno CATALINA_HOME apuntando al directorio de instalación, y probablemente la variable JAVA_HOME apuntando a vuestra instalación de Java (digo probablemente porque yo ya lo tenía hecho de antes, pero me suena que en el manual de Tomcat te dicen que lo hagas). Por ejemplo, yo he añadido las línea que siguen a mi fichero .tcshrc:
setenv CATALINA_HOME /home/deigote/jakarta-tomcat-4
setenv JAVA_HOME /usr/lib/j2se/1.4Por supuesto, si no teneis Java, debereis instalar Java. Yo he escogido Java 1.4 porque es la que según parece es estable actualmente. Además, para Ubuntu fue tan fácil como escribir en la terminal:
# apt-get install j2re1.4 j2sdk1.4
Para probar que todo va bien, podemos arrancar tomcat. En la terminal, escribimos$ $CATALINA_HOME/bin/catalina.sh startY comprobamos que no hay errores.
En la Documentación de Tomcat 4 teneis toda la ayuda que haga falta por si algo fallara. - Instalar Axis. Para ello, vamos a la página oficial de Axis y descargamos la versión escogida. En mi casó, escogí descargarme los binarios de Axis 1.3, que ya tiene un año y probablemente esté más probada que las siguientes, que son muy recientes. De todas formas, ellos dicen que la versión probada de verdad es la 1.1, así que igual habría que escoger esa. Una vez descargada descomprimimos por ejemplo en la home, y abrimos el fichero de ayuda. En mi caso, hice:
$ tar zxvf axis-bin-1_3.tar.gz
$ cd axis-1_3
$ firefox firefox docs/index.html
A partir de aquí es cuestión de seguir las instrucciones del capítulo de instalación. Pero en resumen, hay que hacer lo siguiente.- Copiar webapps/axis a tomcat/webapps
$ cp -R webapps/axis $CATALINA_HOME/webapps - Establecer la variable de entorno AXIS_HOME al directorio de descompresión de Axis. En mi caso, añadí la siguiente línea a mi fichero .tcshrc:
setenv AXIS_HOME ~/axis-1_3 - Poner a punto el classpath de Axis. Aquí hay un par de erratas en el manual, ¡ojo!. Algunos ficheros de $AXIS_HOME/lib tienen un número de version que en el manual no aparece. Lo mejor es hacer un listado de lo que hay en $AXIS_HOME/lib e ir añadiendo dichos números a lo que especifica el manual, o mejor aún, hacer links simbólicos de tal manera que no haya número de versión. En mi caso, hice:
$ cd $AXIS_HOME/lib
$ ln -s commons-discovery-0.2.jar commons-discovery.jar
$ ln -s commons-logging-1.0.4.jar commons-logging.jar
Así, pude usar la variable de entorno tal y como viene en el manual, añadiendo un .jar que me parece que es necesario y que tampoco viene. En resumen, añadí lo siguiente a mi .tcshrc:
setenv AXISCLASSPATH $AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery.jar:
$AXIS_LIB/commons-logging.jar:$AXIS_LIB/jaxrpc.jar:
$AXIS_LIB/saaj.jar:$AXIS_LIB/log4j-1.2.8.jar:$AXIS_LIB/xml-apis.jar:
$AXIS_LIB/wsdl4j-1.5.1.jar:$AXIS_LIB/xercesImpl.jar
He metido saltos de línea para que se vea bien, pero teneis que quitárlos para que funcione.
- Copiar webapps/axis a tomcat/webapps
- Probar que todo ha ido bien. Para ello, arrancaremos tomcat como ya he explicado antes y haremos todas las pruebas que vienen en el manual. Basicamente:
- Abrimos la página de inicio de Axis. Ahí podemos, por ejemplo, listar los servicios web y ver el wsdl de cada uno.
- Abrimos http://localhost:8080/axis/happyaxis.jsp en el navegador y comprobamos que no hay ninguna librería necesaria que falte. Por ejemplo, a mí me faltaba org.apache.xml.security.Init, para XML seguro, pero era opcional y de momento no la necesito.
- Probar a abrir un Soap EndPoint y un un JWS EndPoint y ver que sale algo parecido a lo que debería. Aunque todavía no sé que es un endpoit, parece que simplemente estamos listando métodos de servicios web de ejemplo que ellos nos dan, de dos formas distintas: SOAP y JWS (el primero supongo que será la manera estandar, mientras que el segundo es una manera rápida de probar un servicio web desde un fichero escrito en Java).
- Probar el AdminClient. No sé exactamente para que es (forma parte del siguiente capítulo, escribir nuestros servicios web), pero si no funciona puede que hayamos hecho algo mal. Para ello, en una terminal hacemos:
$ cd $AXIS_HOME/samples/stock
$ java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient \ -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd
y debería salir algo como
log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
Processing file deploy.wsdd
Done processing
De momento, ignoro los warnings ya que no me merece la pega pegarme con ellos todavía. - Probar la demo de StockQuote (por ejemplo). Ojo, que aquí de nuevo hay una errata en el manual. Debemos probar lo siguiente:
$ cd $AXIS_HOME
$ java -cp .:$AXISCLASSPATH samples.stock.GetQuote \ -lhttp://localhost:8080/axis/servlet/AxisServlet -uuser1 -wpass1 XXX
y salir algo parecido a lo siguiente:
log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
XXX: 55.25
Lo importante es el 55.25, y sale, así que estupendo. Si lo haces como dice el manual te saldrá:Exception in thread "main" java.lang.NoClassDefFoundError: samples/stock/GetQuoteSi eres nuevo en Java, esto te dará algunos quebraderos de cabeza.
Y esto es todo. En el siguiente capítulo hablaré de los pasos que siga para instalar y desplegar un servicio web.


Gracias por el curre.
La serie “Servicios web” me ha ahorrado bastantes horas de investigación.
Me alegro muchono sólo porque te haya sido de utilidad, sino porque te hayas animado a comentarlo en el blog. Estas cosas siempre animan a seguir escribiendo ayudas como ésta. Me hubiese gustado aumentarla más con otras cuestiones como el uso de ant (del que tienes un excelente tutorial en Ruido Blanco) y otras cosillas, pero bueno, se hace lo que se puede
Hola Carlos!
No soy capaz de encontrar el fichero .tcshrc ¿Alguna recomendación? Muchas gracias!
Hola Héctor. Dudo que Carlos vuelva por aquí a leer tu comentarioasí que te contesto yo mismo, que por otra parte, soy el que escribió lo del fichero .tcshrc.
Los ficheros .<algo>rc son, normalmente, ficheros de configuración del programa <algo>, en este caso la shell o consola que uses (odio tener que poner este enlace, mira que decir comando en vez de orden o mandato, y eso que les avisé!). La consola por defecto en casi todas las distribuciones Linux es Bash, así que deberías usar el fichero .bashrc (yo usaba la consola tcsh, por eso hacía mención a dicho fichero). Aunque en el caso de variables de entorno, lo más lógico es usar el fichero .profile, que se ejecuta al inicio de la sesión (no cada vez que abres la terminal) y es global.
Puedes leer en el siguiente enlace acerca del uso de .bashrc y .profile (ojo, es algo antiguo y usan .bash_profile en vez de .profile, que es lo que se usa ahora).