2. Servicios web JAVA
Un servicio web, es una interfaz de red accesible que proporciona funcionalidad y que está
construida bajo tecnologías estándares de internet.
SOAP es un protocolo estándar para intercambio de mensajes entre dos objetos en
diferentes procesos. SOAP es XML, o más bien, una aplicación de la especificación de XML.
El envío de mensajes a través de XML, es decir SOAP, tiene dos aplicaciones relacionadas:
RPC y EDI. Remote Procedure Call (Llamada a procedimiento remoto) es la base de la
computación distribuida, la forma en la que un programa hace una llamada en otro
pasando argumentos y recibiendo valores. Electronic Document Interchange (Intercambio
electrónico de datos) es la base de transacciones de negocio automatizadas, definiendo un
formato estándar e interpretación de documentos comerciales, financieros y mensajes.
SOAP para EDI, también se conoce como “document-style”. SOAP para RPC se conoce
como “RPC-Style”.
La especificación de SOAP no maneja descripción. La especificación estándar para realizar
la descripción de un servicio web es WSDL. Usando WSDL, un servicio web puede describir
todo lo que hace, como lo hace y la forma de cómo puede ser invocado por un
consumidor.
Axis es una implementación SOAP de Apache. Es una implementación más compleja de
servicios web diseñada para implementar procesos de manera sencilla.
Tecnologías para Servicios Web en Java EE:
• Especificación de Implementación
http://jcp.org/en/jsr/detail?id=109
• JAX-WS: Java API for XML Web Services
https://jax-ws.dev.java.net/
• JAX-RPC: Java API for XML-based RPC
https://jax-rpc.dev.java.net/
• JAXB: Java Architecture for XML Binding
https://jaxb.dev.java.net/
• SAAJ: SOAP with Attachments API for Java
https://saaj.dev.java.net/
• StAX:Streaming API for XML
http://java.sun.com/webservices/docs/1.6/tutorial/doc/SJSXP.html
• Web Services Metadata for the Java Platform
http://jcp.org/en/jsr/detail?id=181
3. Creación del servicio web
Una forma muy sencilla de desarrollar un servicio web en Java es haciendo uso de la
plataforma de desarrollo NetBeans 7.x que nos permite además desplegarlos en un
servidor web local para pruebas como es GlassFish.
Desarrollo del servicio web
@WebService(serviceName = "WSDemo")
public class WSDemo {
/**
* This is a sample web service operation
*/
@WebMethod(operationName = "hello")
public String hello(@WebParam(name = "name") String txt) {
return "Hello " + txt + " !";
}
}
Analizando su código, vemos que el servicio publica una función llamada hello. Sabemos
que la clase es un servicio por @WebService y que es una función publicada en el WS
por@WebMethod. Si queremos añadir una nueva función, simplemente tendremos que
copiar la anterior y cambiar lo que queramos.
Para publicar el servicio simplemente seleccionaremos deploy en el menú contextual sobre
el proyecto.
4. Es posible que nos pida permiso para arrancar GlassFish.
En el output del IDE nos mostrará que se ha generado correctamente y que GlassFish está
iniciado.
En la pestaña de GlassFish podremos ver la ruta para acceder al servicio web.
Probando el servicio web
Accedemos a la URL que nos indica para ver el servicio. Para consultar su WSDL solo
tenemos que añadir ?WSDL al final de la URL.
Esto nos valdrá en el caso de querer probarlo con herramientas
como SoapUI(http://www.soapui.org/), al que deberemos indicarle el WSDL para que
genere la invocación.
5. Este nos generará la invocación, y simplemente pulsado el botón de run, obtendremos el
resultado en el lateral derecho de la request.
Servicios web PERL
SOAP::Lite es un conjunto de módulos de Perl que proveen una interfaz simple y liviana
para el protocolo SOAP, tanto en el lado cliente como en el del servidor. SOAP::Lite es
actualmente el kit de desarrollo de web services para Perl más difundido y utilizado. Su
página en SourceForge ha registrado más de 10,700 descargas en casi 2 años.
SOAP::Lite provee clases para implementar funcionalidades de un cliente SOAP, varios
servidores, soporte a datos y muchas otras tareas. La siguiente es una lista resumida de sus
características:
Soporte de Protocolos
Soporta las especificaciones SOAP 1.1 y SOAP 1.2.
Incluye XMLRPC::Lite, una implementación del protocolo XML-RPC en el lado del cliente y
del servidor. Entre los protocolos de trasporte disponibles, están HTTP, SMTP, POP3 y TCP.
Soporta publicación y peticiones UDDI del lado del cliente, a través de un API.
6. WSDL::Generator
WSDL::Generator es un módulo de Perl para crear archivos de descripción de servicios
(WSDL) automáticamente a partir de módulos de perl expuestos como servicios web. Éste
módulo, desarrollado por Pierre Denis <pdenis@fotango.com>, es tal vez el único que se
ha creado hasta ahora con ésta funcionalidad en el mundo de Perl. SOAP::Lite y
WSDL::Generator en la Práctica
Ejemplo
A continuación, se muestra un ejemplo de la utilización del lenguaje Perl para exponer un
servicio web sencillo. En la documentación de los módulos puede encontrarse una
descripción extendida de todas las funcionalidades que poseen y cómo utilizarlas.
El siguiente es el código fuente de un módulo de Perl que implementa una clase llamada
“Cafetera”, con un único método llamado “prepararCafe”, que recibe como parámetro el
número de tasas y devuelve como resultado un mensaje indicando el número de tasas
preparadas:
Código del archivo Cafetera.pm <perl>
#!/usr/bin/perl -w
# Servicio web de ejemplo
package Cafetera;
use strict;
# Este es el constructor
sub new{
my $proto = shift;
my $class = ref($proto) || $proto;
my $tasas = 0;
bless($tasas,$class);
}
sub prepararCafe{
shift;
my $tasas = shift;
print STDERR "Llamado con el parámetro $tasas";
return "Se prepararon ".$tasas." tasas";
}
1;
7. Servicios web PHP
Cliente
La creación de un cliente de un servicio web con PHP es relativamente sencilla haciendo
uso de PHP-SOAP. Con la descripción del servicio al que queremos acceder (fichero wsdl),
obtendremos acceso a todos los métodos que ofrece el servicio web. A continuación
mostramos un ejemplo donde se verá más claramente lo expuesto. Concretamente en el
ejemplo llamamos a un WS que, dada una cadena, devuelve la cadena al revés.
$objClienteWS = new SoapClient('Ws_Ejemplo.wsdl');
$resultado = $objClienteWS->ejemplo('Hola');
print_r($resultado);
De la ejecución de este cliente obtenemos el siguiente resultado:
aloH
Servidor
La creación del servidor requiere, evidentemente, algo más de trabajo que la del cliente. En
este punto haremos un pequeño resumen de los pasos a seguir. Primero tenemos que
crear un fichero php (en nuestro ejemplo server.php) que contendrá las llamadas a las
clases SOAP correspondientes al servidor. En este mismo fichero se puede incluir la
definición de la clase que implementará todos los métodos exportados. Siguiendo con
nuestro ejemplo, tenemos que tener un método que nos devuelva la inversa de una
cadena. El contenido del fichero es:
require_once 'SOAP/Server.php';
class Prueba_Server {
function ejemplo($cadena){
return strrev($cadena);
}
}
8. $server = new SOAP_Server;
$server->_auto_translation = true;
$soapclass = new Prueba_Server();
$server->addObjectMap($soapclass,'urn:Prueba_Server');
$server->service($HTTP_RAW_POST_DATA);
Para que el cliente tenga acceso a la información que ofrece el WS, necesita de la
definición de los métodos exportados por la clase. Esto se obtiene a partir del fichero
WSDL. El fichero de nuestro ejemplo es el siguiente:
<?xml version="1.0"?>
<definitions name="ServerExample" targetNamespace="urn:ServerExample"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="urn:ServerExample"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types xmlns="http://schemas.xmlsoap.org/wsdl/"></types>
<message name="ejemploRequest">
<part name="cadena" type="xsd:string" />
</message>
<message name="ejemploResponse">
<part name="cadena" type="xsd:string" />
</message>
<portType name="ServerExamplePort">
<operation name="ejemplo">
<input message="tns:ejemploRequest" />
<output message="tns:ejemploResponse" />
</operation>
</portType>
<binding name="ServerExampleBinding" type="tns:ServerExamplePort">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="ejemplo">
10. Servicios web Google
Lista de servicios de Google:
Añadir a Google Reader permite la creación de un botón gráfico con la dirección del
RSS de tú blog para que al clickarlo este sea añadido a Google Reader.
Blogger es un servicio muy popular y gratuito de creación y publicación de blogs.
Froogle es un buscador de productos. Utilizado para buscar el precio más barato de un
producto y la comparativa de estos en diferentes tiendas online.
GMail es el servicio de correo electrónico de google, actualmente proporciona más de
2GB de capacidad de almacenamiento.
Google AdSense es el servicio de publicidad contextual de Google.
Google AdWords es la otra parte de AdSense. Mientras AdSense permite a los
webmasters poner los anuncios en sus web, Adwords permite la publicación de estos
en la red de AdSense. Además el pasado 21 de noviembre Google liberó el "Onsite
Advertiser Sign-Up" que permite a un anunciante publicar sus anuncios en sitios
específicos de la red AdSense.
Google Alerts te permite ser avisado por correo electrónico acerca de búsquedas y/o
textos particulares.
Google Analytics analiza las páginas web, a través de un código javascript, guardando
todo tipo de estadísticas de los visitantes. Permite la integración con una cuenta
deAdWords.
Google Answers responde a tus preguntas.
Google Base Libreria de contenidos, portal de anuncios clasificados o servicio
inclasificable que permite añadir cualquier tipo de contenido a su base de datos.
Google Blog Search motor de búsqueda orientado a la búsqueda en blogs/bitácoras
excluyendo el resto de páginas web.
Google Bookmarks es un servicio que permite a los usuarios guardar marcadores o
favoritos con el título y las etiquetas deseadas, es decir, un del.icio.us "made in"
google, pero bastante más cutre. Es necesaria una cuenta de Gmail para acceder. (+
info)
Google Browser Sync: Se trata de una plugin para el navegador Firefox con el que
podrás sincronizar allá donde lo utilices tus ajustes incluyendo tus favoritos, tu historial,
las cookies y las contraseñas que tengas almacenadas.
Google Catalogs busca en catálogos.
11. Google Checkout: Sistema de pago por internet homólogo a Paypal. Proporcionas los
datos de tu tarjeta al sistema y puedes pagar utilizando tu correo electrónico (en los
sitios que acepten pagos a través de Google Checkout, claro).
Google Co-op permite a los usuarios suscribirse y catalogar contenidos procendentes
de sitios como CNNMoney.con (economía), Fandango.com (espectáculos) o
People.com (prensa rosa) para luego utilizar esos metadatos para mejorar la
experiencia de búsqueda de los usuarios.
Google Code servicio de Google orientado a la promoción y contribución del software
de código abierto (Open Source).
Google Code Search: Es un buscador de código fuente que permite utilizar comandos
de búsqueda especiales.
Google Compute existe como parte de la Barra de herramientas de Google (Google
Toolbar) y se encarga de utilizar el ‘idle time’ de tú ordenador (es decir, cuando no
estás haciendo nada) para computar información desde proyectos distribuidos
comoFolding@Home.
Google Deskbar se trata de un ventana embedida de IE en tú barra de tareas de
Windows, la cual te permite realizar búsquedas a traves de Google.
Google Desktop Un servicio que ofrece varios widgets(?) y una barra lateral la cual te
permite realizar búsquedas, sindicar contenidos, escribir notas, consultar información
metereológica y más.
Google Directory es un clon del directorio ODP pero llenito de AdSense.
Google Docs & Spreadsheets: Lugar desde el que podrás utilizar el procesador de textos
(docs) y la hoja de cálculo (spreadsheets) de Google, crear y gestionar documentos
colaborativos y tener todo organizado (Descripción y más info enGenbeta).
Google Earth permite visualizar imágenes de satélite de cualquier rincón del mundo.
Google Finance: Información bursatil: bolsa, cotizaciones, acciones, con gráficos e
información adicional relacionada. Una copia del servicio Yahoo! Finances con alguna
mejora. (+ sobre Google Finance).
Google Groups te permite crear listas de correo, interactuar en ellas y leer los mensajes
de Usenet.
Google Homepage te permite personalizar Google a tú gusto. Permite añadir widgets
al usuario como información meteorológica, noticias, horóscopos y más.
Google Hosted: Permite utilizar diferentes servicios como Gmail, Google Talk, Google
Calendar y Google Page Creator sobre un nombre de dominio que le asociemos.
Google Image Search es el buscador de imágenes de Google.
12. Google Labs nos muestra los projectos en los cuales Google está trabajando para una
futura liberalización de los mismos.
Google Local Muestra información local basándose en datos procedentes de Google
Maps.
Google Maps es un servicio de mapeo el cual integra rutas de conducción y
localización con mapas de ciudades. Dispone de un API bastante elaborado con el que
se pueden realizar aplicaciones independientes que utilicen Google Maps.
Google Mars incluye un conjunto de mapas e imágenes de la superficie de Marte.
Google Moon similar al anterior, en este caso muestra planos e imágenes de la
superficie lunar, asi como información sobre alunizajes que se han producido.
Google Mobile permite el acceso al buscador Google a través de un movil WAP.
Google Movie Showtimes permite introducir un código postal o una dirección que
servirá para localizar cines y espectáculos cercanos a la zona mediante Google Maps.
(De momento solo disponible en los EE.UU.).
Google Música busca información sobre grupos de música, tiendas de música online y
además combina resultados de Froogle, de Google Images y quizás de ma´s servicios.
(# Fuente)
Google News es un portal de noticias agregadas por ordenadores de Google. Todo el
proceso es automático.
Google Notebook: Permite tomar y archivar notas al vuelo mientras se navega y si se
desea ofrece la posibilidad de compartir las notas con los demás. También incluye un
buscador de notas públicas (de otros usuarios). (Gracias Nuke)
Google Pack se trata de una recopilación de software para ordenadores con Windows
XP y navegador Mozilla Firefox.
Google Pages se trata de un servicio gratuito de Google para el alojamiento y la
creación de páginas web de una manera sencilla e intuitiva, también proprocionan un
subdominio del
tipo: nombredecuenta.googlepages.com.(#Fuentes: 1 y 2, elucubraciones y teorías
sobre Google Pages).
Google Print o Google Book Search es un buscador de libros. Busca en libros (titulos y
contenido) que el propio Google ha digitalizado e incluido a su base de datos.
Google Reader es el agregador o lector de feeds de Google. (+ info)
Google Ridefinder permite localizar facilmente taxis en algunas de las mayores
ciudades de Estados Unidos.
Google Scholar busca información en documentación de tipo académico/científico.
13. Google Send to Phone es una pequeña extensión para Firefox la cual permite enviar
SMS (mensajes de texto) a teléfonos móviles.
Google Sitemap es un lugar en donde los webmasters pueden subir el "Sitemap" de su
página web. Google leerá esos Sitemaps y los utilizará para indexar más correctamente
las webs. Recientemente ha incluido nuevas funcionalidad de tracking relacionadas
conAdSense.
Google SMS permite acceder a varios servicios del buscador a traves del movil.
Google Spreadsheets: Se trata de un gestor en linea de hojas de cálculo con las
funcionalidades básicas de cualquier Excel (Gracias por el aviso Nuke)
Google Suggest es una extensión al motor de búsqueda normal de Google. Se encarga
de sugerir búsquedas (ordenadas por cantidad de resultados) mientras se está
escribiendo la consulta.
Google Talk es el programa de mensajeria instantanea y voz sobre IP de Google, que
funciona bajo Jabber (protocolo abierto basado en XML). Es necesaria una cuenta
deGmail para utilizarlo.
Google Toolbar es una barra de herramientas para navegadores web, la cual permite
realizar búsquedas con Google y acceder a sus servicios de una manera rápida, además
de mostrar otra información interesante como puede ser el PageRank.
Google Transit es un servicio que permite conocer el estado de las carreteras (en
cuánto a densidad de tráfico y retenciones se refiere) y realizar aproximaciones de
como pudieran estar a determinadas horas del día. De momento solo disponible en los
Estados Unidos.
Google Trends se trata de una herramienta orientada a webmasters y profesionales
creada para realizar análisis cualitativos de las búsquedas, pudiendose consultar estos
por ciudades, regiones y por idioma. También permite comparar varios términos.
Google Video ofrece un archivo de videos de libre uso y Google Video Upload permite
alojar en Google los videos anteriormente citados.
Google Video Store es un servicio integrado dentro de Google Video que permite
comprar videos de series de televisión y otas temáticas. (# Más información sobre
Google Video Store).
Google Web Accelerator supuestamente ayuda a cargar las páginas web más rápido.
Se han encontrado varios problemas de seguridad y privacidad en este programa.
Google Website Optimizer: Una herramienta para mejorar los ratios de conversiones de
adwords de nuestras páginas (más información en Online.com.es).
Google Web Search motor de búsqueda de Google.
14. Hello es un pequeño cliente de mensajeria instantanea el cual es utilizado junto
conPicasa para compartir imágenes con familiares y amigos.
Measure Map es un sistema de estadísticas para blogs, más optimizado para ellos
queGoogle Analytics, que es muy comercial. (# Fuente).
Orkut es una red social ala que solo se puede acceder mediante invitación o con una
cuenta de Google.
Picasa es un fantástio organizador de fotos digitales e imágenes para tú escritorio.
SketchUp se trata de un software para presentación de mapas y objetos 3D para darle
un empujón a Google Earth.(# Fuente) (Info. oficial de la adquisición) .
YouTube: Servicio mundialmente famoso para visualizar y compartir videos que Google
compraba a principios de octubre de 2006 por una cifra superior a los 1.500 millones
de dólares. Además se convierte en la primera adquisición del gigante que conserva su
propia imagen e identidad.
Writely es un potente y muy completo procesador de textos en linea (online), Google
se hizo con sus servicios el pasado 9 de Marzo. (Comunicado oficial de Google y de
Writely)
El API de Google Maps proporciona estos servicios web como una interfaz para solicitar a
servicios externos datos del API de Google Maps y utilizarlos en las aplicaciones de google
Maps. Estos servicios se han diseñado para utilizarse en combinación con un mapa, tal
como se establece en las limitaciones de licencia de las condiciones de servicio del API de
Google Maps.
Estos servicios web envían solicitudes HTTP a URL específicas, transmitiendo a los servicios
parámetros de URL como argumentos. Normalmente, estos servicios devuelven los datos
de la solicitud HTTP en formato JSON o XML para que tu aplicación los analice o procese.
Las solicitudes de servicios web suelen tener el siguiente formato:
http://maps.googleapis.com/maps/api/service/output?parameters
donde service indica el servicio concreto solicitado y output indica el formato de respuesta
(normalmente json o xml).
Las guías para desarrolladores correspondientes a cada uno de los servicios incluyen la
documentación completa sobre cada uno de ellos. No obstante, esta guía incluye algunas
prácticas comunes que resultan de utilidad para configurar las solicitudes y procesar las
respuestas de servicio web.