Servicios web

14
INSTITUTO TECNOLÓGICO DE TEHUACÁN Programación WEB M.C. FRANCISCO VAZQUEZGUZMAN INVESTIGACIÓN: SERVICIOS WEB Balderrama Rosas Joel Tehuacán, Puebla a 20 de Mayo del 2014

Transcript of Servicios web

Page 1: Servicios web

INSTITUTO TECNOLÓGICO DE TEHUACÁN

Programación WEB M.C. FRANCISCO VAZQUEZGUZMAN

INVESTIGACIÓN: SERVICIOS WEB

Balderrama Rosas Joel

Tehuacán, Puebla a 20 de Mayo del 2014

Page 2: Servicios web

HERRAMIENTAS PARA EL DESARROLLO DE SERVICIOS WEB

Servidores de aplicaciones para servicios Web:

JBoss servidor de aplicaciones J2EE Open Source de Red Hat inc.

Oracle Fusion Middleware

IBM Lotus Domino a partir de la versión 7.0

Axis y el servidor JakartaTomcat (de Apache)

ColdFusion MX de Macromedia

Java Web ServicesDevelopment Pack (JWSDP) de Sun Microsystems (basado en

JakartaTomcat)

JOnAS (parte de ObjectWeb una iniciativa de código abierto)

Microsoft .NET

Novell exteNd (basado en la plataforma J2EE)

WebLogic

WebSphere

JAX-WS con GlassFish

Zope es un servidor de aplicaciones Web orientado a objetos desarrollado en el lenguaje

de programación Python

VERASTREAM de AttachmateWRQ para modernizar o integrar aplicaciones host IBM y VT

PHP

Page 3: Servicios web

NuSOAP NuSOAP es un kit de herramientas (ToolKit) para desarrollar Web Services bajo el lenguaje PHP. Esta compuesto por una serie de clases que nos harán mucho más fácil el desarrollo de Web Services. Provee soporte para el desarrollo de clientes (aquellos que consumen los Web Services) y de servidores (aquellos que los proveen). NuSOAPesta basado en SOAP 1.1, WSDL 1.1 y HTTP 1.0/1.1.

La instalación es bastante sencilla, solo basta ir a la pagina en sourceforge de NuSOAPhttp://sourceforge.net/projects/nusoap/ y bajar el archivo comprimido (es un .zip).

Lo descomprimimos en un directorio de nuestro servidor web (como puede ser /lib que es el directorio por default), y listo, ya podemos hacer uso de NuSOAP.

Ejemplo de servicios web utilizando Nusoap

Ejemplo :nusoap usando wsdl

(Como proveedor del servicio web)

1.- Incluimos la librerianusoap dentro de nuestro archivo

require_once(‘lib/nusoap.php’);

2.- Creamos la instancia al servidor

$server = new soap_server();

3.- Inicializamos el soporte WSDL

$server->configureWSDL(‘hellowsdl2′ , ‘urn:hellowsdl2′ );

4.- Registramos la estructura de datos usado por el servicio

// Parametros de entrada $server->wsdl->addComplexType( ‘Person’, ‘complexType’, ‘struct’, ‘all’, ”, array( ‘firstname’ => array(‘name’ => ‘firstname’, ‘type’ => ‘xsd:string’), ‘age’ => array(‘name’ => ‘age’, ‘type’ => ‘xsd:int’), ‘gender’ => array(‘name’ => ‘gender’, ‘type’ => ‘xsd:string’) ) ); // Parametros de salida

Page 4: Servicios web

$server->wsdl->addComplexType( ‘SweepstakesGreeting’, ‘complexType’, ‘struct’, ‘all’, ”, array( ‘greeting’ => array(‘name’ => ‘greeting’, ‘type’ => ‘xsd:string’), ‘winner’ => array(‘name’ => ‘winner’, ‘type’ => ‘xsd:boolean’) ) );

5.-Registramos el metodo a exponer

