Servicios web (5.1): poniendo Jdeveloper a punto con Axis(I)

Actualmente necesito desplegar una serie de web services en una aplicación que corre sobre Tomcat 5.x . Para los servicios web estoy probando Axis. Como utilizo Jdeveloper para el desarrollo java y paso de instalarme el eclipse, he instalado y configurado un proyecto para desplegar estos servicios.

Afortunadamente otras personas ya se han enfrentado a este problema antes. En el blog de deigote hay una serie de artículos donde describe con encomiable exactitud todos los pasos que ha ido siguiendo:

Si sientes miedo de los web services y te parece que te va a costar diox y ayuda implementarlos te aconsejo que le eches un vistazo a la serie porque hace que parezca tan fácil como es.

Descargando los binarios de Axis

Lo primero es ir a la página de Axis y bajarse la versión que consideréis oportuna. Yo he bajado la 1.4 (axis-bin-1_4.zip). Deberíamos descomprimir el fichero en alún directorio más o menos permanente. Pongamos por ejemplo C:jdevlibsaxis.

Crear el worksapace y su proyecto en Jdeveloper

Vamos a crear una nueva application con su proyecto.

En mi caso, los servicios web van a convivir en el mismo contexto con páginas JSF. Por tanto, selecciono en el Application Navigator el proyecto, botón derecho, propiedades y me voy al nodo Technology Scope. Lo configuro para que abarque HTML, java, JSF, y JSP and Servlets”.

Configuro también el nodo J2EE Application para que se despliegue en un contexto al que le he dado el nombre de wsaxis.

La estructura del proyecto en el Application Navigator debe haber quedado así:

En este punto, lo mejor es comprobar que si creo una página jsf funciona. Así, si luego peta algo, podremos estar seguros de que en el Application Navigator selecciono el proyecto, botón derecho, Open JSF Navigation. Arrastramos de la paleta de componentes una página JSF y la llamamos /prueba.jsp.

Le hacemos doble click y vamos haciendo avanzar el asistente de creación con siguiente-siguiente. Luego le colocamos por ejemplo un Output Text de la paleta de JSF HTML y le ponemos un texto cualquiera.

Ahora pulsamos con el botón derecho sobre la página de prueba y le damos a Run.

Deberíamos obtener un resultado como éste o significará que hemos hecho algo mal:

Agregar la funcionalidad de axis

Ahora debemos descomprimir el archivo zip de la versión de axis que hayamos descargado a un directorio no temporal. Hay que tener en cuenta que vamos a registrar en JDeveloper las librerías y no deberíamos moverlas después de haberlo hecho o no las podrá encontrar después.
Una vez descomprimidas, copiamos todo el contenido de la carpeta <axis>/lib a la carpeta /public_html/WEB-INF/lib de nuestro proyecto.

Después copiamos los ficheros(que no los direcotorios) de la carpeta <axis>/webapps/axis a la carpeta public_html del proyecto.

Ahora el fichero <axis>/webapps/axis/WEB-INF/users.lst a la carpeta public_html/WEB-INF del proyecto.

Para que no nos pase como al amigo Deigote, copiaremos también los ficheros de propiedades necesarios. Para ello crearemos una carpeta src en la carpeta de nuestro proyecto.

A esta carpeta debemos copiar el fichero <axis>/lib/log4j.properties y los ficheros i18n.properties y i18n_ja.properties de la carpeta <axis>/webapps/axis/WEB-INF/classes a la nueva carpeta src.

Es necesario agregar las librerías de axis a la lista de las que dispone jdeveloper. Para ello, vamos a las propiedades del proyecto y le damos al botón Add Library.

En el diálogo que se abre hay que agregar al nodo Class Path el contenido de la carpeta <axis>/lib. Ya, si queremos rizar el rizo, al nodo Doc Path le podemos agregar la carpeta <axis>/doc. Como sólo nos hemos descargado los binarios, tendremos que dejar el nodo Source Path vacío.

Después de crear la librería la seleccionamos y aceptamos.

El nodo Libraries del proyecto debe haber quedado más o menos así:

Fusionar el fichero web.xml

