Actualmente cuando se desarrollan servicios web es posible probarlos gracias a que los ambientes de desarrollo crean paginas asociadas con cada uno de los metodos del webservice que permiten hacer las invocacion de los servicios directamente para comprobar su funcionamiento, esto sucede con plataformas como Visual Studio y NetBeans, pero no existen por ejemplo para servicios web creados con PHP que soporten WSDL. Estas paginas de prueba tampoco estan disponibles en los servicios web cuando estan en produccion lo que no permiten identificar y probar de manera rapida la funcionalidad de los webservices.
soapUI de eviware es una herramienta que permite rapidamente a traves de una interface grafica, obtener informacion de los webservices, realizar llamados generando las peticiones para cada metodo del webservice y visualizando las respuestas enviadas por el servidor, permitiendo rapidamente identificar las operaciones asociadas con el webservice y permitiendo hacer pruebas rapidamente del funcionamiento de los webservices sin necesidad de recurrir a escribir codigo para crear clientes que consuman los webservices.
soapUI es una de las herramientas que todo desarrollador web debe tener en su arsenal y esta disponible en una version gratuita que puede ser descargada o ejecutada desde el sitio utilizando Java Web Start, para lo cual necesitamos instalar el JRE de Java o tambien una version Pro con caracteristicas avanzadas para aquellos desarrolladores que necesitan herramientas mas potentes. soapUI incluye en sus versiones actuales soporte para servicios web REST, pruebas funcionales y simulacion de webservices.
Para ilustrar su uso, lo utilizaremos para consumir el webservice de Calculadora creado en Java del cual se hablo en una entrada anterior del blog : Publicar Web Service en Java sin Servidor Web
Requisitos :
Pasos :
Enlaces :
Es posible ejecutar un servicio creado en PHP con NuSOAP en el servidor de aplicaciones escrito en Java Resin, esto permite crear webservices que pueden ser alojados en servidores como Apache2 con soporte para PHP, como tambien servidores Java como el GlassFish.
Para que los webservices funcionen es necesario instalar una version igual o superior a la 3.2.1 la cual instalamos en el anterior post (enlace), como tambien realizar un pequeño cambio en el sel codigo (enlace) Servidor donde se reemplaza la lectura de datos via RAW por una lectura de la entrada de datos php://input, quedando de la siguiente forma el archivo servicio.php
<?php require_once('nusoap.php'); require_once('sumar.php'); $server = new nusoap_server(); $server->register('sumar'); $HTTP_RAW_POST_DATA = file_get_contents("php://input"); $server->service($HTTP_RAW_POST_DATA); ?>
De esta forma es posible ejecutar el servicio web encualquier plataforma o servidor que soporte Java.
Enlaces :
Instalaremos la versión 3.2.1 de Resin, el servidor de aplicaciones Java y PHP de la empresa Caucho Technology sobre el sistema operativo Ubuntu 9.04 con el fin de probar la ejecucion del scriptHola Mundo en PHP. Antes se habia instalado la version 3.1.9 pero esta version en desarrollo provee gran cantidad de mejoras.
Ejecutar Servidor :
Crear Script en PHP :
Detener el Servidor :
Aunque no es una prueba completa del funcionamiento del soporte del lenguaje PHP en Resin, es el primer paso para comenzar a realizar mas pruebas con scripts mas complejos, frameworks y aplicaciones.
Enlaces :
En entradas anteriores en el Blog creamos un servicio web en Java sin necesidad de utilizar un servidor como Tomcat o Glassfish para la publicacion del mismo, a continuacion implementaremos un cliente en Java generado por medio del WSDL que describe el servicio web.
Requisitos :
Generar Codigo para el Cliente en Java :
Utilizar el Cliente :
package serviciosweb; public class Cliente { public static void main(String[] args) { CalculadoraService servicio = new CalculadoraService(); Calculadora calculadora = servicio.getCalculadoraPort(); System.out.println(calculadora.sumar(3,4)); } }
Enlaces :
A 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 :
Implementar el WebService en Java :
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; } }
Crear el Publicador del WebService :
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"); } }
Compilar el WebService :
Publicar el Servicio Web :
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 :