Se comenzó a preparar el ambiente de desarrollo web para Pulsar Project, en este caso se tomo la decisión de utilizar el lenguaje PHP como lenguaje de programación de una librería que permite la comunicación de los componentes de los mundos virtuales con el mundo exterior. Se escogió el lenguaje de programación PHP por su soporte en los servidores que típicamente se podrían encontrar en los ambientes educativos donde se implementara la solución, así como también la poca cantidad de recursos que consume el lenguaje.
Anteriormente se instalo un servidor Ubuntu Linux con LAMP, conjunto de herramientas para el desarrollo de aplicaciones web basadas en Linux, Apache, MySQL y PHP, la tarea ahora es crear el ambiente para el desarrollo de la libreria de comunicacion en PHP, para esto se habilitara el directorio web para usuarios y la ejecucion de scripts desde el mismo :
http://pulsarserver/~pulsar/
Actualmente y por políticas de seguridad se encuentra deshabilitado la ejecucion de scripts en PHP desde el directorio de usuario, procedemos a habilitar esa opcion :
Hace una semana, instale dotProject version 2.1.2 en el servidor de estudiantes de la Universidad para los grupos que estan trabajando TSP en Ingeniera de software, con el fin que realicen la planeacion y seguimiento del proyecto del semestre utilizando esta herramienta. El dia de hoy me conto uno de los integrantes del grupo C+- que el dotProject le estaba reportando un error con una sentencia SQL, asi que me di a la tarea de buscar la causa del problema y solucionarla.
Error :
.../query.class.php(623): query failed(SELECT COUNT(ut.*) AS user_task_count ...
Diagnostico :
Solucion :
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 :
Aunque en PHP5 existe una extension para crear servicios web basados en SOAP, algunos servidores donde posiblemente alojemos nuestra aplicacion no tienen habilitada la extension y por tal motivo debemos buscar alternativas para la creacion de los webservices.
En el 2002 Dietrich Ayala escribio una libreria llamada NuSOAP que permite implementar webservices en PHP incluyendo la version 4 y 5, esta libreria es una de las mas populares en la costruccion de servicios web en PHP pues tiene soporte para diferentes versiones de SOAP, como tambien es posible crear servicios web que generen los descriptores de los webservices (WSDL) y soporte de tipos de datos, aunque la implementacion suele complicarse cuando se utilizan estas caracteristicas.
Implementaremos un webservice basado en una funcion llamada sumar de la cual crearemos el webservice y su cliente utilizando NuSOAP, a continuacion se describen los pasos :
Implementar la Funcion a Utilizar :
<?php function sumar($x, $y) { return $x + $y; } ?>
Implementar el Servicio Web :
<?php require_once('nusoap.php'); require_once('sumar.php'); $server = new nusoap_server(); $server->register('sumar'); $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); ?>
http://<servidor>/<ruta>/servicio.php
Implementar el Cliente :
<?php require_once('nusoap.php'); $cliente = new nusoap_client('http://<ipServidor>/<ruta>/servicio.php'); $resultado = $cliente->call('sumar', array('x' => '3', 'y' => 4)); print_r($resultado); ?>
http://<servidor>/<ruta>/cliente.php
Enlaces :