El último paso es fusionar el fichero web.xml de nuestra aplicación con el que viene con axis. En principio no son exluyentes, por lo que el merge es sencillo.
web.xml de la aplicación:



    Fichero web.xml para tutorial de prueba se servicios axis sobre Jdeveloper. http://www.tsoracle.com/wparchives/2007/07/10/servicios-web-51-poniendo-jdeveloper-a-punto-con-axis/#more-34
    
        Faces Servlet
        javax.faces.webapp.FacesServlet
        1
    
    
        Faces Servlet
        /faces/*
    
    
        35
    
    
        html
        text/html
    
    
        txt
        text/plain
    

web.xml que viene con axis:






  Apache-Axis
    
    
        org.apache.axis.transport.http.AxisHTTPSessionListener
    
    
  
    AxisServlet
    Apache-Axis Servlet
    
        org.apache.axis.transport.http.AxisServlet
    
  

  
    AdminServlet
    Axis Admin Servlet
    
        org.apache.axis.transport.http.AdminServlet
    
    100
  

  
    SOAPMonitorService
    SOAPMonitorService
    
        org.apache.axis.monitor.SOAPMonitorService
    
    
      SOAPMonitorPort
      5001
    
    100
  

  
    AxisServlet
    /servlet/AxisServlet
  

  
    AxisServlet
    *.jws
  

  
    AxisServlet
    /services/*
  

  
    SOAPMonitorService
    /SOAPMonitor
  

 
 <!--
  
    AdminServlet
    /servlet/AdminServlet
  
 -->

    
        
        5
    

    
  
    wsdl
     text/xml
  
  

  
    xsd
    text/xml
  

  
    index.jsp
    index.html
    index.jws
  


web.xml merge de los dos:



    Fichero web.xml para tutorial de prueba se servicios axis sobre Jdeveloper. http://www.tsoracle.com/wparchives/2007/07/10/servicios-web-51-poniendo-jdeveloper-a-punto-con-axis/#more-34
    
        Faces Servlet
        javax.faces.webapp.FacesServlet
        1
    
    
        Faces Servlet
        /faces/*
    


   
        org.apache.axis.transport.http.AxisHTTPSessionListener
    
    
  
    AxisServlet
    <!--Apache-Axis Servlet-->
    
        org.apache.axis.transport.http.AxisServlet
    
  

  
    AdminServlet
    <!--Axis Admin Servlet-->
    
        org.apache.axis.transport.http.AdminServlet
    
    100
  

  
    SOAPMonitorService
    <!--SOAPMonitorService-->
    
        org.apache.axis.monitor.SOAPMonitorService
    
    
      SOAPMonitorPort
      5001
    
    100
  

  
    AxisServlet
    /servlet/AxisServlet
  

  
    AxisServlet
    *.jws
  

  
    AxisServlet
    /services/*
  

  
    SOAPMonitorService
    /SOAPMonitor
  

 
 <!--
  
    AdminServlet
    /servlet/AdminServlet
  
 -->  
  
  

    
        35
    
    
        html
        text/html
    
    
        txt
        text/plain
    


    
  
    wsdl
     text/xml
  
  
  
    xsd
    text/xml
    


  
    index.jsp
    index.html
    index.jws
  
  

Comprobar que axis funciona correctamente

Ya sólo queda comprobar que axis funciona. Para ello ejecutamos la página index.jsp.

Y deberíamos ver la página del servidor donde podremos comprobar en el enlace Validation que no nos falta de ná(de lo obligatorio).

Anuncios

10 comentarios en “Servicios web (5.1): poniendo Jdeveloper a punto con Axis(I)

  1. Caramba, acabo de toparme con esto por casualidad y.. tú sí que te lo has currado 😉 un saludo y gracias por la mención.

  2. Creo que tu explicacion es espectacular , procedo con las instrucciones y te comento como me fue , solo una preguna , tambien funciona con Axis2 ??

  3. Hola Cesar.
    Me alegro de que te haya sido útil la guía.
    No lo he probado con Axis2, por lo que tampoco puedo responder a tu pregunta.

  4. esta bueno tu articulo, no he fusionado(merge) el xml pero igual funciona, deberia hacerlo? gracias

  5. Me parece muy buena tu explicacion, estoy comenzando a hacer un servicio web, pero aun tengo muchas dudas, por favor puedes decirme como consumo un servicio web desde un servlet usando Axis, gracias

  6. Me parece excepcional tu solucion, pero donde puedo publicar mi webservice a partir de mi .class.
    Saludos 😉

Los comentarios están cerrados.