Manual de WebServicesJava EE5
Manual de WebServicesJava EE5
Manual de WebServicesJava EE5
ÍNDICE GENERAL
LECCIÓN 1. Introducción 1
1. Qué es un servicio web y sus beneficios 1
2. Estándares parar el desarrollo de servicios web 6
3. Decisiones clave para el diseño de servicios web 10
LECCIÓN 2. JAXB. VINCULACIÓN ENTRE LOS ESQUEMAS XML Y LAS CLASES JAVA 34
Introducción 34
1. Arquitectura JAXB 35
2. Representación del contenido XML 37
3. Vincular los esquemas XML 38
4. Personalización de las vinculaciones 40
5. Utilizar JAXB 44
Web Services Java EE 5
PRÁCTICAS 101
Enunciados 101
Soluciones 103
GLOSARIO 104
Web Services Java EE 5
Web Services Java EE5
Los servicios Web nos dan una interfaz estándar que es independiente de la
plataforma y de la tecnología que usemos, además se ajustan a las normas
aceptadas por la mayoría de las reglas de negocio, proporcionando un medio de
comunicación entre aplicaciones de software que se ejecutan en diferentes
plataformas y se escriben en diferentes lenguajes de desarrollo de aplicaciones.
Existen numerosas definiciones para los servicios Web, que van desde los de
carácter muy técnico al más simple posible.
Por ejemplo, la organización World Wide Web Consortium (W3C), que establece
las normas para servicios Web, las define así: "Un servicio Web es un sistema de
software identificado por un URI con interfaces públicas y los enlaces son definidos
y descritos utilizando XML. Su definición puede ser descubierta por otros sistemas
de software. Estos sistemas pueden interactuar con el servicio Web en la forma
prescrita por su definición, usando mensajes basados en XML transmitidos por los
protocolos de Internet".
Una definición más sencilla, y quizá más útil, podría ser: "un servicio Web es
una aplicación de software, accesible en la Web (o la intranet de una empresa) a
través de una URL, que es visitada por los clientes que utilizan protocolos basados
en XML, como (SOAP) enviados a través de protocolos de Internet como HTTP.
Los clientes acceden a una aplicación de servicio Web a través de sus interfaces y
enlaces, que se definen mediante XML, como el lenguaje de definición de servicios
Web (WSDL).”
1
Web Services Java EE5
A pesar de sus capacidades ampliadas, las aplicaciones Web están todavía limitadas
a la capacidad de la interfaz gráfica de sus páginas HTML ya que una aplicación
Web se puede utilizar sólo a través de la interfaz de usuario limitada y vinculada a
las páginas HTML.
Los servicios web van más allá de esta limitación, ya que se separa el sitio Web o
una aplicación (el servicio) de su interfaz gráfica de usuario HTML.
Los servicios web proporcionan una forma estándar a las aplicaciones para
exponer su funcionalidad a través de Internet o comunicarse con otras
aplicaciones en una red, independientemente de la aplicación, lenguaje de
programación o plataforma de computadora.
Hoy en día, los entornos empresariales son bastante complejos debido a que se
utilizan una gran variedad de plataformas de software y hardware, basadas en
Internet, comunicación distribuida, integración de aplicaciones empresariales, etc.
2
Web Services Java EE5
Los servicios son normalmente menos finos que los componentes, y se centran en
la funcionalidad proporcionada por sus interfaces.
3
Web Services Java EE5
Los beneficios que podemos obtener utilizando Servicios Web son los siguientes:
Más tarde, tal vez debido a una consolidación o la adición de otra aplicación, se
hace necesario unir estas funcionalidades dispares. La mayor fortaleza de los
servicios Web es su capacidad para permitir la interoperabilidad en un
entorno heterogéneo.
Mientras los distintos sistemas estén habilitados para los servicios Web, pueden
utilizar estos servicios para interoperar fácilmente con otros sistemas.
• La libertad de elección:
Las normas de servicios Web han abierto un gran mercado para las
herramientas, productos y tecnologías. Esto da a las organizaciones una gran
variedad de opciones, y pueden seleccionar las configuraciones que mejor
satisfagan sus requisitos de aplicación.
4
Web Services Java EE5
• Programación de la productividad:
Para ser productivo en la economía de la información se requiere la habilidad de
desarrollar y distribuir aplicaciones de una manera oportuna. Las solicitudes
deberán ir rápidamente desde el prototipo hasta la producción y deben seguir
evolucionando, incluso después de que se coloquen en producción.
5
Web Services Java EE5
Los estándares son diferentes a las tecnologías. Los estándares son un conjunto
de especificaciones, normas y directrices formuladas y aceptadas por los
participantes en el mercado principal. Aunque estos estándares nos indican una
manera común de alcanzar un objetivo no indican los detalles de implementación.
Los estándares de servicios web han sido ampliamente aceptados y para ello deben
cumplir los siguientes criterios:
Establecer una base de normas comunes para permitir a los servicios Web lograr
una amplia aceptación e interoperabilidad.
6
Web Services Java EE5
En esta serie de ejemplos de código veremos las partes necesarias para que un
documento XML que representa información de un contacto individual:
7
Web Services Java EE5
3. Documento XML.
<? xml version="1.0" encoding="UTF-8"?>
<xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace=http://simple. ejemplo.com/CInfoXmlDoc
xmlns=" http://simple.ejemplo.com/CInfoXmlDoc"
elementFormDefault="qualified">
<xsd: element name="ContactInformation">
<xsd: complexType>
<xsd: sequence>
<xsd: element name="Nombre" type="xsd: string" />
<xsd: element name="Dirección">
<xsd: complexType>
<xsd: sequence>
<xsd: element name="Calle” type="xsd: string" />
<xsd: element name="Ciudad" type="xsd: string" />
<xsd: element name="Provincia" type="xsd: string" />
<xsd: element name="Pais" type="xsd: string" />
</xsd: sequence>
</xsd: complexType>
</xsd: element>
<xsd: element name="Telefono" type="xsd: string" />
<xsd: element name="EMail" type="xsd: string" />
</xsd: sequence>
</xsd: complexType>
</xsd: element>
</xsd: schema>
Para una comunicación eficaz, las partes deben ser capaces de intercambiar
mensajes poniéndose de acuerdo con un formato. Al contar con este formato,
las partes que no se conocen entre sí pueden comunicarse de manera eficaz.
Simple Object Access Protocol (SOAP) es un formato de mensaje común de
los servicios Web.
Código ejemplo de una petición SOAP para obtener una cuota de stock.
8
Web Services Java EE5
</SOAP-ENV: Envelope>
9
Web Services Java EE5
los solicitantes de servicio debe tener una forma común para buscar y
obtener información de un servicio.
Esto se logra teniendo lugares donde los proveedores pueden registrar sus
especificaciones de servicio y donde los solicitantes saben que pueden ir a
buscar los servicios.
Figura 1
Los servicios Web interactúan con los clientes para recibir las solicitudes de los
clientes y las respuestas de retorno.
• Muestra una interfaz que los clientes usan para hacer peticiones al servicio.
• Hace qué un servicio esté disponible para los socios y los clientes
interesados mediante la publicación de los detalles del servicio.
• Recibe peticiones de los clientes.
10
Web Services Java EE5
Sabiendo que tenemos que tener en cuenta este flujo de la lógica, los siguientes
son los pasos típicos para el diseño de un servicio Web.
La interfaz debe reflejar el tipo y la naturaleza de las llamadas que hacen los
clientes al utilizar el servicio, tenemos que considerar el tipo de parámetros que
queremos utilizar, (los servicios Endpoint EJB o los servicios endpoint JAX-
RPC) y cuándo usarlos.
También tendremos que decidir si vamos a utilizar los controladores de SOAP. Por
último, pero no menos importante, ya que una razón para agregar una interfaz de
servicios web es lograr la interoperabilidad, tenemos que asegurarnos de que
nuestras decisiones de diseño no afectan a la interoperabilidad de los servicios en
su conjunto.
Es decir lo que necesitaremos para diseñar nuestro servicio no sólo para recibir
una llamada de un cliente que ha hecho, sino también para hacer cualquier pre-
procesamiento necesario para la solicitud (como traducir el contenido de la
solicitud en un formato interno) antes de aplicar la lógica de negocio del servicio.
11
Web Services Java EE5
12
Web Services Java EE5
INTRODUCCION
Esto se realiza haciendo una descripción del servicio Web a disposición de las partes
interesadas. WSDL es el lenguaje estándar para la descripción de un servicio.
Hacer esta descripción WSDL disponible para los clientes, nos permite utilizar el
servicio.
Una vez que el WSDL está listo, tenemos la opción de publicar en un registro. Si
hacemos la descripción WSDL de su servicio disponible en un registro público, luego
un cliente basado en Java puede utilizar las API de JAXR para buscar la
descripción de su servicio y después utilizar ese servicio. Por lo demás, un cliente
puede utilizar las mismas API de JAXR para buscar la descripción de cualquier
servicio Web con una descripción WSDL disponible.
Cuando queremos que nuestro servicio tenga abierta la accesibilidad del servicio
para la mayor audiencia posible lo registraremos en un registro público,
13
Web Services Java EE5
cualquier cliente, incluso uno sin el conocimiento previo del servicio, puede buscar y
utilizar el servicio.
En resumen, el servicio Web se debe declarar como público en los esquemas XML y
los esquemas adicionales definidos en el contexto del servicio. También tenemos
que publicar en el mismo Registro Público los esquemas XML que se refieren a
la descripción de servicios Web.
• Cuando un servicio Web es estrictamente para uso dentro de la
empresa, podemos publicar una descripción de servicios Web en un
registro corporativo de la empresa.
• Si los servicios web están dedicados a todos los clientes de sus servicios
web y no hay un acuerdo entre los socios sobre el uso de los servicios No
es necesario usar un registro de socios. Cuando este es el caso, podemos
publicar la descripción de servicios Web - la referencia a los esquemas WSDL
y XML - en un lugar conocido que tenga el acceso adecuado de protección.
Los registros públicos no son repositorios, los registros públicos sólo contienen
detalles sobre los servicios que están disponibles y cómo acceder a estos servicios.
Por ejemplo, un servicio de venta de paquetes de aventura no puede registrar su
catálogo completo de productos.
14
Web Services Java EE5
Como este proceso, que no es insignificante, puede tener que repetirse varias
veces, es fácil ver que es importante registrar un servicio en virtud de su
taxonomía (clasificación) adecuada.
Por ejemplo, supongamos que nuestro negocio de viajes ofrece la Isla Madagascar
en los paquetes relacionados como aventura, o los Alpes como aventuras de
alpinismo.
Por ejemplo, una empresa de viajes que vende paquetes de aventura puede
inscribirse utilizando una taxonomía de categoría de productos, así como una
taxonomía geográfica.
15
Web Services Java EE5
Por ejemplo utilizando el servicio de viajes de negocios, este tipo de servicio podría
colocarse en las taxonomías de los tipos de paquetes de aventura (isla y
alpinismo), así como en las taxonomías para los locales en los que los paquetes de
aventura se proporcionan (Monte Kilimanjaro o Tahití), haciendo lo más fácil posible
la localización de un servicio para un cliente potencial.
Una vez que hemos decido publicar nuestro servicio y establecer las taxonomías
que mejor lo identifican, estaremos listos para poner en práctica nuestras
decisiones. Antes de hacerlo, podemos encontrar útil examinar algunos de los
escenarios de registro de aplicación que podemos encontrar.
En general, el cliente debe realizar tres pasos para utilizar un servicio Web:
Se espera que los clientes conozcan este lugar. Cuando este es el caso, el
cliente se lleva a cabo con la interfaz de servicio que se tenía en mente, es
16
Web Services Java EE5
Ya que los clientes del servicio Web son clientes genéricos, es decir, que
no son clientes diseñados exclusivamente para utilizar este servicio de
Internet, se debe diseñar el servicio para que se pueda inscribir en un
registro. Estos clientes genéricos encuentran dinámicamente una aplicación
específica de un servicio en tiempo de ejecución utilizando los registros.
Tabla:
DEFINICIÓN DE LA IMPLEMENTACIÓN UNIÓN PARA
ESCENARIOS INTERFAZ DEL DEL SERVICIO ESPECIFICAR LA
SERVICIO DISCOVER DISCOVER LOCALIZACIÓN
Dinámico en
Ninguno o dinámico en
2 tiempo de Estático
tiempo de construcción
construcción
Dinámico en
Ninguno o dinámico en Dinámico en tiempo
3 tiempo de
tiempo de construcción de ejecución
construcción
Hasta ahora, hemos examinado los servicios Web en términos de diseño, desarrollo
y aplicación. Una vez que completemos la implementación de servicios Web,
17
Web Services Java EE5
Aunque las herramientas de desarrollo realizan estas tareas por nosotros, es bueno
tener una comprensión conceptual de los descriptores de distribución y la
estructura de los paquetes, ya que determinan cómo se implementa un servicio en
un servidor y la disponibilidad del servicio para los clientes.
• Detalles acerca de los servicios Web que se distribuyen, como los puertos y
las asignaciones de memoria.
• Un puerto del componente da una visión del servicio a los clientes de tal
manera que el cliente no necesita preocuparse de cómo el servicio ha sido
implementado.
18
Web Services Java EE5
Ejemplos:
1. Una aplicación de servicio que utiliza un servicio endpoint JAX-RPC declara
sus detalles en el archivo de WEB-INF/web.xml utilizando el servlet como
elemento de clase.
Código:
<web-app ...>
...
<servlet>
<description>Endpoint for Some Web Service</description>
<display-name>SomeWebService</display-name>
<servlet-name>SomeService</servlet-name>
<servlet-class>com.a.b.c.SomeServiceImpl</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SomeService</servlet-name>
<url-pattern>/webservice/SomeService</url-pattern>
</servlet-mapping>
...
</web-app>
NOTA:
Hay que tener en cuenta que cuando tenemos un servicio que funciona
exclusivamente como un servicio Web utilizando servicios endpoint JAX-RPC,
algunas especificaciones en el archivo web.xml, como <error-page> y
<welcome-file-list>, no tienen efecto.
<ejb-jar ...>
<display-name>Some Enterprise Bean</display-name>
<enterprise-beans>
<session>
<ejb-name>SomeBean</ejb-name>
<service-endpoint>com.a.b.c.SomeIntf</service-endpoint>
<ejb-class>com.a.b.c.SomeServiceEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
...
</ejb-jar>
19
Web Services Java EE5
• Un nombre lógico para el puerto que también es único entre todos los
componentes del puerto (elemento port-component-name).
20
Web Services Java EE5
WEB-INF/wsdl/WeatherWebService.wsdl
</wsdl-file>
<jaxrpc-mapping-file>
WEB-INF/WeatherWebServiceMapping.xml
</jaxrpc-mapping-file>
<port-component>
<description>port component
description</description>
<port-component-name>
WeatherServicePort
</port-component-name>
<wsdl-port xmlns: weatherns="urn: WeatherWebService">
weatherns: WeatherServicePort
</wsdl-port>
<service-endpoint-interface>
endpoint.WeatherService
</service-endpoint-interface>
<service-impl-bean>
<servlet-link>WeatherService</servlet-link>
</service-impl-bean>
</port-component>
</webservice-description>
</webservices>
• El archivo WSDL.
21
Web Services Java EE5
• Los archivos WSDL tienen una ubicación relativa a la raíz del módulo.
Figura 2
2. Para un servicio endpoint JAX-RPC, está empaquetado en un archivo WAR en el
directorio WEB-INF como WEB-INF/webservices.xml.
22
Web Services Java EE5
Figura 3
23
Web Services Java EE5
ENUNCIADOS.
24
Web Services Java EE5
25
Web Services Java EE5
Dentro de las tecnologías existentes para los servicios web tenemos JAX-WS 2.0
que consiste en una serie de módulos que forman una arquitectura.
Figura 1
26
Web Services Java EE5
JAX-WS significa Java API de Servicios Web XML. JAX-WS es una tecnología
para la creación de servicios web y los clientes que se comunican utilizando XML.
JAX-WS permite a los desarrolladores escribir códigos orientados a mensajes, así
como RPC- orientados a servicios web.
Aunque los mensajes SOAP son complejos, el API JAX-WS oculta esta complejidad a
los desarrolladores de aplicaciones. Por el lado del servidor, especificaremos las
operaciones de servicio Web mediante la definición de métodos de una interfaz
escrita en el lenguaje de programación Java, además del código la/s
clase/s que implementa/n esos métodos.
Los programas del cliente también son fáciles de codificar. Un cliente crea un proxy
(un objeto local que representa el servicio) y luego simplemente invoca los
métodos en el proxy. Con JAX-WS, no tenemos que generar o analizar mensajes
SOAP sino que es el sistema del runtime de JAX-WS quien convierte las llamadas
de la API y las respuestas y de los mensajes SOAP.
Con JAX-WS, los clientes y los servicios web tienen una gran ventaja ya que son
independientes de la plataforma del lenguaje de programación Java. Además,
JAX-WS no es restrictiva: un cliente JAX-WS puede acceder a un servicio web que
no se ejecuta en la plataforma Java, y viceversa. Esta flexibilidad es posible gracias
a que JAX-WS utiliza tecnologías definidas por el World Wide Web Consortium
(W3C) como HTTP, SOAP, y el Lenguaje de Descripción de Servicios Web
(WSDL). WSDL especifica un formato XML para describir un servicio como un
conjunto de variables que operan en los mensajes.
27
Web Services Java EE5
El punto de partida para el desarrollo de un servicio Web JAX-WS es una clase Java
con la anotación javax.jws.WebService. La anotación @ WebService define la
clase como un servicio web endpoint.
Figura 2
Estos son los pasos básicos para crear el servicio web y el cliente:
1. Codificar de la clase de implementación.
2. Compilar la clase de implementación.
3. Utilizar la herramienta Wsgen para generar los artefactos necesarios para
implementar el servicio.
4. Empaquetar los ficheros en un archivo WAR.
28
Web Services Java EE5
5. Distribuir el archivo WAR. Los artefactos del servicio Web (que se utilizan
para comunicarse con los clientes) son generados por el servidor de
aplicaciones durante la distribución.
6. Codificar la clase de cliente.
7. Utilizar wsimport para generar y compilar los artefactos de servicios web
necesarios para conectarse al servicio.
8. Compilar la clase de cliente.
9. Ejecutar el cliente.
• Los métodos de negocio que están expuestos a los clientes de servicios web
deben ser anotados con javax.jws.WebMethod.
• Los métodos de negocio que están expuestos a los clientes de servicios web
deben tener parámetros JAXB compatibles y devolver tipos también
compatibles.
29
Web Services Java EE5
Para ejecutar este ejemplo utilizaremos una herramienta portátil que está en el
servidor de aplicaciones que tengamos y que se llama “asant”. Esta herramienta
es una extensión de la herramienta Ant desarrollada por Apache Software
Foundation (http://ant.apache.org).
package helloservice.endpoint;
import javax.jws.WebService;
@WebService
public class Hello {
private String message = new String ("Hello, ");
public void Hello () {}
@WebMethod
public String sayHello (String name) {
return message + name + ".";
}
}
asant build.
30
Web Services Java EE5
• Compilación de servicio:
La compilación de tareas de servicio. Esta tarea asant compila Hello.java,
escribe ficheros class para construir los subdirectorios.
31
Web Services Java EE5
32
Web Services Java EE5
package simpleclient;
import javax.xml.ws.WebServiceRef;
import helloservice.endpoint.HelloService;
import helloservice.endpoint.Hello;
public class HelloClient {
@WebServiceRef (wsdlLocation="http://localhost:8080/
helloservice/hello? wsdl")
static HelloService service;
public static void main (String[] args) {
try {
HelloClient client = new HelloClient ();
client.doTest (args);
} catch (Exception e) {
e.printStackTrace ();
}
}
public void doTest (String[] args) {
try {
System.out.println ("Retrieving the port from
the following service: " + service);
Hello port = service.getHelloPort ();
System.out.println ("Invoking the sayHello operation
on the port.");
String name;
if (args.length > 0) {
name = args[0];
} else {
name = "No Name";
}
String response = port.sayHello (name);
System.out.println (response);
} catch (Exception e) {
e.printStackTrace ();
}
}
}
33
Web Services Java EE5
INTRODUCCION
La arquitectura de Java para XML Binding (JAXB) proporciona una manera
rápida y conveniente para enlazar entre esquemas XML y las representaciones de
Java, haciendo más fácil para los desarrolladores de Java incorporar datos XML y
las funciones de procesamiento en aplicaciones Java.
• Soporte para todas las características del W3C XML Schema. (JAXB 1.0 no
especifica los enlaces de algunas de las características del W3C XML Schema).
34
Web Services Java EE5
1. ARQUITECTURA JAXB
Figura 3
35
Web Services Java EE5
Figura 4
2. Compilar las clases: Las clases generadas, los archivos de origen y código de
aplicación se tienen que compilar.
36
Web Services Java EE5
continuación, también puede utilizar la operación JAXB Validar para validar los
cambios antes de clasificación del contenido de nuevo a un documento XML.
6. El contenido del proceso: La aplicación cliente puede modificar los datos XML
representado por el árbol de contenido Java por medio de interfaces generados
por el compilador vinculante.
Para cumplir con este modelo, se añadió la validación en tiempo de Marshal por lo
que se puede confirmar que no invalida el documento XML cuando se modifique el
documento en forma de JAXB, ya que esto no pasaba en JAXB 1.0.
• Un nombre de clase Java que se deriva del nombre del elemento XML, o
especificado por un vínculo personalizado.
• Una clase ObjectFactory, que es una fábrica que se utiliza para devolver
instancias de la clase Java envolvente. Es conveniente utilizar los métodos de
esta clase, porque proporcionan una manera fácil de crear los elementos que se
tienen que representar por un JAXBElement <? Object>.
37
Web Services Java EE5
Un esquema describe los tipos de datos, con la intención de definir uno o más
tipos jerárquicos en la definición de los documentos XML. El tipo de información
se refiere a la definición de la estructura, es decir, la composición de los nodos
del documento, y la clasificación de escalar (o lista) para el contenido de los
valores y atributos.
Aunque todos los datos en XML son texto, en general, no se deberían definir
como String de las clases Java que derivan de un esquema. El lenguaje de esquema
XML proporciona los tipos de datos elementales para los números, booleanos,
cadenas, URI, fechas y horas, las referencias y otras construcciones XML.
Esto se hace mediante la adición llamada “facets”, que están disponibles para
establecer límites superiores o inferiores a los valores o longitud de las cadenas,
para limitar la precisión, para enumerar todos los valores justos, y definir un
modelo para un tipo de cadena. JAXB utiliza enumeraciones restringiendo cadenas
para definir un tipo enum. Sin embargo, otras facetas, son ignoradas por el
compilador de esquemas.
38
Web Services Java EE5
Hay que tener en cuenta que las etiquetas de los elementos de esquema se
presentan en forma cualificada, con xsd como el identificador de espacio de
nombres.
Este (o algún otro nombre, por ejemplo, xs) identificador debe estar vinculado a la
URI que identifica el lenguaje XML Schema. Si se utiliza, también el prefijo de
espacio JXB deben estar vinculado. Ambos se hacen en el elemento schema del
esquema XML.
Puesto que hay diferentes tipos de componentes de esquema tantos como atributos
de propiedad Java (común a los componentes del esquema) incluyen:
• Tipo base.
• Tipo collection.
• Predicado.
39
Web Services Java EE5
xsd:anySimpleType java.lang.Object
xsd:anySimpleType java.lang.String
xsd:duration Javax.xml.datatype.Duration
xsd:NOTATION Javax.xml.namespace.QName
Relación entre Tipo de Java y Tipo Schema.
4.1 ANOTACIONES
Las anotaciones JAXB definidas en el paquete de javax.xml.bind.annotations se
pueden utilizar para personalizar los elementos del programa de Java para el
mapeo de esquemas XML.
40
Web Services Java EE5
Cada tipo de anotación tiene su propio conjunto de atributos, que se puede acceder
de la forma habitual. Habida cuenta de alguna clase, una anotación de tipo
XmlType se puede recuperar con:
Class clazz = ...;
XmlType typeAnn = clazz.getAnnotation (XmlType.class);
Las clases que pueden ser utilizar para la clasificación y la unmarshalización XML
NO tienen que generarse con el compilador de esquema JAXB. También es
posible escribir estas clases a mano, añadiendo las anotaciones JAXB.
ANOTACIÓN
ASOCIADA A UN DESCRIPCIÓN Y PARÁMETROS POR DEFECTO
PAQUETE JAVA
Mapea un paquete en una etiqueta XML de tipo namespace.
@XmlSchema (
xmlns = {},
@XmlSchema namespace = "",
elementFormDefault = XmlNsForm.UNSET,
attributeFormDefault = XmlNsForm.UNSET
)
41
Web Services Java EE5
ANOTACIÓN
ASOCIADA A UNA DESCRIPCIÓN Y PARÁMETROS POR DEFECTO
CLASE JAVA
Maps a Java class to a schema type.
@XmlType (
name = "##default",
propOrder = {""},
@XmlType
namespace = "##default",
factoryClass = DEFAULT.class,
factoryMethod = ""
)
Associates a global element with the schema type to which the class
is mapped.
@XmlRootElement (
@XmlRootElement
name = "##default",
namespace = "##default"
)
ANOTACIÓN
ASOCIADA A UN
DESCRIPCIÓN Y PARÁMETROS POR DEFECTO
TIPO ENUM DE
JAVA
Mapas de un tipo Java a un tipo simple XML.
@XmlEnum
@XmlEnum ( value = String.class )
42
Web Services Java EE5
ANOTACIONES
ASOCIADAS A
DESCRIPCIÓN Y PARÁMETROS POR DEFECTO
PROPIEDADES Y
CAMPOS DE JAVA
Asigna un JavaBeans propiedad/campo a un elemento XML
derivados de una propiedad o nombre de campo
@XmlElement (
name = "##default",
@XmlElement nillable = false,
namespace = "##default",
type = DEFAULT.class,
defaultValue = "\u0000"
)
43
Web Services Java EE5
ANOTACIONES
ASOCIADAS A DESCRIPCIÓN Y PARÁMETROS POR DEFECTO
OBJETOS FACTORY
Mapas de un método factory a un elemento XML
@XmlElementDecl (
scope = GLOBAL.class,
@XmlElementDecl namespace = "##default",
substitutionHeadNamespace = "##default",
substitutionHeadName = ""
)
ANOTACIONES
ASOCIADAS CON DESCRIPCIÓN Y PARÁMETROS POR DEFECTO
ADAPTADORES
Utilizamos el adaptador que se aplica la anotación @
XMLAdapter para personalizar la Marshalización.
@XmlJavaTypeAdapter
@XmlJavaTypeAdapter ( type = DEFAULT.class )
44
Web Services Java EE5
5. UTILIZAR JAXB
Vamos a seguir con la “tradición” y el uso del ejemplo de documento XML "Hello
World" para mostrar un escenario típico para la creación de las clases Java y su
utilización para realizar un Marshal de documento.
• Paso 1.
El esquema XML en hello.xsd define la estructura de nuestro documento, que
contendrá una serie de saludos, cada uno de los cuales contiene un saludo (como
"Hola mundo") y un atributo para el registro de la lengua en la que se salude.
<? xml version="1.0" encoding="UTF-8"?>
<xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
jxb: version="2.0">
</xsd: schema>
• Paso 2.
Ahora podemos llamar el compilador de esquema JAXB, definiendo el nombre del
paquete hello para las clases generadas.
xjc -p hello hello.xsd
Esto genera varias clases en el subdirectorio Hello. La clase Hello muestra cómo
usarlos.
import java.util.*;
import javax.xml.bind.*;
import hello.*;
45
Web Services Java EE5
• Paso 3.
El constructor utiliza un método de la fábrica de objetos para crear un objeto de la
parte superior del documento el nivel de tipo de elemento XML, es decir,
GreetingListType.
El método que añade otro saludo con su elemento de texto y el atributo del
lenguaje. Por último, con una llamada al mariscal, la lista se envuelve en su
elemento XML, y el documento XML resultante se escribe en la secuencia de salida
estándar. He aquí una secuencia de estas llamadas:
46
Web Services Java EE5
<Text>Hey, you</Text>
</Greeting>
</Greetings>
47
Web Services Java EE5
INTRODUCCION
StAX nos permite crear analizadores XML bidireccionales que son rápidos,
relativamente fáciles de programar.
StAX nos permite a los desarrolladores analizar y modificar las secuencias (stream)
XML como eventos, y para ampliar los modelos de información XML para permitir la
aplicación adiciones específicas.
1. STREAMING VS DOM
En términos generales, hay dos modelos de programación para trabajar con XML
InfoSets: documento de streaming y el Document Object Model (DOM).
48
Web Services Java EE5
Pull Parsing ofrece varias ventajas sobre Push Parsing cuando se trabaja con
Secuencias XML:
49
Web Services Java EE5
3. Los clientes Pull pueden leer varios documentos al mismo tiempo con un
único subproceso.
4. Un analizador Pull puede filtrar documentos XML de tal manera que los
elementos innecesarios para el cliente se pueden ignorar, y además puede soportar
vistas XML de datos que no sean XML.
• El enlace de datos.
o Unmarshalling un documento XML.
o Marshalling un documento XML.
o Procesamiento de documentos en paralelo.
o Comunicación inalámbrica.
2. LA API STAX
La API de STAX en realidad son dos distintos conjuntos de API: un cursor API y
un iterador API.
50
Web Services Java EE5
51
Web Services Java EE5
Ejemplo:
public interface XMLEventReader extends Iterator {
public XMLEvent nextEvent () throws XMLStreamException;
public boolean hasNext ();
public XMLEvent peek () throws XMLStreamException;
...
}
Similarly, on the output side of the iterator API, you have:
public interface XMLEventWriter {
public void flush () throws XMLStreamException;
public void close () throws XMLStreamException;
public void add (XMLEvent e) throws XMLStreamException;
public void add (Attribute attribute) \
throws XMLStreamException;
...
}
52
Web Services Java EE5
53
Web Services Java EE5
</Book>
</BookCatalogue>
54
Web Services Java EE5
18 EndElement
• Cómo debe ser la sintaxis XML adecuada, todos los elementos de contenedores
disponen de sus correspondientes eventos de inicio y fin acontecimientos, por
ejemplo, cada startElement tiene su correspondiente EndElement, incluso
para los elementos vacíos.
• Los eventos del atributo son tratados como eventos secundarios, y se accede
desde su evento startElement correspondiente.
• Los eventos Character se especifican para todos los elementos, incluso si esos
elementos no tienen datos de carácter.
3. UTILIZAR STAX
En general, los programadores de STAX Streaming crean secuencias XML de
lectura y escritura, mediante los eventos de las clases XMLInputFactory,
XMLOutputFactory y XMLEventFactory.
55
Web Services Java EE5
XML InputFactory
PROPIEDAD DESCRIPCIÓN
Devuelve la validación de una
javax.xml.stream.isValidating
implementación.
(Requerido) Requiere el procesador
javax.xml.stream.isCoalescing datos que se unen con carácter
adyacente.
Devuelve el soporte del espacio de
Javax.xml.stream.isNamespaceAware
nombre.
(Requerida) Requiere el procesador
para reemplazar internamente las
referencias a las entidades con su
javax.xml.stream.isReplacingEntityReferences
valor reemplazado y reportarlas como
caracteres o conjunto de eventos que
describe la entidad.
(Requerida) Requiere el procesador
javax.xml.stream.isSupportingExternalEntities para resolver entidades analizadas
externamente.
(Requerida) Asignar y recoger la
javax.xml.stream.reporter implementación de la interfaz
XMLReporter.
(Requerida) Asignar y recoger la
javax.xml.stream.resolver implementación de la interfaz
XMLResolver.
56
Web Services Java EE5
XML OutputFactory
XML EventFactory
Resolución de recursos
57
Web Services Java EE5
Para leer los canales XML con un STAX lo más importante es el procesador, lo que
recibe varía considerablemente dependiendo de si está utilizando el cursor STAX
API o el iterador API.
XML StreamReader
58
Web Services Java EE5
Métodos XMLStreamReader
Instanciando un XMLStreamReader
XML EventReader
59
Web Services Java EE5
Ejemplo.
package javax.xml.stream;
import java.util.Iterator;
public interface XMLEventReader extends Iterator {
public Object next ();
public XMLEvent nextEvent () throws XMLStreamException;
public boolean hasNext ();
public XMLEvent peek () throws XMLStreamException;
...
}
Para leer todos los eventos en una secuencia e imprimirlos utilizaríamos el siguiente
código:
Leer Atributos
Leer Namespaces
60
Web Services Java EE5
STAX es una API bidireccional, y tanto el cursor API como el iterador de evento
tienen sus propios conjuntos de interfaces para escribir secuencias XML. Al igual
que con las interfaces para la lectura de secuencias, hay diferencias significativas
entre las API de escritura para el cursor y el iterador de eventos.
61
Web Services Java EE5
XML EventWriter
Podemos utilizar métodos Characters para los caracteres de escape como &, <,
>, y “.
62
Web Services Java EE5
ENUNCIADOS.
63
Web Services Java EE5
64
Web Services Java EE5
INTRODUCCION
SOAP with Attachments API for Java (SAAJ) se utiliza principalmente para la
mensajería SOAP que sucede detrás de las escenas de los controladores de JAX-
WS y de las implementaciones de JAXR.
También, es una API que los desarrolladores podemos utilizar cuando queramos
escribir aplicaciones de mensajería SOAP directamente en lugar de utilizar JAX-
WS. El API SAAJ nos permite hacer mensajería XML en la plataforma Java.
1. MENSAJES
Con la API de SAAJ, podemos crear mensajes XML que se ajusten a las
especificaciones SOAP 1.1 o 1.2 y la especificación WS-I Basic Profile 1.1
simplemente por hacer llamadas a la API de Java.
Notaremos que muchas de las clases e interfaces SAAJ representan elementos XML
en un mensaje SOAP y tienen la palabra “element” o “SOAP” (o ambos) en sus
nombres.
Un elemento también se conoce como nodo. Por lo que, la API SAAJ tiene la
interfaz Node, que es la clase base para todas las clases e interfaces que
representan los elementos XML en un mensaje SOAP. También hay métodos como
la SOAPElement.addTextNode, Node.detachNode, y Node.getValue.
65
Web Services Java EE5
Los dos tipos principales de mensajes SOAP son los que tienen datos adjuntos y
los que no lo tienen.
I. Mensaje SOAP
A. Parte de SOAP
1. Sobre SOAP
a. Cabecera SOAP (opcional)
b. Cuerpo SOAP
66
Web Services Java EE5
Figura 1
Un mensaje SOAP puede incluir una o más partes de archivos adjuntos, además de
la parte de SOAP. La parte de SOAP debe contener sólo el contenido XML,
como resultado, si cualquier parte del contenido del mensaje no está en formato
XML, debe ir en un archivo adjunto parte.
Así que si, por ejemplo, queremos que nuestro mensaje contenga un archivo
binario, el mensaje debe tener una parte adjuntada para ello. Tengamos en cuenta
que la parte adjuntada puede tener cualquier tipo de contenido, ya que puede
contener datos en formato XML.
67
Web Services Java EE5
Figura 2
Todos los mensajes SOAP son enviados y recibidos a través de una conexión. Con
la API SAAJ, la conexión se representa por el objeto SOAPConnection, que va
desde el remitente directamente a su destino.
68
Web Services Java EE5
SOAPConnectionFactory factory =
SOAPConnectionFactory.newInstance ();
SOAPConnection connection = factory.createConnection ();
. . . // create a request message and give it content
java.net.URL endpoint =
new URL ("http://ejemplos.com/ejem/order");
SOAPMessage response = connection.call (request, endpoint);
El servicio que recibe ese mensaje es todavía necesario para devolver una
respuesta, porque se necesita para desbloquear el método Call.
69
Web Services Java EE5
En este caso, la respuesta no está relacionada con el contenido del mensaje, sino
que es simplemente un mensaje para desbloquear dicho método.
MessageFactory factory =
MessageFactory.newInstance (SOAPConstants.SOAP_1_2_PROTOCOL);
Para crear un mensaje Factory que pueda crear mensajes SOAP 1.1 o SOAP 1.2,
realizaremos de la llamada al método siguiente:
MessageFactory factory =
MessageFactory.newInstance (SOAPConstants.DYNAMIC_SOAP_PROTOCOL);
Este tipo de Factory nos permite procesar un mensaje de entrada que podría ser
de cualquier tipo.
Partes de un Mensaje
70
Web Services Java EE5
Hasta ahora hemos visto un cliente SAAJ que no utiliza un encabezado SOAP, por lo
que se puede borrar. Cómo todos los objetos SOAPElement, incluyendo objetos
SOAPHeader, se derivan de la interfaz Node, se utiliza el método Node.detachNode
método para eliminar cabecera.
71
Web Services Java EE5
header.detachNode ();
<SOAP-ENV: Envelope
xmlns:SOAP-ENV="http://esquemas.xmlsoap.com/soap/envelope/">
<SOAP-ENV: Body>
<m: GetLastTradePrice xmlns:m="http://prueba.ejemplos.com">
<symbol>SUNW</symbol>
</m: GetLastTradePrice>
</SOAP-ENV: Body>
</SOAP-ENV: Envelope>
72
Web Services Java EE5
<SOAP-ENV: Envelope
xmlns: SOAP-ENV="http:// esquemas.xmlsoap.com/soap/envelope/">
<SOAP-ENV: Header/>
<SOAP-ENV: Body>
...
</SOAP-ENV: Body>
</SOAP-ENV: Envelope>
Una conexión utiliza muchos recursos, por lo que es una buena idea cerrar una
conexión tan pronto como hayamos terminado de utilizarla con:
connection.close ();
73
Web Services Java EE5
74
Web Services Java EE5
1. ¿QUÉ ES UN REGISTRO?
2. ¿QUÉ ES JAXR?
JAXR nos permite a los programadores de software de Java utilizar una única y
fácil abstracción API para acceder a una variedad de registros XML. El modelo
unificado de información JAXR describe el contenido y los metadatos en los
registros XML.
3. ARQUITECTURA JAXR
• Un cliente JAXR: Este es un programa cliente que utiliza la API JAXR para
acceder a un registro de negocios a través de un proveedor de JAXR.
75
Web Services Java EE5
Cuando ocurre un error, los métodos la API JAXR lanzan una JAXRException o
una de sus subclases.
76
Web Services Java EE5
Figura 3
Un cliente JAXR es un programa cliente que puede acceder a los registros usando
la API JAXR. Los pasos básicos a seguir para implementar un cliente JAXR que
permite realizar consultas y actualizaciones a un registro UDDI son:
77
Web Services Java EE5
La primera tarea que un cliente JAXR debe completar es establecer una conexión a
un registro. Esta conexión implica las siguientes tareas:
Importe javax.xml.registry.ConnectionFactory;
...
ConnectionFactory connFactory = ConnectionFactory.newInstance ();
• Crear una conexión. Para crear una conexión, un cliente crea primero un
conjunto de propiedades que especifican la URL o URL´s del registro
al que se accede.
Por ejemplo, el siguiente código proporciona las direcciones URL del servicio
de consulta y servicio de publicación de un Registro hipotético. (No debe
haber ningún salto de línea en las cadenas).
78
Web Services Java EE5
Para las consultas se necesita especificar sólo el host del proxy HTTP y el
puerto y para las actualizaciones se debe especificar el HTTPS de host del
proxy y el puerto.
79
Web Services Java EE5
Todos los proveedores de JAXR soportan al menos las siguientes taxonomías para
las clasificaciones:
80
Web Services Java EE5
Ejemplo:
String uuid_naics = "uuid: C0B9FE13-179F-413D-8A5B-5004DB8E5BB2";
ClassificationScheme cScheme =
(ClassificationScheme) bqm.getRegistryObject (uuid_naics,
LifeCycleManager.CLASSIFICATION_SCHEME);
InternationalString sn = blcm.createInternationalString (
"All Other Specialty Food Stores"));
String sv = "445299";
Classification classification = blcm.createClassification (cScheme, sn, sv);
81
Web Services Java EE5
Cuando un cliente tiene localizada una organización, puede encontrar los servicios
de esa organización y los enlaces de servicio relacionados con dichos servicios.
Iterator orgIter = orgs.iterator ();
while (orgIter.hasNext ()) {
Organization org = (Organization) orgIter.next ();
Collection services = org.getServices ();
Iterator svcIter = services.iterator ();
while (svcIter.hasNext ()) {
Service svc = (Service) svcIter.next ();
Collection serviceBindings =svc.getServiceBindings ();
Iterator sbIter = serviceBindings.iterator ();
82
Web Services Java EE5
Los registros suelen dar permisos a un cliente para modificar o eliminar datos sólo
si el usuario es el mismo que presentó por primera vez los datos. La gestión de
datos de Registro incluye las siguientes tareas:
83
Web Services Java EE5
Ejemplo:
//Configura el esquema de clasificación a NAICS
ClassificationScheme cScheme =
bqm.findClassificationSchemeByName (null,
"ntis-gov: naics: 1997");
84
Web Services Java EE5
String sv = “445299“;
Classification classification =
blcm.createClassification (cScheme, sn, sv);
Collection<Classification> classifications =
new ArrayList <Classification> ();
classifications.add (classification);
org.addClassifications (classifications);
Ejemplo:
// Crear servicios y servicio
Collection<Service> services = new ArrayList <Service> ();
InternationalString s =
blcm.createInternationalString ("My Service Name"));
Service service = blcm.createService(s);
s = blcm.createInternationalString ("My Service Description");
service.setDescription (is);
85
Web Services Java EE5
Si una de las organizaciones existe, pero algunos de los datos han cambiado, el
método saveOrganizations las actualiza y sustituye los datos.
Cuando un cliente rellena una organización con la información que quiere hacer
pública, se salva la organización. El registro devuelve la clave en su respuesta, y el
cliente lo recupera.
Ejemplo:
//Añade una organización y la envía al registro
//Devuelve la clave si es correcta
Collection<Organization> orgs = new ArrayList <Organization> ();
orgs.add (org);
BulkResponse response = blcm.saveOrganizations (orgs);
Collection exceptions = response.getException ();
if (exceptions == null) {
System.out.println ("Organization saved");
Collection keys = response.getCollection ();
Iterator keyIter = keys.iterator ();
if (keyIter.hasNext ()) {
Key orgKey = (Key) keyIter.next ();
String id = orgKey.getId ();
System.out.println ("Organization key is " + id);
}
}
86
Web Services Java EE5
String uuid_types =
"uuid: c1acf26d-9672-4404-9d70-39b756e62ab4";
ClassificationScheme uddiOrgTypes =
(ClassificationScheme) bqm.getRegistryObject (uuid_types,
LifeCycleManager.CLASSIFICATION_SCHEME);
Classification wsdlSpecClassification =
blcm.createClassification (uddiOrgTypes,
"wsdlSpec", "wsdlSpec");
specConcept.addClassification (wsdlSpecClassification);
87
Web Services Java EE5
88
Web Services Java EE5
INTRODUCCION
El modelo de seguridad que se utiliza para los servicios web se basa en las
especificaciones y recomendaciones de diversas organizaciones de
normalización.
El reto que hay detrás de la seguridad en los servicios web basados en modelo para
Java EE es comprender y evaluar el riesgo implicados en garantizar un servicio web
actual y, al mismo tiempo, seguir la pista de los estándares que salgan y entender
la forma en que se distribuirán para controlar el riesgo que pueda existir en un
futuro.
Los servicios web se pueden distribuir como EJB endpoints o como web
endpoints (servlets).
1. MENSAJE DE SEGURIDAD
La seguridad de Java EE es fácil de implementar y configurar, pudiendo ofrecer un
control de acceso a las funciones de aplicación y de datos.
89
Web Services Java EE5
Uno de los métodos que se pueden utilizar para hacer frente a los desafíos de la
seguridad en los servicios web es la seguridad de mensajes.
La seguridad está "viva" desde el momento en que deja el consumidor hasta que
llega al proveedor, o viceversa, incluso a través de intermediarios. El problema es
que no se está protegido una vez que el mensaje llega a su destino. Una solución
consiste en encriptar el mensaje antes de enviarlo utilizando el mensaje de
seguridad.
90
Web Services Java EE5
En este escenario, el cifrado de partes sigue siendo opaco a los nodos intermedios y
sólo puede ser descifrado por el receptor previsto. Por esta razón, la capa de
seguridad de los mensajes a veces se denomina seguridad end-to-end.
• El Java Web Services Developer Pack (Java WSDP) incluye XML y Web
Services Security (XWSS), un marco para asegurar JAX-RPC, JAX-WS, y
las aplicaciones SAAJ, así como datos adjuntos de mensajes.
91
Web Services Java EE5
Una firma digital se une a un documento que tiene una clave particular, mientras
que un sello de tiempo digital se une a un documento en su creación, en un
momento determinado.
Una firma digital es un cifrado medio por el cual muchos de estos datos pueden
ser verificados, es una pieza de información basada en el documento y el firmante
de la clave privada.
Normalmente se crea mediante el uso de una función “hash” y funciones de firma
privada (cifrado con la clave privada del firmante), pero hay otros métodos.
2. ESPECIFICACIONES DE SEGURIDAD
Las siguientes organizaciones trabajan en las especificaciones de seguridad de
servicios web, dando directrices, y herramientas:
• El World Wide Web Consortium (W3C).
• Organización para el Avance de las Normas de Información Estructurada
(OASIS).
• Organización de Interoperabilidad de Servicios Web (WS-I).
• Java Community Process (JCP).
92
Web Services Java EE5
93
Web Services Java EE5
De acuerdo con el sitio web de Java Community Process (JCP), JCP es el titular
de la responsabilidad para el desarrollo de la tecnología Java.
94
Web Services Java EE5
El cifrado de XML Encryption se puede utilizar para llevar a cabo el trabajo fino con
los elementos basados en el cifrado de los fragmentos de un documento XML, así
como cifrar los datos binarios arbitrarios e incluir esto en un documento XML.
95
Web Services Java EE5
96
Web Services Java EE5
Ejemplo:
<sun-ejb-jar>
<enterprise-beans>
<unique-id>1</unique-id>
<ejb>
<ejb-name>HelloWorld</ejb-name>
<jndi-name>HelloWorld</jndi-name>
<webservice-endpoint>
<port-component-name>HelloIF</port-component-name>
<endpoint-address-uri>service/HelloWorld</endpointaddress-
97
Web Services Java EE5
uri>
<message-security-binding auth-layer="SOAP">
<message-security>
<message>
<java-method>
<method-name>ejbTaxCalc</method-name>
</java-method>
</message>
<message>
<java-method>
<method-name>sayHello</method-name>
</java-method>
</message>
<request-protection auth-source="content" />
<response-protection auth-source="content"/>
</message-security>
</message-security-binding>
</webservice-endpoint>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
98
Web Services Java EE5
ENUNCIADOS.
1. (SAAJ) es:
99
Web Services Java EE5
100
Web Services Java EE5
PRÁCTICAS
101
Web Services Java EE5
8. UDDI es:
102
Web Services Java EE5
103
Web Services Java EE5
GLOSARIO
Autenticación
B2B (Business-to-Business)
Binding
Cifrado
Método criptográfico que utiliza una clave de dos partes (código) que se compone
de un componente público y otro privado.
104
Web Services Java EE5
Clave pública
Cliente
Método de cifrado. En los criptosistemas de clave pública, cada uno posee dos
claves complementarias relacionadas: una clave pública conocida y una clave
secreta (también conocida como "clave privada"). Cada clave desbloquea el código
de la otra. Aunque se conozca la clave pública no se puede deducir la clave secreta
correspondiente.
105
Web Services Java EE5
Datos
Arquitectura desarrollada por Microsoft para extender COM, permitiendo así que los
objetos situados en diferentes LANs, WANs, o en Internet para comunicarse entre
sí.
Declaración
Descifrado
Una interfaz genérica (plataforma y lenguaje neutral) que permite a los programas
externos editar el contenido de un documento, la estructura y estilo.
Un documento que define el formato de los contenidos que están presentes entre
las etiquetas en un documento XML, y la forma en la que deben ser interpretados
por la aplicación al leer el documento XML.
106
Web Services Java EE5
Elemento
Entidad
Espacio de nombre
Norma que permite especificar una etiqueta exclusiva para un conjunto de nombres
de elementos definido por un DTD. Un documento que utiliza esta definición DTD
puede incluirse en otro documento sin que surjan conflictos entre los nombres de
los elementos. Los elementos definidos en el DTD posteriormente se identificarán
de forma exclusiva de modo que, por ejemplo, el analizador pueda indicar en qué
momento un elemento <name> debe interpretarse en función del DTD en lugar de
utilizar la definición de un elemento <name> en un DTD diferente.
Esquema – Schema
107
Web Services Java EE5
Evento
Firewall
Un protocolo que define cómo deben tener el formato los mensajes y lo que los
servidores tienen que hacer sobre ellos. Para los mensajes basados en la Web.
Versión segura de HTTP implementada por medio del protocolo Secure Socket Layer
(SSL).
108
Web Services Java EE5
Instrucción de procesamiento
Información que contiene una estructura XML destinada a que la interprete una
aplicación en concreto.
API Java que permite a los desarrolladores crear aplicaciones y servicios web
interoperativos basados en protocolos RPC basados en XML.
API Java estándar y uniforme para acceder a diferentes tipos de registros XML.
Permite a los usuarios crear, implementar y descubrir servicios web.
Programa cliente que emplea la API JAXR para acceder a un registro empresarial a
través de un proveedor JAXR.
Mensaje
Metadatos
109
Web Services Java EE5
Organización
Objeto que representa el nivel superior de una estructura jerárquica que utiliza una
empresa para gestionar sus departamentos y recursos.
Entidad general que contiene XML y que, por lo tanto, se analiza al insertarla en el
documento XML, en contraposición a una entidad no analizada.
Parser (analizador)
Módulo que lee en datos XML desde una fuente de entrada y se divide en
fragmentos, de forma que el programa sepa cuándo está trabajando con una
etiqueta, un atributo o datos de un elemento. Un analizador no validador garantiza
que los datos XML no están bien formados, pero no comprueba que sea válido.
Proveedor de registros
110
Web Services Java EE5
Proveedor JAXR
Puerto
Registro
Interfaz gestionada por eventos en la que el parser (analizador) invoca uno de los
diversos métodos que suministra el llamador cuando tiene lugar un evento de
análisis.
Servicio
111
Web Services Java EE5
Servicio web
Una forma de cifrado segura de bajo nivel que utilizan otros protocolos como HTTP
y FTP.
Tag (etiqueta)
112
Web Services Java EE5
Taxonomía
Sistema de categorías para los recursos del motor de búsqueda de Java Enterprise
System Portal Server.
Un lenguaje basado en XML utilizado para definir los servicios web de forma
estándar.
113
Web Services Java EE5
Lenguaje para transformar el formato de datos XML en los datos de otros formatos,
sobre la base de un conjunto de reglas bien definidas.
114