Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIÓN 3
OBJETIVO GENERAL 4
OBJETIVO ESPECIFICO 4
CONCLUSIÓN 9
BIBLIOGRAFIA 10
INTRODUCCIÓN
Vamos a crear nuestros propios Servicios Web, que ofrecerán una serie de métodos
a los que se podrá llamar mediante RPC desde cualquier lugar de Internet mediante
protocolos estándar (mensajes SOAP).
Para evitar estos problemas, utilizaremos librerías que nos permitan leer o generar
mensajes SOAP para la invocación de métodos remotos, como es el caso de la API
JAX-WS.
Además, para facilitar aún más la tarea de desarrollar Servicios Web, normalmente
contaremos con herramientas que a partir de las clases que implementan nuestro
servicio generen automáticamente todo el código necesario para leer el mensaje
SOAP de entrada, invocar el método, escribir el mensaje SOAP de salida, y
devolverlo al cliente.
OBJETIVOS ESPECIFICOS
Son las siglas de Simple Object Access 1. Las aplicaciones deben ser independientes
Protocol. Con este protocolo se pedían realizar del lenguaje de desarrollo, por lo que las
RPC o remote procedure calls, es decir, aplicaciones cliente y servidor pueden estar
podíamos bien en cliente o servidor realizar escritas con HTML, DHTML, Java, Visual
peticiones mediante http a un servidor web. Basic u otras herramientas y lenguajes
disponibles.
2. Las peticiones con el uso del protocolo
HTTP emplean el comando POST para
No está asociado con ningún lenguaje: transmitir información entre el cliente y el
los desarrolladores involucrados en nuevos servidor.
proyectos pueden elegir desarrollar con el 3. Los procedimientos de llamadas remotas
ultimo y mejor lenguaje de programación pueden ser modelados en la forma de varios
que exista. mensajes SOAP interactuando entre sí.
No se encuentra fuertemente asociado a
ningún protocolo de transporte: La
especificación de SOAP no describe como
se deberían asociar los mensajes de SOAP envelope (envoltura): Es el elemento raíz
con HTTP. del mensaje para describir su contenido y la
No está atado a ninguna infraestructura forma de procesarlo.
de objeto distribuido La mayoría de los header (encabezado): Es la información de
sistemas de objetos distribuidos se pueden identificación del contenido. Un grupo de
extender, y ya lo están alguno de ellos para reglas de codificación para expresar las
que admitan SOAP. instancias de tipos de datos definidos por la
Aprovecha los estándares existentes en aplicación.
la industria: Los principales contribuyentes body (cuerpo): Es el contenido del
a la especificación SOAP evitaron, mensaje. Una convención para representar
intencionadamente, reinventar las cosas. las llamadas y las respuestas a
procedimientos remotos.
1. El ciclo de vida del Port está 2. Un Port es creado e inicializado por el contenedor antes
completamente controlado por de que la primera llamada recibida en la dirección del
el contenedor, pero en general <port> del WSDL sea servida.
sigue el mismo ciclo de vida
que el del propio contenedor.
3. Un Port es destruido por el 4. Una implementación de un servicio Web JAX-WS reside
contenedor cuando éste en un contenedor Web, y por lo tanto puede desplegarse
considera que sea necesario en un servidor Web o un servidor de aplicaciones, una
hacerlo, como por ejemplo implementación EJB, en cambio, reside en un
cuando el propio contenedor es contenedor EJB y sólo podrá desplegarse en un servidor
sutting down. de aplicaciones.
5. Un componente Port asocia
una dirección de puerto (port
address de un WSDL) con la
implementación del servicio
(Service Implementation
Bean).
Anotaciones
@WebService Indica que la clase define un servicio web. Se pueden especificar como parámetros los
nombres del servicio (serviceName), del componente Port (portName), del SEI del
servicio (name), de su espacio de nombres (targetNamespace), y de la ubicación del
WSDL (wsdlLocation), que figurarán en el documento WSDL del servicio:
@WebService(name="ConversionPortType",
serviceName="ConversionService",
portName="ConversionPort",
targetNamespace="http://jtech.ua.es",
wsdlLocation="resources/wsdl/")
@SOAPBinding Permite especificar el estilo y la codificación de los mensajes SOAP utilizados para
invocar el servicio. Por ejemplo:
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
use=SOAPBinding.Use.LITERAL,
parameterStyle=
SOAPBinding.ParameterStyle.WRAPPED)
@WebMethod Indica que un determinado método debe ser publicado como operación del servicio. Si
no se indica para ningún método, se considerará que deben ser publicados todos los
métodos públicos. Si no, sólo se publicarán los métodos indicados. Además, de forma
opcional se puede indicar como parámetro el nombre con el que queramos que
aparezca la operación en el documento WSDL:
@WebMethod(operationName="eurosAptas")
public int euro2ptas(double euros) {
...
}
@Oneway Indica que la llamada a la operación no debe esperar ninguna respuesta. Esto sólo lo
podremos hacer con métodos que devuelvan void. Por ejemplo:
@Oneway()
@WebMethod()
public void publicarMensaje(String mensaje) {
...
}
@WebParam Permite indicar el nombre que recibirán los parámetros en el fichero WSDL:
@WebMethod(operationName="eurosAptas")
public int euro2ptas(
@WebParam(name="CantidadEuros",
targetNamespace="http://jtech.ua.es")
double euros) {
...
}
@WebResult Permite indicar el nombre que recibirá el mensaje de respuesta en el fichero WSDL:
@WebMethod(operationName="eurosAptas")
@WebResult(name="ResultadoPtas",
targetNamespace="http://jtech.ua.es")
public int euro2ptas(double euros) {
...
}
@WebFault Se utiliza para anotar excepciones Java. Cuando utilizamos esta anotación en una
excepción estamos indicando que cuando sea lanzada por una operación del servicio
web debe generar un mensaje SOAP de respuesta con un SOAP Fault que nos indique
el error producido. En el lado del cliente la clase con dicha excepción se habrá
generado en el stub para el acceso al servicio, y al recibir el mensaje SOAP con el
error el stub lanzará la excepción correspondiente. Es decir, para el desarrollador será
como si la excepción saltase directamente desde el servicio hasta el cliente.
@WebFault
public class ConversionFaultException extends Exception {
public ConversionFaultException(String msg) {
super(msg);
}
}
Cuando trabajamos con JAX-WS, los tipos de datos que podremos utilizar como tipo
de los parámetros y de valor de retorno de los métodos de nuestro servicio serán
los tipos soportados por JAXB.
1 boolean
2 byte
3 double
4 float
5 int
6 long
7 short
8 char
Además, también podremos utilizar cualquiera de los wrappers de estos tipos
básicos:
1 java.lang.Boolean
2 java.lang.Byte
3 java.lang.Double
4 java.lang.Float
5 java.lang.Integer
6 java.lang.Long
7 java.lang.Short
8 java.lang.Character
Las siguientes clases de Java también son aceptadas como tipos válidos por JAX-
WS:
1 java.lang.String
2 java.math.BigDecimal
3 java.math.BigInteger
4 java.util.Calendar
5 java.util.Date
6 javax.xml.namespace.QName
7 java.net.URI
Además de estos datos, se permitirá el uso de colecciones cuyos elementos podrán
ser de cualquiera de los tipos admitidos. Estas colecciones podrán ser arrays, tanto
unidimensionales como multidimensionales, o clases del marco de colecciones de
Java:
1 Listas: List
2 ArrayList
3 LinkedList
4 Stack
5 Vector
6 Mapas: Map
7 HashMap
8 Hashtable
9 Properties
10 TreeMap
11 Conjuntos: Set
12 HashSet
13 TreeSet
1 package jaxwsHelloServer;
2
3 import javax.jws.WebService;
4 import javax.jws.WebMethod;
5 import javax.ejb.Stateless;
6
7 @WebService
8 @Stateless
9 public class Hello {
10 private String message = new String("Hola, ");
11
12 public void Hello() {}
13
14 @WebMethod
15 public String sayHello(String name) {
16 return message + name + ".";
17 }
18 }
4.3 SOAP para e-bussiness
e-bussiness.
Es un protocolo
Recoge todo el conjunto de actividades económicas que se independiente de la
realizan por Internet, ya sean de compraventa de productos plataforma y funciona con el
o prestación de servicios. lenguaje XML. XML puede
crear secuencias de
El único requisito universal para el e-business es un comandos Perl, código C ++
ordenador y una conexión a Internet. y mucho más. Esto significa
que tiene muchas más
Ventajas opciones, y podrá usarlo con
un sitio de comercio
La realización del negocio es en el mismo instante electrónico existente cuando
Relación directa y en el momento entre cliente y tenga la integración
vendedor adecuada .
No hay necesidad de movilidad para realizar el
Es una forma sencilla de
negocio
interactuar con
No existe límite geográfico de actuación comunicaciones de servicio
Ahorro de tiempo y dinero remoto, componentes,
Servicio 24 horas, 7 días a la semana objetos y más. En
No hay necesidad de una localización física comparación con otros
protocolos, la mayoría de las
personas encuentran que
Aquellos que tienen sitios de comercio electrónico deberían SOAP es muy fácil de
encontrar estas características de SOAP bastante aprender para cualquiera
impresionantes . Una de las grandes ventajas de SOAP es que ya tenga conocimientos
que puede usar el protocolo HTTP, lo que significa que de XML .
funcionará bien con más firewalls de red. Otros protocolos,
como DCOM , a menudo tienen problemas para pasar los
filtros de firewall. La versatilidad de poder utilizar varios
protocolos diferentes, incluidos JMS y SMTP, así como
HTTP, ayuda a que SOAP sea muy popular y útil. También
es fácil usar SOAP con una infraestructura existente. Esto
significa que no tendrá que hacer los cambios drásticos y
lentos que haría si tuviera que usar otra opción.
4.4 WSDL y Java
XML:
<xsd:complexType name="Sample">
<xsd:sequence>
<xsd:element name="a" type="xsd:string"/>
<xsd:element name="b" maxOccurs="unbounded"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
Java:
// Propiedad de Bean a
public String getA() {...}
public void setA(String value) {...}
}
4.5 UDDI
4.5 UDDI
Un registro público
es una colección de
La especificación UDDI (Universal Description, Discovery, directorios iguales que
and Integration) define un modo de publicar y encontrar contienen información
información sobre servicios Web. sobre empresas y
servicios.
Localiza servicios que
se registran en uno de
UDDI tiene dos funciones: sus nodos iguales y
Es un protocolo basado en SOAP que define cómo facilita el
se comunican los clientes con los registros UDDI. descubrimiento de
Es un conjunto de registros duplicados globales en servicios Web
particular. publicados. Se
duplican los datos en
UDDI incluye un esquema XML para mensajes SOAP que todos los registros de
define un conjunto de documentos para describir forma regular.
información de empresas y servicios, un conjunto común de
API para consultar y publicar información en los directorios y Los registros privados
una API para duplicar entradas de directorio entre nodos permiten publicar y
UDDI iguales. probar las
aplicaciones internas
en entornos privados
seguros.
UDDI gestiona el descubrimiento de servicios Web, que
confía en un registro distribuido de empresas y sus
descripciones de servicio implementado en un formato XML
común. Antes de poder publicar la entidad de empresa y el
servicio Web a un registro público, primero debe registrar la
entidad de empresa con un registro UDDI
4.6 Framework CFX
CXF es otra pila de servicios web de Apache Software Foundation, el mismo grupo
que desarrolló la pila Axis2. Si bien pertenecen a la misma fundación, Axis 2 y CXF
tienen enfoques muy diferentes en cuanto a la forma de configurar y entregar
servicios web. En este artículo, se analizarán los fundamentos del uso de JAXB 2.x
y JAX-WS 2.x para servicios web con CXF y se establecerá una comparación entre
CXF y las otras pilas para JAXB/JAX-WS — Axis2 y Metro —, que se analizaron en
los artículos anteriores.
Acerca de esta serie
Los servicios web son una parte fundamental del rol
de la tecnología Java en la computación
empresarial. En esta serie de artículos, el consultor
de servicios web y XML Dennis Sosnoski trata de
los marcos y tecnologías más importantes para los
desarrolladores de Java que usan servicios web.
Siga de cerca la serie para mantenerse informado
acerca de las últimas novedades del campo y de la
manera de usarlas para mejorar sus proyectos de
programación.
Características:
CXF usa flujos de procesamiento de solicitudes y respuestas formados por
componentes configurables.
CXF denomina estos componentes interceptores, en lugar de controladores,
pero, dejando de lado la terminología, los componentes son equivalentes.
Al igual que Metro, CXF trae soporte para WS-Security y otras tecnologías
de extensión en la descarga básica. Pero, a diferencia de Metro, los archivos
JAR de CXF son modulares, lo que significa que usted podrá elegir los
archivos JAR que desee incluir en su aplicación en función de las tecnologías
usadas (el archivo /lib/WHICH_JARS de la instalación de CXF le informa los
archivos JAR específicos que se necesitan para diversos casos de uso
habituales).
La desventaja de este modularidad es que la lista de archivos JAR
específicos necesarios puede llegar a ser muy extensa; la ventaja, que
permite contener el tamaño de su implementación evitando su ampliación.
Aplicación de muestra
Uso del lado cliente Uso del lado servidor
El código del lado cliente de la aplicación de El código del lado servidor de la
muestra en CXF equivale al uso de JAX-WS aplicación de muestra en CXF
con Axis2 o Metro, y los pasos de generación también equivale al uso de JAX-
son similares: simplemente use la herramienta WS con Axis2 o Metro, y el
wsdl2java de CXF en lugar de la herramienta proceso de generación es muy
wsimport de la implementación de referencia similar al de Metro. Con Axis2,
JAX-WS. Ver "JAXB and JAX-WS in Axis2" prepare el servicio para su
para obtener información sobre el código y el implementación creando un
manejo. archivo JAR que contenga las
clases de servicios y de
Si bien el código del cliente es el mismo, existe modelos de datos y luego
una diferencia significativa en el implemente el servicio
comportamiento del cliente en CXF. De manera colocando ese archivo JAR en
predeterminada, CXF imprime una insoportable el directorio WEB-
cantidad de datos de registro en la consola. INF/servicejars en una
Como CXF usa Java Logging, para evitar estos instalación de servidor Axis2.
datos de salida, es necesario establecer una En cambio, con Metro y CXF, es
propiedad del sistema que señale un archivo de necesario crear un archivo
propiedades de registro con la configuración WAR que contenga las clases
cambiada de manera de producir solamente de servicios y de modelos de
información WARNING o SEVERE. Esto se datos, los archivos JAR de la
puede hacer con el archivo de Ant build.xml de biblioteca Metro o CXF y un par
la aplicación de muestra, usando la línea de de archivos de configuración (el
parámetros de la JVM <jvmarg value="- nombre de uno ellos varía
Djava.util.logging.config.file=${build- según la pila en cuestión).
dir}/logging.properties"/>.
Cuando el equipo cliente y servidor Los servicios Web XML pueden ser
requieren compartir funcionalidad en consumidos de dos maneras, directamente
Internet, pero difieren en su plataforma desde un navegador o desde una aplicación de
operativa. forma programática.
4.8
4.8 Seguridad
Seguridad WS
WS
UsernameToken: se utiliza un
nombre de usuario junto con una
contraseña para validar al
El WS-Security (WSS) es una extensión del protocolo SOAP cliente. En este caso, el cliente
que define mecanismos para proteger la integridad y debe signar el mensaje y el
confidencialidad en los mensajes mediante el uso de SAML, servidor puede comprobar la
Kerberos, tokens o los certificados X.509, además de la veracidad calculando la firma del
encriptación y las signaturas XML. En primer lugar, tenemos mensaje recibido y
que tener en cuenta que WS-Security no es un nuevo tipo de comparándola con el valor
servicios web ni de seguridad. recibido.
En el caso de utilizar certificados
X.509, el mensaje puede ser
firmado utilizando una clave
privada. Entonces, el mensaje
debe contener el certificado en
un BinarySecurityToken. Se
recomienda firmar también el
certificado con la clave privada.