Resistance is Futile

Publicar WebService en Java sin Servidor Web

java-sunA partir del Java 6 es muy sencillo crear webservices utilizando anotaciones, a diferencia de las versiones anteriores donde era necesario utilizar librerias de terceros, servidores web, gran cantidad de codigo y archivos de configuracion.

La mayoria de las veces los webservices los implementamos sobre aplicaciones web por lo que se hace necesario tener un servidor como Tomcat o GlassFish para ejecutar la aplicacion web y adicionalmente publicar los servicios web, pero algunas veces solo necesitamos publicar el servicio web para realizar pruebas sin la necesidad un servidor web completo. Esto es ahora posible utilizando un Endpoint que se encarga de publicar el servicio web en una direccion especifica, la cual atiende los llamados al servicio, como tambien genera el WSDL el cual describe el servicio.

A continuación crearemos un servicio web llamado Calculadora el cual posee un metodo llamado sumar que recibe dos numero y retorna la suma de ellos.

Requisitos :

  • Kit de Desarrollo de Java
    En este caso utilizaremos el Java Development Kit 6 update 13
  • Para el ejemplo utilizaremos el Sistema Operativo Ubuntu 9.04

Implementar el WebService en Java :

  • Abrir una terminal
  • Crear un archivo llamado Calculadora.java con el siguiente código :
 
package serviciosweb;
 
import javax.jws.WebMethod;
import javax.jws.WebService;
 
@WebService
public class Calculadora
{
        @WebMethod
        public int sumar(int x, int y)
        {
                return x + y;
        }
}
 
  • Es necesario suministrar el nombre de paquete el cual sera utilizado como namespace en el webservice.
  • Se utilizan anotaciones para especificar que la clase es un webservice y el metodo sumar esta incluido en el webservice.

Crear el Publicador del WebService :

  • Crear un archivo llamado Publicador.java con el siguiente código :
 
package serviciosweb;
 
import javax.xml.ws.Endpoint;
 
public class Publicador
{
        public static void main(String[] args)
        {
                Calculadora calculadora = new Calculadora();
                Endpoint endpoint = Endpoint.create(calculadora);
                endpoint.publish("http://localhost:4444/CalculadoraService");
        }
}
 
  • Este crea un Endpoint el cual crea un servidor web pequeño que recibe las peticiones hechas al webservice
  • Se debe especificar la ruta en la cual queremos publicar el webservice en forma de direccion web, por ejemplo : http://localhost:4444/CalculadoraService

Compilar el WebService :

  • Compilar el codigo fuente del servicio web :
    javac -d . Calculadora.java
  • Compilar el publicador :
    javac -d . Publicador.java
  • Generar los archivos asociados con las anotaciones y el webservice
    apt Calculadora.java

Publicar el Servicio Web :

  • Ejecutar el Publicador del webservice
    java serviciosweb.Publicador
  • Visualizar el WSDL generado para el servicio (utilizar la url donde se publico el servicio)

    http://localhost:4444/CalculadoraService?wsdl

Con esto ya tenemos publicado nuestro servicio web, sin necesidad de tener un servidor web como Tomcat o Glassfish, lo que permite realizar pruebas de una forma rapida.

Enlaces :

Entradas Relacionadas:

  1. Instalacion de Glassfish v2.1 en Ubuntu Server 9.04
  2. Unboxing, Camara Web Minuro 3D

4 Responses to “Publicar WebService en Java sin Servidor Web”

  1. Muy interesante profe. No conocía el Endpoint. Había visto algo similar cuando me dió por leer un poco de Ruby pero no sabía que se podía hacer con Javita.

  2. Jose Antonio says:

    He estado buscado una forma sencilla de generar web services, este ejemplo me funciono perfectamente y muy adecuado. Quisiera saber que debo hacer para por ejemplo publicar este mismo ejemplo en un servidor tomcat.

    Gracias.

  3. Leonardo says:

    La verdad que esto es buenisimo!!
    No depender de Tomcat ni nada!!
    Pero tengo un problema, solo se hace el bind para localhost, como hago para que escuche a PC’s remotas?

    Gracias

Leave a Reply

Powered by WordPress | Designed by Elegant Themes