SlideShare una empresa de Scribd logo
1 de 12
INSTITUTO TECNOLÓGICO DE TEHUACÁN
Programación WEB
SERVICIOS WEB
M.C. FRANCISCO VAZQUEZ GUZMAN
Arturo Hernández Martínez
Tehuacán, Puebla a 26 de Mayo del 2014
HERRAMIENTAS PARA DESARROLLO DE SERVICIOS WEB
Servidores para servicios Web:
 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
 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 Jakarta Tomcat (de Apache)
 ColdFusion MX de Macromedia
 Java Web Services Development Pack (JWSDP) de Sun Microsystems (basado en Jakarta
Tomcat)
Axis
 Para usar Axis es necesario un servidor de aplicaciones como TomCat o más precisamente un
servlet container. 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_HOMEbinaxis2server.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_HOMEaxis2-1.4webapp
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
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 vinculo Services.
o El vinculo Validate permite comprobar que todas las bibliotecas requeridas por
Axis están presentes en la aplicación.
o Despliegue de 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.
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.
 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 webappsaxis2WEB-INFservices y reiniciar el servidor de
aplcaciones.
 Para testear el servicio tan solo hay que llamar a la URL
http://localhost:8080/axis2/services/CatalogoPrecios/getPrice?symbol=OWLT. El
resultado obtenido es:
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). NuSOAP esta 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 NuSOAP
http://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 libreria nusoap 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
$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
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA :
”;
$server->service($HTTP_RAW_POST_DATA);
(Como cliente, consumidor del servicio web)
1.- Incluimos la libreria nusoap 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) {
// Display the 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:
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>’;
SERVIDORES DE SERVICIOS WEB
LIBRE PROJECTS
Incluye 143 servicios Web y aplicaciones con licencia libre: MIT, GNU GPL, Creative Commons 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
 Currency Exchange Rate
 Foreign Exchange Broker
 Share Market Prices
 Data Share
 Advertising Web Service
 Online Data
http://www.webserviceshare.com/

Más contenido relacionado

La actualidad más candente

Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundojubacalo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajaxjubacalo
 
Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2guest39ff1b
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendarjvelizster
 
Instalacion Weblogic Server 12c Windows 10.
Instalacion Weblogic Server 12c Windows 10.Instalacion Weblogic Server 12c Windows 10.
Instalacion Weblogic Server 12c Windows 10.Moisés Elías Araya
 
Conexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQLConexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQLIvan Luis Jimenez
 
Instalar Docker Desktop y Kubernetes en Windows 10
Instalar Docker Desktop y Kubernetes en Windows 10Instalar Docker Desktop y Kubernetes en Windows 10
Instalar Docker Desktop y Kubernetes en Windows 10Moisés Elías Araya
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controllerhydras_cs
 
Replicación SQL Server 2008
Replicación SQL Server 2008Replicación SQL Server 2008
Replicación SQL Server 2008UTA
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradoresPablo Campos
 
Instalacion basica ELK (elasticsearch) Windows
Instalacion basica ELK (elasticsearch) WindowsInstalacion basica ELK (elasticsearch) Windows
Instalacion basica ELK (elasticsearch) WindowsMoisés Elías Araya
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javadevsco63
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontesjalzate
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 

La actualidad más candente (19)

Cherokee
CherokeeCherokee
Cherokee
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
 
Segunda sesion
Segunda sesionSegunda sesion
Segunda sesion
 
Instalacion Weblogic Server 12c Windows 10.
Instalacion Weblogic Server 12c Windows 10.Instalacion Weblogic Server 12c Windows 10.
Instalacion Weblogic Server 12c Windows 10.
 
Conexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQLConexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQL
 
Instalar Docker Desktop y Kubernetes en Windows 10
Instalar Docker Desktop y Kubernetes en Windows 10Instalar Docker Desktop y Kubernetes en Windows 10
Instalar Docker Desktop y Kubernetes en Windows 10
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
 
Replicación SQL Server 2008
Replicación SQL Server 2008Replicación SQL Server 2008
Replicación SQL Server 2008
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradores
 
Instalacion basica ELK (elasticsearch) Windows
Instalacion basica ELK (elasticsearch) WindowsInstalacion basica ELK (elasticsearch) Windows
Instalacion basica ELK (elasticsearch) Windows
 
Aplicaciones Web Seguras (Anti-SQLi)
Aplicaciones Web Seguras (Anti-SQLi)Aplicaciones Web Seguras (Anti-SQLi)
Aplicaciones Web Seguras (Anti-SQLi)
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde java
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontes
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 

Destacado

CoffeeScript for the Rubyist
CoffeeScript for the RubyistCoffeeScript for the Rubyist
CoffeeScript for the RubyistMark
 
Apache axis v1.1
Apache axis v1.1Apache axis v1.1
Apache axis v1.1Maga Lasic
 
Web services SOAP con JAX-WS
Web services SOAP con JAX-WSWeb services SOAP con JAX-WS
Web services SOAP con JAX-WSVortexbird
 
Scrum Extreme Programming para Programadores
Scrum Extreme Programming para ProgramadoresScrum Extreme Programming para Programadores
Scrum Extreme Programming para ProgramadoresErik Gur
 
Happy Programming with CoffeeScript
Happy Programming with CoffeeScriptHappy Programming with CoffeeScript
Happy Programming with CoffeeScriptEddie Kao
 
Servidores de aplicaciones para servicios web
Servidores de aplicaciones para servicios webServidores de aplicaciones para servicios web
Servidores de aplicaciones para servicios webmonse_pacheco
 
Servicios Web
Servicios  WebServicios  Web
Servicios Webbarkuz
 
R Gene Farley Resume 6 22 09
R Gene Farley Resume 6 22 09R Gene Farley Resume 6 22 09
R Gene Farley Resume 6 22 09genefarley
 
Question 6 evaluation
Question 6   evaluationQuestion 6   evaluation
Question 6 evaluationJoey Firth
 
World PetroCoal Congress 2011
World PetroCoal Congress 2011World PetroCoal Congress 2011
World PetroCoal Congress 2011dranilgarg
 
Portafolio digital oscar
Portafolio digital oscarPortafolio digital oscar
Portafolio digital oscarpuerto-triunfo
 

Destacado (20)

CoffeeScript for the Rubyist
CoffeeScript for the RubyistCoffeeScript for the Rubyist
CoffeeScript for the Rubyist
 
6.angular js
6.angular js6.angular js
6.angular js
 
Apache axis v1.1
Apache axis v1.1Apache axis v1.1
Apache axis v1.1
 
Mongo db
Mongo dbMongo db
Mongo db
 
Web services
Web services Web services
Web services
 
Web services SOAP con JAX-WS
Web services SOAP con JAX-WSWeb services SOAP con JAX-WS
Web services SOAP con JAX-WS
 
Scrum Extreme Programming para Programadores
Scrum Extreme Programming para ProgramadoresScrum Extreme Programming para Programadores
Scrum Extreme Programming para Programadores
 
Happy Programming with CoffeeScript
Happy Programming with CoffeeScriptHappy Programming with CoffeeScript
Happy Programming with CoffeeScript
 
Servidores de aplicaciones para servicios web
Servidores de aplicaciones para servicios webServidores de aplicaciones para servicios web
Servidores de aplicaciones para servicios web
 
Introducción a Angular JS
Introducción a Angular JSIntroducción a Angular JS
Introducción a Angular JS
 
Servicios Web
Servicios  WebServicios  Web
Servicios Web
 
Web services y java
Web services y javaWeb services y java
Web services y java
 
Proyecto_gps
Proyecto_gpsProyecto_gps
Proyecto_gps
 
Trabajo no. 1 ofimatica
Trabajo no. 1 ofimaticaTrabajo no. 1 ofimatica
Trabajo no. 1 ofimatica
 
Tarea:7
Tarea:7Tarea:7
Tarea:7
 
R Gene Farley Resume 6 22 09
R Gene Farley Resume 6 22 09R Gene Farley Resume 6 22 09
R Gene Farley Resume 6 22 09
 
Question 6 evaluation
Question 6   evaluationQuestion 6   evaluation
Question 6 evaluation
 
World PetroCoal Congress 2011
World PetroCoal Congress 2011World PetroCoal Congress 2011
World PetroCoal Congress 2011
 
Portafolio digital oscar
Portafolio digital oscarPortafolio digital oscar
Portafolio digital oscar
 
Desarrollo del internet
Desarrollo del internetDesarrollo del internet
Desarrollo del internet
 

Similar a Servicios web

Similar a Servicios web (20)

Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-google
 
Introduccion a Nodejs
Introduccion a NodejsIntroduccion a Nodejs
Introduccion a Nodejs
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Observium
ObserviumObservium
Observium
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
 
Observium
ObserviumObservium
Observium
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
J M E R L I N P H P
J M E R L I N P H PJ M E R L I N P H P
J M E R L I N P H P
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 

Servicios web

  • 1. INSTITUTO TECNOLÓGICO DE TEHUACÁN Programación WEB SERVICIOS WEB M.C. FRANCISCO VAZQUEZ GUZMAN Arturo Hernández Martínez Tehuacán, Puebla a 26 de Mayo del 2014
  • 2. HERRAMIENTAS PARA DESARROLLO DE SERVICIOS WEB Servidores para servicios Web:  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  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 Jakarta Tomcat (de Apache)  ColdFusion MX de Macromedia  Java Web Services Development Pack (JWSDP) de Sun Microsystems (basado en Jakarta Tomcat)
  • 3. Axis  Para usar Axis es necesario un servidor de aplicaciones como TomCat o más precisamente un servlet container. 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_HOMEbinaxis2server.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_HOMEaxis2-1.4webapp 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 version.aar web.xml o El enlace http://localhost:8080/axis2/ permite consultar la pagina de inicio de la aplicación Axis
  • 4. o Para consultar la lista de servicios desplegados hacemos clic en el vinculo Services. o El vinculo Validate permite comprobar que todas las bibliotecas requeridas por Axis están presentes en la aplicación.
  • 5. o Despliegue de 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.
  • 6. 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.
  • 7.  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 webappsaxis2WEB-INFservices y reiniciar el servidor de aplcaciones.  Para testear el servicio tan solo hay que llamar a la URL http://localhost:8080/axis2/services/CatalogoPrecios/getPrice?symbol=OWLT. El resultado obtenido es:
  • 8. 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). NuSOAP esta 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 NuSOAP http://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 libreria nusoap 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 $server->wsdl->addComplexType( ‘SweepstakesGreeting’,
  • 9. ‘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 $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”; $server->service($HTTP_RAW_POST_DATA);
  • 10. (Como cliente, consumidor del servicio web) 1.- Incluimos la libreria nusoap dentro de nuestro archivo require_once(‘lib/nusoap.php’); 2.- Creamos la instancia como cliente $client = new soapclient(‘http://localhost/phphack/hellowsdl2.php?wsdl&#8217;, true); 3.- Chekeamos para un posible error $err = $client->getError(); if ($err) { // Display the 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:
  • 11. 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>’;
  • 12. SERVIDORES DE SERVICIOS WEB LIBRE PROJECTS Incluye 143 servicios Web y aplicaciones con licencia libre: MIT, GNU GPL, Creative Commons 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  Currency Exchange Rate  Foreign Exchange Broker  Share Market Prices  Data Share  Advertising Web Service  Online Data http://www.webserviceshare.com/