$server->register(‘hello’, // method name array(‘person’ => ‘tns:Person’), // input parameters array(‘return’ => ‘tns:SweepstakesGreeting’), // output parameters ‘urn:hellowsdl2′ , // namespace ‘urn:hellowsdl2#hello’, // soapaction ‘rpc’, // style ‘encoded’, // use ‘Greet a person entering the sweepstakes’ // documentation );

6.- Definimos el metodo como una función PHP

function hello($person) { global $server;

$greeting = ‘Hello, ‘ . $person*'firstname'+ . ‘. It is nice to meet a ‘ . $person*'age'+ . ‘ year old ‘ . $person*'gender'+ . ‘.’;

if (isset($_SERVER['REMOTE_USER'])) { $greeting .= ‘ How do you know ‘ . $_SERVER*'REMOTE_USER'+ . ‘?’; }

$winner = $person*'firstname'+ == ‘Scott’;

return array( ‘greeting’ => $greeting, ‘winner’ => $winner ); }

7.- Usamos el pedido para invocar el servicio

Page 5: Servicios web

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”; $server->service($HTTP_RAW_POST_DATA);

Page 6: Servicios web

(Como cliente, consumidor del servicio web) 1.- Incluimos la librerianusoap dentro de nuestro archivo

require_once(‘lib/nusoap.php’);

2.- Creamos la instancia como cliente

$client = new soapclient(‘http://localhost/phphack/hellowsdl2.php?wsdl’, true);

3.- Chekeamos para un posible error

$err = $client->getError(); if ($err) { // Displaythe error echo ‘<h2>Constructor error</h2><pre>’ . $err . ‘</pre>’; // At this point, you know the call that follows will fail }

4.-Llamamos al metodo soap

$person = array(‘firstname’ => ‘Willi’, ‘age’ => 22, ‘gender’ => ‘male’); $result = $client->call(‘hello’, array(‘person’ => $person));

5.- Chekeamos para una falla al momento de llamar al metodo

if ($client->fault) { echo ‘<h2>Fault</h2><pre>’; print_r($result); echo ‘</pre>’; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo ‘<h2>Error</h2><pre>’ . $err . ‘</pre>’; } else { // Display the result echo ‘<h2>Result</h2><pre>’; print_r($result); echo ‘</pre>’; } }

6.- Una vez que todo este bien obtenemos la información deseada del servicio a travez del metodo que hemos invocado se pude ver los pedidos y respuestas de esta manera:

Page 7: Servicios web

echo ‘<h2>Request</h2>’; echo ‘<pre>’ . htmlspecialchars($client->request, ENT_QUOTES) . ‘</pre>’; echo ‘<h2>Response</h2>’; echo ‘<pre>’ . htmlspecialchars($client->response, ENT_QUOTES) . ‘</pre>’; // Display the debug messages echo ‘<h2>Debug</h2>’; echo ‘<pre>’ . htmlspecialchars($client->debug_str, ENT_QUOTES) . ‘</pre>’;

Axis

Para usar Axis es necesario un servidor de aplicaciones como TomCat o más precisamente un servletcontainer. Por lo tanto, lo primero que vamos a hacer es instalar un servidor de aplicaciones en el que serán desplegados los servicios Web.

Para iniciar con Axis vamos a utilizar la distribución binaria estándar proporcionada por Apache Software Foundation. Tan solo hay que descomprimir el fichero comprimido axis2-1.4-bin.zip para encontrar lo necesario para ejecutar Axis.

Axis puede ser ejecutado en modo standolone mediante el fichero $AXIS2_HOME\bin\axis2server.bat

Después de haber iniciado Axis, podemos consultar la lista de servicios disponibles en modo standalone por medio de la URL siguiente: http://localhost:8080/axis2/services/

Para utilizar Axis con un servidor de aplicaciones seguimos estos pasos: o Descomprimimos la distribución de Axis 2 a partir del fichero axis2-1.4-bin.zip. o Abrimos el prompt y escribimos cd $AXIS2_HOME\axis2-1.4\webapp o Instalamos Ant 1.6.5 o versión mas reciente. o Ejecutamos el fichero build.xml con Ant o Es generado un fichero axis2.war en el directorio /dist o Colocamos el fichero axis2.war en el directorio webapps y reiniciamos el servidor o Axis será entonces una aplicación Web desplegada bajo TomCat. El fichero axis2.war

contiene todas las bibliotecas necesarias para la creación y el despliegue de los servicios Web. La estructura de axis2.war es similar a la siguiente:

axis2-web META-INF WEB-INF classes conf axis2.xml lib activation.jar xmlSchema.jar modules modules.list addressing.mar soapmonitor.mar services services.list aservice.aar

Page 8: Servicios web

version.aar web.xml

o El enlace http://localhost:8080/axis2/ permite consultar la pagina de inicio de la aplicación Axis

o Para consultar la lista de servicios desplegados hacemos clic en el vinculoServices.

Page 9: Servicios web

o El vinculoValidate permite comprobar que todas las bibliotecas requeridas por Axis están presentes en la aplicación.

o Despliegue de Servicios Web==

Page 10: Servicios web

Los servicios Web Axis2 pueden ser desplegados bajo forma de ficheros *.aar. Por consiguiente, Un servicio tiene una estructura bien definida como se muestra a continuación:

- CatalogoPrecios - META-INF - services.xml - lib - com - owliance - consola - configuracion - CatalogoPrecios.class

En el que catalogoPrecios es el nombre del servicio que debe ser el mismo que el indicado en el fichero services.xml. Las clases son puestas directamente en la raíz con sus paquetes. Y el directorio lib contiene los *.jar necesarios para la ejecución de los servicios. El fichero services.xml define el servicio y le hace corresponder la clase java adecuada.

Page 11: Servicios web

Creación del servicio Web El siguiente modelo de proyecto muestra bien cómo crear un servicio Web. Se trata de un proyecto eclipse con la estructura de árbol siguiente:

La clase asociada al servicio Web permite consultar el precio de un producto y actualizarlo. En este proyecto llamado OwlianceWS es previsto un fichero build.xml para construir el

proyecto mediante la utilidad ANT.

Page 12: Servicios web

El fichero build.xml contiene un target compile.service para la compilación, un target generate.wsdl para la generación de la descripción wsdl asociada al servicio Web y un target generate.service que permite la encapsulación del servicio Web en un fichero con extensión “.aar” que puede ser reconocido por el engin de despliegue de los servicios Web Axis2.

Para desplegar el servicio basta con colocar el fichero .aar generado en el directorio Webservices $TomeCat\ webapps\axis2\WEB-INF\services y reiniciar el servidor de aplcaciones.

Para testear el servicio tan solo hay que llamar a la URLhttp://localhost:8080/axis2/services/CatalogoPrecios/getPrice?symbol=OWLT. El resultado obtenido es:

Page 13: Servicios web

SERVIDORES DE SERVICIOS WEB REALES

LIBRE PROJECTS Incluye 143 servicios Web y aplicaciones con licencia libre: MIT, GNUGPL, CreativeCommons o

similares.

Es una plataforma que permite agrupar en una única web este tipo de proyectos a modo de tienda

de aplicaciones Open Source. No requiere cuentas de usuario ni existe publicidad de por medio

para financiar los proyectos hospedados.

Libre Projects es un gran proyecto que por el momento hospeda 143 servicios y aplicaciones cuyo

valor es realmente interesante, y cuyo código fuente está disponible de forma que cualquier

usuario puede aprovechar su potencia para proyectos propios -siempre que se respeten las

licencias correspondientes, claro-.

http://libreprojects.net/#favs=joindiaspora-com,owncloud,openstreetmap,jamendo,cloud9,plos

WEB SERVICE SHARE Página que nos proporciona diversos servicios web gratuitos, agrupados en 10 categorías, que son:

Web Service

Stock Market Share Price

Best Soap

Link Share

Page 14: Servicios web

Currency Exchange Rate

Foreign Exchange Broker

Share Market Prices

Data Share

Advertising Web Service

Online Data

http://www.webserviceshare.com/