java modulo 8
Post on 27-Nov-2015
113 Views
Preview:
TRANSCRIPT
Profesional en Plataforma
Módulo 8: Diseñando servicios web Java
Profesional en Plataforma
Java
Módulo 8: Diseñando servicios web Java
Profesional en Plataforma
Módulo 8: Diseñando servicios web Java
Módulo 8: Diseñando servicios web Java
Unidad 1. Analizando oportuniudades con los servicios
Unidad 2. Diseñando buenas prácticas y patrones para los servicios web
Unidad 3. Manejando excepciones en los servicios web
Unidad 4. Seguridad en los servicios web
Para uso exclusivo de los alumnos de CETICSA S.L.
Contenido
Módulo 8: Diseñando servicios web Java
Analizando oportuniudades con los servicios web
Diseñando buenas prácticas y patrones para los servicios web
Manejando excepciones en los servicios web
Seguridad en los servicios web
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Módulo 8: Diseñando servicios web Java
web
Diseñando buenas prácticas y patrones para los servicios web
Unidad 1: Analizando Oportunidades con los
Objetivos
� Describir la arquitectura orientada a servicios.
� Entender los servicios web como una implementación de SOA
Introducción
El término servicios Web designa una tecnología que permite que las aplicaciones se comuniquen en
una forma que no depende de la plataforma ni del
interfaz de software que describe un conjunto de operaciones a las cuales se puede acceder por la red
a través de mensajería XML estandarizada. Usa protocolos basados en el lenguaje XML con el objetivo
de describir una operación para ejecutar o datos para intercambiar con otro servicio Web. Un grupo de
servicios Web que interactúa de esa forma define la aplicación de un servicio Web específico en una
arquitectura orientada a servicios (SOA).
La arquitectura en capas se complementa entonces
que se hace necesaria una forma de comunicación eficiente y escalable, independientemente del
lenguaje de programación y plataforma de cada una de las aplicaciones. Es nec
desarrollar los servicios que se presentan y son
utilizados. Un servicio es una función que acepta una llamada y devuelve una respuesta mediante una
interfaz bien definida. La manera en la que un servicio procesa internamente la llamada par
la respuesta es independiente de la definición del servicio.
La arquitectura orientada a servicios proporciona, además, la posibilidad de orquestación de los
servicios, esto es, secuenciación, orden y control de los servicios, añadiendo la lógic
necesaria para el proceso.
Los elementos básicos que conforman SOA son:
� Proveedores de servicios
� Consumidores de servicios
� Bus de Servicios Empresariales.
En la siguiente unidad estudiaremos la arquitectura en servicios, servicios web implementa
análisis de casos típicos de SOA.
Algunas implementaciones SOAP
comunicaciones dinámicas.
Tipos de comunicación entre aplicaciones en Web Services
� Protocolo de Transporte:
o HTTP/HTTPS
� Codificación de datos
o Protocolo SOAP (Simple Object Access Protocol) y Esquema XML (DTD/XSD)
� Descripción de interfaces o puntos de acceso a aplicación
o WSDL (Web Services Description Language)
� Descripción de servicio y descubrimiento
o UDDI (Universal Descrip
Para uso exclusivo de los alumnos de CETICSA S.L.
Analizando Oportunidades con los
Servicios Web
arquitectura orientada a servicios.
los servicios web como una implementación de SOA.
designa una tecnología que permite que las aplicaciones se comuniquen en
una forma que no depende de la plataforma ni del lenguaje de programación. Un servicio Web es una
interfaz de software que describe un conjunto de operaciones a las cuales se puede acceder por la red
a través de mensajería XML estandarizada. Usa protocolos basados en el lenguaje XML con el objetivo
escribir una operación para ejecutar o datos para intercambiar con otro servicio Web. Un grupo de
servicios Web que interactúa de esa forma define la aplicación de un servicio Web específico en una
arquitectura orientada a servicios (SOA).
en capas se complementa entonces con la arquitectura orientada a servicios (SOA), ya
que se hace necesaria una forma de comunicación eficiente y escalable, independientemente del
lenguaje de programación y plataforma de cada una de las aplicaciones. Es nec
desarrollar los servicios que se presentan y son
utilizados. Un servicio es una función que acepta una llamada y devuelve una respuesta mediante una
interfaz bien definida. La manera en la que un servicio procesa internamente la llamada par
la respuesta es independiente de la definición del servicio.
La arquitectura orientada a servicios proporciona, además, la posibilidad de orquestación de los
servicios, esto es, secuenciación, orden y control de los servicios, añadiendo la lógic
Los elementos básicos que conforman SOA son:
Bus de Servicios Empresariales.
En la siguiente unidad estudiaremos la arquitectura en servicios, servicios web implementa
Algunas implementaciones SOAP también usan WSDL durante la ejecución para soportar
plicaciones en Web Services:
Protocolo SOAP (Simple Object Access Protocol) y Esquema XML (DTD/XSD)
Descripción de interfaces o puntos de acceso a aplicación
WSDL (Web Services Description Language)
Descripción de servicio y descubrimiento
UDDI (Universal Description, Discovery and Integration)
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Analizando Oportunidades con los
designa una tecnología que permite que las aplicaciones se comuniquen en
lenguaje de programación. Un servicio Web es una
interfaz de software que describe un conjunto de operaciones a las cuales se puede acceder por la red
a través de mensajería XML estandarizada. Usa protocolos basados en el lenguaje XML con el objetivo
escribir una operación para ejecutar o datos para intercambiar con otro servicio Web. Un grupo de
servicios Web que interactúa de esa forma define la aplicación de un servicio Web específico en una
la arquitectura orientada a servicios (SOA), ya
que se hace necesaria una forma de comunicación eficiente y escalable, independientemente del
lenguaje de programación y plataforma de cada una de las aplicaciones. Es necesario entonces
utilizados. Un servicio es una función que acepta una llamada y devuelve una respuesta mediante una
interfaz bien definida. La manera en la que un servicio procesa internamente la llamada para producir
La arquitectura orientada a servicios proporciona, además, la posibilidad de orquestación de los
servicios, esto es, secuenciación, orden y control de los servicios, añadiendo la lógica de datos
En la siguiente unidad estudiaremos la arquitectura en servicios, servicios web implementando SOA y el
también usan WSDL durante la ejecución para soportar
Protocolo SOAP (Simple Object Access Protocol) y Esquema XML (DTD/XSD)
� Seguridad
o WS-Security, XML Signature y XML Encription (Especificaciones JSR)
Las APIs de Java para los Web Services son las siguientes:
� JDOM
� JAXP: Java API for XML processing
� JAXB: Java API for XML binding
� JAX-RPC: Java API for RPC
� JAXR: Java API for UDDI registry
� SAAJ: SOAP API with Attachements
� JAX-WS: Java API for WebServices
o API de más alto nivel
o Usa todas las demás por debajo
o Permite manejo de WS sin conocimientos de XML, SOAP, etc
Servicios JAX-RS
API de Java que define una infraestructura (clases e interfaces) para implementar una
(paquete javax.ws.rs).
Vamos a visualizar primer que es una arquitectura REST:
REST (Representational State Transfer): Se define como un "estilo arquitectónico" para el
aplicaciones distribuidas.
Características de REST:
� Forma de construir aplicaciones distribuidas.
� Centrada en el concepto de RECURSO
� Mecanismos RPC centrados en concepto de operación
� El estado de los recursos reside en el servidor
� Los clientes acceden al estado de recurso mediante REPRESENTACIONES del mismo transferidas
desde el servidor o desde el cliente empleando el protocolo HTTP como mecanismo de
transporte (podrían emplearse otros, REST no es específico de un protocolo)
� Cada aplicación puede utilizar diferentes formatos para la representación de
o HTML para navegadores web
o XML, JSON para aplicaciones
Para uso exclusivo de los alumnos de CETICSA S.L.
Security, XML Signature y XML Encription (Especificaciones JSR)
Las APIs de Java para los Web Services son las siguientes:
JAXP: Java API for XML processing
JAXB: Java API for XML binding
JAXR: Java API for UDDI registry
SOAP API with Attachements
WS: Java API for WebServices
API de más alto nivel
Usa todas las demás por debajo
Permite manejo de WS sin conocimientos de XML, SOAP, etc
define una infraestructura (clases e interfaces) para implementar una
Vamos a visualizar primer que es una arquitectura REST:
presentational State Transfer): Se define como un "estilo arquitectónico" para el
Forma de construir aplicaciones distribuidas.
Centrada en el concepto de RECURSO
ecanismos RPC centrados en concepto de operación
El estado de los recursos reside en el servidor
es acceden al estado de recurso mediante REPRESENTACIONES del mismo transferidas
desde el servidor o desde el cliente empleando el protocolo HTTP como mecanismo de
transporte (podrían emplearse otros, REST no es específico de un protocolo)
puede utilizar diferentes formatos para la representación de
HTML para navegadores web
XML, JSON para aplicaciones
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Security, XML Signature y XML Encription (Especificaciones JSR)
define una infraestructura (clases e interfaces) para implementar una arquitectura REST
presentational State Transfer): Se define como un "estilo arquitectónico" para el desarrollo de
es acceden al estado de recurso mediante REPRESENTACIONES del mismo transferidas
desde el servidor o desde el cliente empleando el protocolo HTTP como mecanismo de
transporte (podrían emplearse otros, REST no es específico de un protocolo)
puede utilizar diferentes formatos para la representación de los recursos
o Con el parámetro Content
datos intercambiados (text/html, applicat
o El cliente puede informar al servidor del tipo de representación que necesita
Accept en cabecera de las peticiones HTTP)
� Los recursos son identificados y están accesibles mediante uno o varios URI (Uniform Resource
Identifier).
� Incluye un conjunto de anotaciones para especificar el mapeo entre las URIs de los recursos y los
métodos HTTP con los métodos Java de una clase de
� Gestiona automáticamente las representaciones
� Emplea JAXB para el tipo MIME application/xml
� Emplea la librería BadgerFish para mapeo de XML a JSON en el caso del
application/json
� La generación y tratamiento de otros tipos de representaciones debe manejarse manualmente
(imágenes, PDF, ...) implementando las interfaces javax.ws.rs.ext.MessageBodyReader,
javax.ws.rs.ext.MessageBodyWriter en
ANOTACIONES JAX-RS
@Path
La clase de implementación de los recursos REST (resource class)
@Path, especificando el path de alto nivel dentro del que se enmarcan las
de implementación (context root).
Pueden anotarse clases Java "normales" o EJBs sin estado.
En el caso de anotar clases "normales" se deberá especificar en el web.xml de la aplicación web el uso
del Servlet de JAX-RS.
En los métodos de dicha clase se puede especificar el path (dentro del path de la
implementación) al que se vinculan los métodos Java.
Podemos asociar nombres a los distintos fragmentos que componen el path
señalados entre los signos {...}.
Podemos especificar los fragmentos de
Anotaciones de métodos http
Especifican el método HTTP al que se vi
servicios web JAX-RS.
@GET
Vincula al método anotado las peticiones HTTP GET dirigidas al path
@PUT
Vincula al método anotado las peticiones HTTP PUT dirigidas al pa
@DELETE
Vincula al método anotado las peticiones HTTP DELETE dirigidas al
@POST
Vincula al método anotado las peticiones HTTP POST dirigidas al path
Para uso exclusivo de los alumnos de CETICSA S.L.
Con el parámetro Content-Type de las cabeceras HTTP se especifica el tipo MIME de los
datos intercambiados (text/html, application/xml, application/json)
El cliente puede informar al servidor del tipo de representación que necesita
Accept en cabecera de las peticiones HTTP)
Los recursos son identificados y están accesibles mediante uno o varios URI (Uniform Resource
Incluye un conjunto de anotaciones para especificar el mapeo entre las URIs de los recursos y los
métodos HTTP con los métodos Java de una clase de implementación (endpoint)
Gestiona automáticamente las representaciones de los recursos intercambi
Emplea JAXB para el tipo MIME application/xml
Emplea la librería BadgerFish para mapeo de XML a JSON en el caso del
La generación y tratamiento de otros tipos de representaciones debe manejarse manualmente
..) implementando las interfaces javax.ws.rs.ext.MessageBodyReader,
javax.ws.rs.ext.MessageBodyWriter en una clase anotada con @jax.ws.rs.ext.Provider.
La clase de implementación de los recursos REST (resource class) debe señalarse con
@Path, especificando el path de alto nivel dentro del que se enmarcan las URIs gestionadas por la clase
Pueden anotarse clases Java "normales" o EJBs sin estado.
ormales" se deberá especificar en el web.xml de la aplicación web el uso
En los métodos de dicha clase se puede especificar el path (dentro del path de la
implementación) al que se vinculan los métodos Java.
a los distintos fragmentos que componen el path
los fragmentos del path empleando expresiones regulares.
Especifican el método HTTP al que se vinculan los métodos Java anotados para compatibilidad con los
ncula al método anotado las peticiones HTTP GET dirigidas al path correspondiente a ese método
incula al método anotado las peticiones HTTP PUT dirigidas al path correspondiente a ese método
incula al método anotado las peticiones HTTP DELETE dirigidas al path correspondiente a ese método
incula al método anotado las peticiones HTTP POST dirigidas al path correspondiente a ese método
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Type de las cabeceras HTTP se especifica el tipo MIME de los
application/json)
El cliente puede informar al servidor del tipo de representación que necesita (parámetro
Los recursos son identificados y están accesibles mediante uno o varios URI (Uniform Resource
Incluye un conjunto de anotaciones para especificar el mapeo entre las URIs de los recursos y los
implementación (endpoint)
de los recursos intercambiados.
tipo MIME
La generación y tratamiento de otros tipos de representaciones debe manejarse manualmente
..) implementando las interfaces javax.ws.rs.ext.MessageBodyReader,
una clase anotada con @jax.ws.rs.ext.Provider.
señalarse con una anotación
URIs gestionadas por la clase
ormales" se deberá especificar en el web.xml de la aplicación web el uso
En los métodos de dicha clase se puede especificar el path (dentro del path de la clase de
a los distintos fragmentos que componen el path, dichos nombres irán
.
para compatibilidad con los
correspondiente a ese método.
correspondiente a ese método.
path correspondiente a ese método.
correspondiente a ese método.
Existe otro tipo de servicios web en java que son JAVA
Los estándares principales y tecnologías para construir y habilitar Web services son:
XML
Es el estándar de facto para estructurar datos, contenido y formatos para documentos electrónicos.
Es el lenguaje universal para intercambio de información entre aplicaciones, sistemas y dispositivos sobre
Internet.
SOAP
Es una especificación de un protocolo que define una forma uniforme
XML.
También define una forma de invocar procedimientos remotos (RPC: Remote Procedure Call) usando a
HTTP como el protocolo de comunicación.
SOAP parte de la premisa que no importa si el middleware es simple o complejo,
WAN wrapper (envoltorio).
El envío de mensajes como texto XML plano tiene ventajas en términos de que asegura la
interoperabilidad y en el middleware se acepta el costo del parsing y la serialización XML, para su
visibilidad en todas las redes.
Es un protocolo simple de mensajería XML sobre los protocolos HTTP, SMTP, FTP y otros de Internet. Permite
el intercambio de información entre dos o mas pares y permite que se comuniquen en un ambiente de
aplicación
distribuida.
Es independiente del modelo de objetos de la aplicación, del lenguaje y de la plataforma o dispositivo
sobre el cual corre
Es un protocolo del W3C y de Sun Microsystems, IBM, HP, SAP, Oracle y Microsoft. Estas empresas
participan en el W3C XML protocol-
Usa XML Infosets como formato para los mensajes y sus reglas de codificación para representar datos y
mensajes.
WSDL
Define a los servicios como colecciones de extremos de la red (network
endpoints) o puertos (ports).
Un documento WSDL usa los siguientes elementos en la definición de
Types – un contener de definiciones de tipos de datos usando algún tipo de
Message – una definición abstracta con tipos de los datos que se
Operation – una descripción abstracta de una acción soportada por el
Port Type – un conjunto abstracto de operaciones soportadas por uno o
Binding – un protocolo concreto y especificación de datos para un port type
en particular.
Para uso exclusivo de los alumnos de CETICSA S.L.
ro tipo de servicios web en java que son JAVA-WS y que describiremos en módulos posteriores.
Estándares Principales de Web Services
Los estándares principales y tecnologías para construir y habilitar Web services son:
ructurar datos, contenido y formatos para documentos electrónicos.
Es el lenguaje universal para intercambio de información entre aplicaciones, sistemas y dispositivos sobre
Es una especificación de un protocolo que define una forma uniforme de pasar datos codificados en
También define una forma de invocar procedimientos remotos (RPC: Remote Procedure Call) usando a
HTTP como el protocolo de comunicación.
SOAP parte de la premisa que no importa si el middleware es simple o complejo,
El envío de mensajes como texto XML plano tiene ventajas en términos de que asegura la
interoperabilidad y en el middleware se acepta el costo del parsing y la serialización XML, para su
Es un protocolo simple de mensajería XML sobre los protocolos HTTP, SMTP, FTP y otros de Internet. Permite
el intercambio de información entre dos o mas pares y permite que se comuniquen en un ambiente de
l modelo de objetos de la aplicación, del lenguaje y de la plataforma o dispositivo
Es un protocolo del W3C y de Sun Microsystems, IBM, HP, SAP, Oracle y Microsoft. Estas empresas
-working group. ebXML de UN/CEFACT usa SOAP.
Usa XML Infosets como formato para los mensajes y sus reglas de codificación para representar datos y
Define a los servicios como colecciones de extremos de la red (network
L usa los siguientes elementos en la definición de servicios:
un contener de definiciones de tipos de datos usando algún tipo de sistema (tal como XSD).
una definición abstracta con tipos de los datos que se transmiten.
scripción abstracta de una acción soportada por el servicio
un conjunto abstracto de operaciones soportadas por uno o mas endpoints.
un protocolo concreto y especificación de datos para un port type
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
WS y que describiremos en módulos posteriores.
Estándares Principales de Web Services
Los estándares principales y tecnologías para construir y habilitar Web services son:
ructurar datos, contenido y formatos para documentos electrónicos.
Es el lenguaje universal para intercambio de información entre aplicaciones, sistemas y dispositivos sobre
de pasar datos codificados en
También define una forma de invocar procedimientos remotos (RPC: Remote Procedure Call) usando a
SOAP parte de la premisa que no importa si el middleware es simple o complejo, todos requieren un
El envío de mensajes como texto XML plano tiene ventajas en términos de que asegura la
interoperabilidad y en el middleware se acepta el costo del parsing y la serialización XML, para su
Es un protocolo simple de mensajería XML sobre los protocolos HTTP, SMTP, FTP y otros de Internet. Permite
el intercambio de información entre dos o mas pares y permite que se comuniquen en un ambiente de
l modelo de objetos de la aplicación, del lenguaje y de la plataforma o dispositivo
Es un protocolo del W3C y de Sun Microsystems, IBM, HP, SAP, Oracle y Microsoft. Estas empresas
e UN/CEFACT usa SOAP.
Usa XML Infosets como formato para los mensajes y sus reglas de codificación para representar datos y
sistema (tal como XSD).
mas endpoints.
Port – un endpoint en particular, definido como una combinación de un
binding y una dirección de red
Resumiendo, WSDL es una plantilla (template) de cómo se describen servicios y los usan los clientes
UDDI
Provee un mecanismo para que los clientes dinámicamente puedan encon
Usando una interface UDDI, una aplicación comercial se puede conectar dinámicamente con los
servicios provistos por una aplicación comercial externa de otra empresa.
Un UDDI registry tiene dos tipos de clientes:
Aplicaciones comerciales que quieren publicar un servicio y sus interfaces de uso, y clientes que quieren
obtener servicios de un cierto tipo y vincularse
por medio de programas a ellos.
Es una capa superior sobre SOAP y asume que requerimientos y respuestas son objetos UDDI
como mensajes SOAP.
No soporta descubrimiento con todas las opciones (por ejemplo búsquedas limitadas geográficamente
o vinculación y negociación de contratos tipo
eLance).
Se espera que UDDI sea la base para servicios de capas superiores
El UDDI working group incluye a Sun Microsystems,IBM, HP, SAP, Oracle y Microsoft.
ebXML
Define un mercado electrónico global en el cual las empresas se encuentran unas a otras y realizan
operaciones comerciales y transacci
Define un conjunto de especificaciones para empresas para conducir negocios electrónicos sobre
Internet estableciendo un estándar común para
información comercial, colaboración en procesos
acuerdos y mensajería.
Es una iniciativa de United Nations Center for Trade Facilitation and Electronic Business (UN/CEFACT) y la
Organization for the Advancement of Structured Information Standards (OASIS).
Otras organizaciones de estándares como Open Travel Alliance (OTA), Open Application Group, Inc.
(OAGI), Global Commerce Initiative (GCI), Health
Level 7 (HL7, una organización de estándares dedicados a la salud), y RosettaNet (un comité de
estándares XML ) lo han adoptado.
Framework de ebXML
• ebXML Business Process Service Specifications (BPSS).
• ebXML CPP/CPA.
• ebXML Messaging Service Handler (MSH)
• ebXML registry
• ebXML Core components
Para uso exclusivo de los alumnos de CETICSA S.L.
en particular, definido como una combinación de un
Resumiendo, WSDL es una plantilla (template) de cómo se describen servicios y los usan los clientes
Provee un mecanismo para que los clientes dinámicamente puedan encontrar otros web services.
Usando una interface UDDI, una aplicación comercial se puede conectar dinámicamente con los
servicios provistos por una aplicación comercial externa de otra empresa.
Un UDDI registry tiene dos tipos de clientes:
iales que quieren publicar un servicio y sus interfaces de uso, y clientes que quieren
obtener servicios de un cierto tipo y vincularse
Es una capa superior sobre SOAP y asume que requerimientos y respuestas son objetos UDDI
No soporta descubrimiento con todas las opciones (por ejemplo búsquedas limitadas geográficamente
o vinculación y negociación de contratos tipo
Se espera que UDDI sea la base para servicios de capas superiores soportadas por otros estándares.
El UDDI working group incluye a Sun Microsystems,IBM, HP, SAP, Oracle y Microsoft.
Define un mercado electrónico global en el cual las empresas se encuentran unas a otras y realizan
operaciones comerciales y transacciones cooperativamente.
Define un conjunto de especificaciones para empresas para conducir negocios electrónicos sobre
Internet estableciendo un estándar común para especificar procesos de negocio, modelado de
información comercial, colaboración en procesos de negocio, perfiles de colaboración de socios,
Es una iniciativa de United Nations Center for Trade Facilitation and Electronic Business (UN/CEFACT) y la
Organization for the Advancement of Structured Information Standards (OASIS).
Otras organizaciones de estándares como Open Travel Alliance (OTA), Open Application Group, Inc.
(OAGI), Global Commerce Initiative (GCI), Health
Level 7 (HL7, una organización de estándares dedicados a la salud), y RosettaNet (un comité de
ebXML Business Process Service Specifications (BPSS).
ebXML Messaging Service Handler (MSH)
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Resumiendo, WSDL es una plantilla (template) de cómo se describen servicios y los usan los clientes
trar otros web services.
Usando una interface UDDI, una aplicación comercial se puede conectar dinámicamente con los
iales que quieren publicar un servicio y sus interfaces de uso, y clientes que quieren
Es una capa superior sobre SOAP y asume que requerimientos y respuestas son objetos UDDI enviados
No soporta descubrimiento con todas las opciones (por ejemplo búsquedas limitadas geográficamente
soportadas por otros estándares.
El UDDI working group incluye a Sun Microsystems,IBM, HP, SAP, Oracle y Microsoft.
Define un mercado electrónico global en el cual las empresas se encuentran unas a otras y realizan
Define un conjunto de especificaciones para empresas para conducir negocios electrónicos sobre
especificar procesos de negocio, modelado de
de negocio, perfiles de colaboración de socios,
Es una iniciativa de United Nations Center for Trade Facilitation and Electronic Business (UN/CEFACT) y la
Otras organizaciones de estándares como Open Travel Alliance (OTA), Open Application Group, Inc.
Level 7 (HL7, una organización de estándares dedicados a la salud), y RosettaNet (un comité de
La Arquitectura Orientada a Servicios
define la utilización de servicios para dar soporte a los requisitos del negocio.
Permite la creación de sistemas altamente escalables que reflejan el negocio de la organización, a su
vez brinda una forma bien definida de exposición e invocación de servicios (comúnmente pero no
exclusivamente servicios web), lo cual facilita la interacción entre diferentes sistemas propios o de
terceros.
SOA define las siguientes capas de software:
Aplicaciones básicas - Sistemas desarrollados bajo cualquier arquitectura o tecnología,
geográficamente dispersos y bajo cualquier figura de propiedad;
De exposición de funcionalidades -
forma de servicios (generalmente como servicios web);
De integración de servicios - Facilitan el intercambio de datos entre elementos de la capa aplicativa
orientada a procesos empresariales internos o en colaboración;
De composición de procesos - Que define el proceso en tér
varía en función del negocio;
De entrega - donde los servicios son desplegados a los usuarios finales.
SOA proporciona una metodología y un marco de trabajo para documentar las capacidades de
negocio y puede dar soporte a las actividades de integración y consolidación.
Los puntos de entrada definidos por
empresa a beneficiarse con la implementación de soluciones SOA predefinidas.
son impulsados por necesidades empresariales (puntos de entrada relacionados con personas, procesos
e información) y necesidades de TI (puntos de entrada relacionados con conectividad y reutilización).
He aquí algunas descripciones generales de los
Para uso exclusivo de los alumnos de CETICSA S.L.
Arquitectura orientada a servicios
La Arquitectura Orientada a Servicios de cliente, es un concepto de arquitectura de software que
define la utilización de servicios para dar soporte a los requisitos del negocio.
Permite la creación de sistemas altamente escalables que reflejan el negocio de la organización, a su
na forma bien definida de exposición e invocación de servicios (comúnmente pero no
), lo cual facilita la interacción entre diferentes sistemas propios o de
SOA define las siguientes capas de software:
Sistemas desarrollados bajo cualquier arquitectura o tecnología,
geográficamente dispersos y bajo cualquier figura de propiedad;
- Donde las funcionalidades de la capa aplicativa son expuestas en
generalmente como servicios web);
Facilitan el intercambio de datos entre elementos de la capa aplicativa
orientada a procesos empresariales internos o en colaboración;
Que define el proceso en términos del negocio y sus necesidades, y que
donde los servicios son desplegados a los usuarios finales.
SOA proporciona una metodología y un marco de trabajo para documentar las capacidades de
soporte a las actividades de integración y consolidación.
Los puntos de entrada definidos por -- basados en experiencias reales de clientes
empresa a beneficiarse con la implementación de soluciones SOA predefinidas.
son impulsados por necesidades empresariales (puntos de entrada relacionados con personas, procesos
e información) y necesidades de TI (puntos de entrada relacionados con conectividad y reutilización).
He aquí algunas descripciones generales de los cinco puntos de entrada:
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Arquitectura orientada a servicios
de cliente, es un concepto de arquitectura de software que
Permite la creación de sistemas altamente escalables que reflejan el negocio de la organización, a su
na forma bien definida de exposición e invocación de servicios (comúnmente pero no
), lo cual facilita la interacción entre diferentes sistemas propios o de
Sistemas desarrollados bajo cualquier arquitectura o tecnología,
Donde las funcionalidades de la capa aplicativa son expuestas en
Facilitan el intercambio de datos entre elementos de la capa aplicativa
minos del negocio y sus necesidades, y que
SOA proporciona una metodología y un marco de trabajo para documentar las capacidades de
basados en experiencias reales de clientes -- pueden ayudar su
empresa a beneficiarse con la implementación de soluciones SOA predefinidas. Esos puntos de entrada
son impulsados por necesidades empresariales (puntos de entrada relacionados con personas, procesos
e información) y necesidades de TI (puntos de entrada relacionados con conectividad y reutilización).
Personas: Este punto de entrada a SOA enfoca la experiencia del usuario para ayudar a generar
innovación y más colaboración, lo que posibilita la interacción consistente entre personas y procesos y,
consecuentemente, aumenta la pro
portlets basados en servicios para aumentar esa colaboración.
Procesos: El punto de entrada relacionado con procesos ayuda las compañías a saber qué está
sucediendo en los negocios, lo que le
SOA, puede transformar sus procesos empresariales en servicios reutilizables y flexibles, lo que le permite
mejorar y optimizar los nuevos procesos.
Información: Al usar ese punto de entrad
compañía en forma consistente y visible. Al facilitar informaciones consistentes y confiables a todas las
áreas de la empresa, habilita todas las áreas de la compañía a innovar y, consecuentemente, pu
competir con más eficiencia. Al usar SOA, se tiene un control mejor sobre sus informaciones; al alinear las
informaciones a sus procesos empresariales, puede descubrir relaciones nuevas e interesantes.
Conectividad: Aproveche el punto de entrada relaci
infraestructura con eficiencia, integrando todas las personas, procesos e informaciones de su compañía.
Al tener conexiones flexibles de SOA entre los servicios y en todo el entorno, puede tomar un proceso
empresarial ya existente y ofrecerlo sin mucho esfuerzo a través de otro canal empresarial. Puede
incluso conectarse a socios externos fuera de su firewall en una forma segura.
Reutilización: La reutilización de servicios con SOA permite aprovechar servicios que
compañía. Al basarse en los recursos ya existentes, puede optimizar sus procesos empresariales,
asegurar la consistencia en toda la compañía y reducir el tiempo de desarrollo. Todo ello ahorra tiempo
y dinero. Usted también reduce la dupli
de aprovechar las aplicaciones centrales comprobadas con las cuales el personal de su compañía está
familiarizado.
Propiedades de soa
Algunas de las más importantes propiedades de SOA son:
Orientación a la conversación. El foco de atención no está en los nodos sino en los mensajes que se
intercambian entre los mismos.
Vista Lógica: El servicio es una abstracción (vista lógica) de los programas, bases de datos, procesos de
negocio, etc.
Orientación a Mensajes: El servicio se define formalmente en términos de los mensajes que se
intercambian entre agentes proveedores y solicitantes. Esto posibilita que se incorpore un componente
“decorando” estos componentes con software de gestión y conversión
Abstracción del agente. La estructura interna del agente (lenguaje de programación, BD, etc.) se
abstrae en SOA, un nodo es una entidad computacional que participa en conversaciones con otros
nodos. No es necesario conocer las particularidades del lengua
problemas arquitectónicos derivados de la necesidad de conocer determinados sistemas a nivel
estructural.
Metadatos. SOA se asocian con metadatos, los mismos son descripciones acerca de la forma y tipo de
los elementos que transportan los mensajes, el orden de los mensajes, el significado de los mensajes, etc.
Orientación a la Internet: Los servicios tienden a usarse a través de la red, aunque este no es un requisito
absoluto.
Granularidad: Los servicios tienden a usar u
Para uso exclusivo de los alumnos de CETICSA S.L.
Personas: Este punto de entrada a SOA enfoca la experiencia del usuario para ayudar a generar
innovación y más colaboración, lo que posibilita la interacción consistente entre personas y procesos y,
consecuentemente, aumenta la productividad empresarial. Al usar SOA se puede, por ejemplo, crear
portlets basados en servicios para aumentar esa colaboración.
Procesos: El punto de entrada relacionado con procesos ayuda las compañías a saber qué está
sucediendo en los negocios, lo que les permite mejorar los modelos empresariales ya existentes. Al usar
SOA, puede transformar sus procesos empresariales en servicios reutilizables y flexibles, lo que le permite
mejorar y optimizar los nuevos procesos.
Información: Al usar ese punto de entrada a SOA, puede sacar provecho a las informaciones de su
compañía en forma consistente y visible. Al facilitar informaciones consistentes y confiables a todas las
áreas de la empresa, habilita todas las áreas de la compañía a innovar y, consecuentemente, pu
competir con más eficiencia. Al usar SOA, se tiene un control mejor sobre sus informaciones; al alinear las
informaciones a sus procesos empresariales, puede descubrir relaciones nuevas e interesantes.
Conectividad: Aproveche el punto de entrada relacionado con la conectividad para conectar su
infraestructura con eficiencia, integrando todas las personas, procesos e informaciones de su compañía.
Al tener conexiones flexibles de SOA entre los servicios y en todo el entorno, puede tomar un proceso
rial ya existente y ofrecerlo sin mucho esfuerzo a través de otro canal empresarial. Puede
incluso conectarse a socios externos fuera de su firewall en una forma segura.
Reutilización: La reutilización de servicios con SOA permite aprovechar servicios que
compañía. Al basarse en los recursos ya existentes, puede optimizar sus procesos empresariales,
asegurar la consistencia en toda la compañía y reducir el tiempo de desarrollo. Todo ello ahorra tiempo
y dinero. Usted también reduce la duplicación de funcionalidades en sus servicios y tiene la oportunidad
de aprovechar las aplicaciones centrales comprobadas con las cuales el personal de su compañía está
Algunas de las más importantes propiedades de SOA son:
Orientación a la conversación. El foco de atención no está en los nodos sino en los mensajes que se
Vista Lógica: El servicio es una abstracción (vista lógica) de los programas, bases de datos, procesos de
tación a Mensajes: El servicio se define formalmente en términos de los mensajes que se
intercambian entre agentes proveedores y solicitantes. Esto posibilita que se incorpore un componente
“decorando” estos componentes con software de gestión y conversión.
Abstracción del agente. La estructura interna del agente (lenguaje de programación, BD, etc.) se
abstrae en SOA, un nodo es una entidad computacional que participa en conversaciones con otros
nodos. No es necesario conocer las particularidades del lenguaje de implementación. Esto evita
problemas arquitectónicos derivados de la necesidad de conocer determinados sistemas a nivel
Metadatos. SOA se asocian con metadatos, los mismos son descripciones acerca de la forma y tipo de
transportan los mensajes, el orden de los mensajes, el significado de los mensajes, etc.
Orientación a la Internet: Los servicios tienden a usarse a través de la red, aunque este no es un requisito
Granularidad: Los servicios tienden a usar un pequeño número de operaciones con mensajes complejos.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Personas: Este punto de entrada a SOA enfoca la experiencia del usuario para ayudar a generar
innovación y más colaboración, lo que posibilita la interacción consistente entre personas y procesos y,
ductividad empresarial. Al usar SOA se puede, por ejemplo, crear
Procesos: El punto de entrada relacionado con procesos ayuda las compañías a saber qué está
s permite mejorar los modelos empresariales ya existentes. Al usar
SOA, puede transformar sus procesos empresariales en servicios reutilizables y flexibles, lo que le permite
a a SOA, puede sacar provecho a las informaciones de su
compañía en forma consistente y visible. Al facilitar informaciones consistentes y confiables a todas las
áreas de la empresa, habilita todas las áreas de la compañía a innovar y, consecuentemente, puede
competir con más eficiencia. Al usar SOA, se tiene un control mejor sobre sus informaciones; al alinear las
informaciones a sus procesos empresariales, puede descubrir relaciones nuevas e interesantes.
onado con la conectividad para conectar su
infraestructura con eficiencia, integrando todas las personas, procesos e informaciones de su compañía.
Al tener conexiones flexibles de SOA entre los servicios y en todo el entorno, puede tomar un proceso
rial ya existente y ofrecerlo sin mucho esfuerzo a través de otro canal empresarial. Puede
Reutilización: La reutilización de servicios con SOA permite aprovechar servicios que ya existen en la
compañía. Al basarse en los recursos ya existentes, puede optimizar sus procesos empresariales,
asegurar la consistencia en toda la compañía y reducir el tiempo de desarrollo. Todo ello ahorra tiempo
cación de funcionalidades en sus servicios y tiene la oportunidad
de aprovechar las aplicaciones centrales comprobadas con las cuales el personal de su compañía está
Orientación a la conversación. El foco de atención no está en los nodos sino en los mensajes que se
Vista Lógica: El servicio es una abstracción (vista lógica) de los programas, bases de datos, procesos de
tación a Mensajes: El servicio se define formalmente en términos de los mensajes que se
intercambian entre agentes proveedores y solicitantes. Esto posibilita que se incorpore un componente
Abstracción del agente. La estructura interna del agente (lenguaje de programación, BD, etc.) se
abstrae en SOA, un nodo es una entidad computacional que participa en conversaciones con otros
je de implementación. Esto evita
problemas arquitectónicos derivados de la necesidad de conocer determinados sistemas a nivel
Metadatos. SOA se asocian con metadatos, los mismos son descripciones acerca de la forma y tipo de
transportan los mensajes, el orden de los mensajes, el significado de los mensajes, etc.
Orientación a la Internet: Los servicios tienden a usarse a través de la red, aunque este no es un requisito
n pequeño número de operaciones con mensajes complejos.
Neutral a la Plataforma: Los mensajes se envían en un formato estándar y neutral a la plataforma,
utilizando XML
Un sistema distribuido es un conjunto de agentes software que colaboran entre si para
determinada funcionalidad. SOA es un tipo de sistema distribuido ya que los agentes rara vez trabajan
en el mismo entorno, necesitando alguna forma de comunicación entre ellos.
servicios que realizan una operación de
de una gran aplicación.
Desarrollo de servicios web con tecnología java
Un servicio web ofrece una infraestructura independiente de lenguaje y plataforma para comunicación.
Un servicio web tiene las siguientes características:
Independiente de lenguaje y plataforma: Separación de la especificación y la
Implementación.
Desacoplada: Basa en mensajes con interacción síncrona y asíncrona
Sobre una Internet: No existe control centralizado, se usan pro
establecidos y consideraciones de seguridad
Interoperable: Basado en estándares
Aplicación – Aplicación: Internet tradicional es Aplicación
HTTP); esquemas RPC (procedural), ORB y COM (objetos), MOM (mensajes
jms/mq) para aplicación – aplicación dentro de una Internet sin considerar interoperar
con otros sistemas.
Ejemplo de desarrollo web con tecnología java
En este ejemplo resalizaremos un servicio web que devuelva un simple mensaje, el servicio web lo
consumiremos desde una aplicación java, y posteriormente se consumirá a través de una aplicación
web:
Crear un proyecto Web Services con un método que devuelva un String.
Realizar un proyecto cliente que consuma el servicio web.
Para uso exclusivo de los alumnos de CETICSA S.L.
Neutral a la Plataforma: Los mensajes se envían en un formato estándar y neutral a la plataforma,
utilizando XML
Un sistema distribuido es un conjunto de agentes software que colaboran entre si para
SOA es un tipo de sistema distribuido ya que los agentes rara vez trabajan
en el mismo entorno, necesitando alguna forma de comunicación entre ellos.
servicios que realizan una operación determinada y que puede ser invocado desde afuera del contexto
Desarrollo de servicios web con tecnología java
nfraestructura independiente de lenguaje y plataforma para comunicación.
las siguientes características:
Independiente de lenguaje y plataforma: Separación de la especificación y la
Desacoplada: Basa en mensajes con interacción síncrona y asíncrona.
Sobre una Internet: No existe control centralizado, se usan protocolos bien
establecidos y consideraciones de seguridad.
Interoperable: Basado en estándares.
Aplicación: Internet tradicional es Aplicación – Humano (SMTP, FTP,
HTTP); esquemas RPC (procedural), ORB y COM (objetos), MOM (mensajes –
aplicación dentro de una Internet sin considerar interoperar
Ejemplo de desarrollo web con tecnología java
En este ejemplo resalizaremos un servicio web que devuelva un simple mensaje, el servicio web lo
desde una aplicación java, y posteriormente se consumirá a través de una aplicación
Crear un proyecto Web Services con un método que devuelva un String.
Realizar un proyecto cliente que consuma el servicio web.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Neutral a la Plataforma: Los mensajes se envían en un formato estándar y neutral a la plataforma,
utilizando XML
Un sistema distribuido es un conjunto de agentes software que colaboran entre si para implementar una
SOA es un tipo de sistema distribuido ya que los agentes rara vez trabajan
en el mismo entorno, necesitando alguna forma de comunicación entre ellos. En SOA los agentes son
terminada y que puede ser invocado desde afuera del contexto
Desarrollo de servicios web con tecnología java
nfraestructura independiente de lenguaje y plataforma para comunicación.
aplicación dentro de una Internet sin considerar interoperar
En este ejemplo resalizaremos un servicio web que devuelva un simple mensaje, el servicio web lo
desde una aplicación java, y posteriormente se consumirá a través de una aplicación
1. Abrir un proyecto de tipo web y llamar
2. Elegir el servidor GlassFish para que posteriormente nos resulte más sencillo enlazarnos al explorar
sitios web.
Para uso exclusivo de los alumnos de CETICSA S.L.
Abrir un proyecto de tipo web y llamarlo WSNombre.
Elegir el servidor GlassFish para que posteriormente nos resulte más sencillo enlazarnos al explorar
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Elegir el servidor GlassFish para que posteriormente nos resulte más sencillo enlazarnos al explorar
3. Agregamos un archivo de tipo WebService, le damos un nombre y un paquete donde guardarlo.
Para uso exclusivo de los alumnos de CETICSA S.L.
Agregamos un archivo de tipo WebService, le damos un nombre y un paquete donde guardarlo.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Agregamos un archivo de tipo WebService, le damos un nombre y un paquete donde guardarlo.
4. En la pestaña diseño agregamos una nueva operación. Esta opción nos creará un método
público que ofreceremos a los clientes que quieran consumir el servicio.
5. Modificamos el código que nos genera para devolver un mensaje predeterminado.
@WebMethod(operationName = "Nombre")
public String Nombre() {
return "Hola Pepe";
}
EJECUTAR EL PROYECTO PARA QUE GENERE LOS ARCHIVOS NECESARIOS.
6. Creación de un cliente que consuma el servicio. Seleccionamos un proyecto de tipo java
application y le llamaremos ConsumirWSNombre.
Para uso exclusivo de los alumnos de CETICSA S.L.
En la pestaña diseño agregamos una nueva operación. Esta opción nos creará un método
público que ofreceremos a los clientes que quieran consumir el servicio.
Modificamos el código que nos genera para devolver un mensaje predeterminado.
ationName = "Nombre")
EJECUTAR EL PROYECTO PARA QUE GENERE LOS ARCHIVOS NECESARIOS.
Creación de un cliente que consuma el servicio. Seleccionamos un proyecto de tipo java
remos ConsumirWSNombre.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
En la pestaña diseño agregamos una nueva operación. Esta opción nos creará un método
Modificamos el código que nos genera para devolver un mensaje predeterminado.
Creación de un cliente que consuma el servicio. Seleccionamos un proyecto de tipo java
7. Agregamos un archivo de tipo Web Service Client.
Para uso exclusivo de los alumnos de CETICSA S.L.
Agregamos un archivo de tipo Web Service Client.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
8. Pulsamos sobre la opción examinar y elegimos el servicio web recién creado.
9.
10. Pulsamos botón derecho en código sobre la clase que tiene el método main y seleccionamos
insert code y Call Web Service Operation. Por último, elegimos el método nombre.
11. Nos generará el código necesario para invocar al método. Probarlo llamando desde el método
main.
public static void main(String[] args) {
System.out.println(nombre());
}
private static String nombre() {
consumirwsnombre.WebService1Service service = new consumirwsnombre.WebService1Service();
consumirwsnombre.WebService1 port = service.getWebService1Port();
return port.nombre();
}
Para uso exclusivo de los alumnos de CETICSA S.L.
Pulsamos sobre la opción examinar y elegimos el servicio web recién creado.
Pulsamos botón derecho en código sobre la clase que tiene el método main y seleccionamos
insert code y Call Web Service Operation. Por último, elegimos el método nombre.
Nos generará el código necesario para invocar al método. Probarlo llamando desde el método
public static void main(String[] args) {
consumirwsnombre.WebService1Service service = new consumirwsnombre.WebService1Service();
consumirwsnombre.WebService1 port = service.getWebService1Port();
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Pulsamos sobre la opción examinar y elegimos el servicio web recién creado.
Pulsamos botón derecho en código sobre la clase que tiene el método main y seleccionamos
insert code y Call Web Service Operation. Por último, elegimos el método nombre.
Nos generará el código necesario para invocar al método. Probarlo llamando desde el método
consumirwsnombre.WebService1Service service = new consumirwsnombre.WebService1Service();
CONSUMIR EL SERVICIO WEB DESDE UN PROYECTO WEB
Crear un proyecto web y en la página jsp insertar el mismo código que nos generó en la aplicación
cliente.
<%@page contentType="text/html" pageEncoding="UTF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF
<title>JSP Page</title>
</head>
<body>
<% consumirwsnombre.WebService1Service service = new consumirwsnombre.WebService1Service();
consumirwsnombre.WebService1 port = service.getWebService1Port();
%>
<%= port.nombre()%>
</body>
Para uso exclusivo de los alumnos de CETICSA S.L.
CONSUMIR EL SERVICIO WEB DESDE UN PROYECTO WEB
Crear un proyecto web y en la página jsp insertar el mismo código que nos generó en la aplicación
<%@page contentType="text/html" pageEncoding="UTF-8"%>
//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Type" content="text/html; charset=UTF-8">
consumirwsnombre.WebService1Service service = new consumirwsnombre.WebService1Service();
consumirwsnombre.WebService1 port = service.getWebService1Port();
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Crear un proyecto web y en la página jsp insertar el mismo código que nos generó en la aplicación
consumirwsnombre.WebService1Service service = new consumirwsnombre.WebService1Service();
</html>
Resultado:
API Java para Servicios Web
La especificación JAX-WS proporciona soporte para servicios web que utiliza la API JAXB para vincular
datos XML en objetos Java. La especificación JAX
así como técnicas para implementar punt
especificación J2EE describen el despliegue de servicios basados en clientes JAX
EJB y servlet también describe aspectos de ese desarrollo. Esto debe posibilitar el despliegue de
aplicaciones basadas en JAX-WS utilizando cualquiera de estos modelos de despliegue.
La especificación JAX-WS describe el soporte para los manejadores de mensajes que pueden procesar
mensajes de solicitud y respuesta. En general, estos manejadores de mensa
contenedor y con los mismo privilegios y contextos de ejecución que el JAX
componente punto final con el que esta asociado. Estos manejadores de mensajes tienen acceso a el
mismo espacio de nombres JNDI
deserializadores a la medida, si son soportados, son tratados de la misma forma que los manejadores de
mensaje.
Es la implementación por defecto que
La gestión de los documentos XML incluidos en las peticiones y respuestas SOAP se
JAX-WS define su propio conjunto de anotaciones para definir las clases y métodos que actúan como
puntos finales de los mensajes que conforman las invocaciones SOAP para especificar la d
fichero WSDL y del binding SOAP.
La implementación del servicio web puede desplegarse empleando un Servlet
endpoint.
En contenedores que soporten Java EE 6 el despliegue es automático en ambos
aplicación el contenedor inspecciona las clases en busca de las
los mapeos de URL pertinentes.
En contenedores que no son Java EE 6, debe configurarse en el descriptor de despliegue
aplicación (WEB-INF/web.xml) y en el servlet de "escucha" del API JAX
Definición de servicios web con JAX
El único requisito es contar con un interfaz y/o una clase de implementación
@WebService.
Para uso exclusivo de los alumnos de CETICSA S.L.
API Java para Servicios Web
WS proporciona soporte para servicios web que utiliza la API JAXB para vincular
datos XML en objetos Java. La especificación JAX-WS define APIs clientes para acceder a servicios web
así como técnicas para implementar puntos finales de servicios web. Los servicios web para la
especificación J2EE describen el despliegue de servicios basados en clientes JAX
EJB y servlet también describe aspectos de ese desarrollo. Esto debe posibilitar el despliegue de
WS utilizando cualquiera de estos modelos de despliegue.
WS describe el soporte para los manejadores de mensajes que pueden procesar
mensajes de solicitud y respuesta. En general, estos manejadores de mensajes se ejecutan en el mismo
contenedor y con los mismo privilegios y contextos de ejecución que el JAX
componente punto final con el que esta asociado. Estos manejadores de mensajes tienen acceso a el
mismo espacio de nombres JNDI java:comp/env como su componente asociado. Serializadores y
deserializadores a la medida, si son soportados, son tratados de la misma forma que los manejadores de
que se incluye en Java SE 6
XML incluidos en las peticiones y respuestas SOAP se
WS define su propio conjunto de anotaciones para definir las clases y métodos que actúan como
que conforman las invocaciones SOAP para especificar la d
La implementación del servicio web puede desplegarse empleando un Servlet
En contenedores que soporten Java EE 6 el despliegue es automático en ambos
aplicación el contenedor inspecciona las clases en busca de las anotaciones @WebService y establec
Java EE 6, debe configurarse en el descriptor de despliegue
el servlet de "escucha" del API JAX-WS.
Definición de servicios web con JAX-WS
El único requisito es contar con un interfaz y/o una clase de implementación
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
API Java para Servicios Web XML (JAX-WS)
WS proporciona soporte para servicios web que utiliza la API JAXB para vincular
WS define APIs clientes para acceder a servicios web
os finales de servicios web. Los servicios web para la
especificación J2EE describen el despliegue de servicios basados en clientes JAX-WS. La especificación
EJB y servlet también describe aspectos de ese desarrollo. Esto debe posibilitar el despliegue de
WS utilizando cualquiera de estos modelos de despliegue.
WS describe el soporte para los manejadores de mensajes que pueden procesar
jes se ejecutan en el mismo
contenedor y con los mismo privilegios y contextos de ejecución que el JAX-WS cliente o en el
componente punto final con el que esta asociado. Estos manejadores de mensajes tienen acceso a el
como su componente asociado. Serializadores y
deserializadores a la medida, si son soportados, son tratados de la misma forma que los manejadores de
XML incluidos en las peticiones y respuestas SOAP se delegan en JAXB.
WS define su propio conjunto de anotaciones para definir las clases y métodos que actúan como
que conforman las invocaciones SOAP para especificar la definicición del
como endpoint o un EJB
En contenedores que soporten Java EE 6 el despliegue es automático en ambos casos. Al iniciar la
@WebService y establece
Java EE 6, debe configurarse en el descriptor de despliegue de la
El único requisito es contar con un interfaz y/o una clase de implementación anotado con
En el caso de EJB endpoints, además deben de estar anotados
sin estado).
La clase de implementación debe ser pública y no puede ser final ni abstract
La clase de implementación debe contar con un constructor vacío
La clase de implementación no puede definir un método finaliz
Debe garantizarse una implementación sin estado
La clase de implementación no puede guardar info
Por defecto, para la clase/interface de implement
mismo nombre de la clase y el sufijo Service
nombre de la clase.
Para cada método público de la clase se generará
del método y dos elementos WSDL message,
para la respuesta (añadiendo al nombre del método el sufijo respose)
Los parámetros y valores de devolución
arrays, Map, List o Collection de los anter
Tipos de Anotaciones JAX-WS
Anotaciones que definen el mapeo WSDL (modifican el comportamiento por defecto):
@WebService:
Señala una clase o interfaz como endpoint de un servicio web
Incluye atributos para modificar el nombre del elemento service,
targetNamespace, serviceName, portName,
@WebMethod
Permite modificar la definición de las operaciones WSDL (atributo
la clase que no se desean exponer
@WebResult
Permite controlar el nombre del elemento message de WSDL que
name).
@WebParam
Permite configurar los elementos parameter de WSDL vinculados
(atributos: name, mode [IN, OU, INOUT],
@OneWay
Permite indicar que un método no tendrá valor de retorno
Existen también anotaciones que definien el binding SOAP de las
@SOAPBinding
Para un método de la clase endpoint especifica el estilo de
document) y el tipo de codificación de los
Atributos: style, use, parameterStyle.
@SOAPMessageHandler
Especifica detalles de la gestión de los mensajes
Para uso exclusivo de los alumnos de CETICSA S.L.
, además deben de estar anotados como @Stateless (los servicios web son
La clase de implementación debe ser pública y no puede ser final ni abstract.
La clase de implementación debe contar con un constructor vacío.
La clase de implementación no puede definir un método finalize().
Debe garantizarse una implementación sin estado.
La clase de implementación no puede guardar información de estado entre llamadas del cliente.
Por defecto, para la clase/interface de implementación se generará un elemento WSDL service con el
el sufijo Service, además se generará un elemento WSDL portType con el
público de la clase se generará un elemento WSDL operation con el mismo nombre
y dos elementos WSDL message, uno para la petición (con el nombre del método) y
para la respuesta (añadiendo al nombre del método el sufijo respose).
devolución deben de ser tipos básicos Java, clases
arrays, Map, List o Collection de los anteriores.
Anotaciones que definen el mapeo WSDL (modifican el comportamiento por defecto):
eñala una clase o interfaz como endpoint de un servicio web.
ncluye atributos para modificar el nombre del elemento service, portType, el name space, etc (name,
amespace, serviceName, portName, wsdlLocation, endpointInterface)
ermite modificar la definición de las operaciones WSDL (atributo operationName) o excluir métodos de
como operaciones del web service (con el atributo exclude=true)
ermite controlar el nombre del elemento message de WSDL que contendrá el valor de retorno (atributo
ermite configurar los elementos parameter de WSDL vinculados a los parámetros de una operación
(atributos: name, mode [IN, OU, INOUT], targetNamespace, header, partName)
ermite indicar que un método no tendrá valor de retorno.
notaciones que definien el binding SOAP de las operaciones y lo
ara un método de la clase endpoint especifica el estilo de codificación de los mensajes (RPC vs.
document) y el tipo de codificación de los parámetros a usar (encoded vs.literal).
Atributos: style, use, parameterStyle.
specifica detalles de la gestión de los mensajes (petición y respuesta).
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
@Stateless (los servicios web son
ado entre llamadas del cliente.
se generará un elemento WSDL service con el
se generará un elemento WSDL portType con el
un elemento WSDL operation con el mismo nombre
a petición (con el nombre del método) y otro
deben de ser tipos básicos Java, clases anotadas con JAXB,
Anotaciones que definen el mapeo WSDL (modifican el comportamiento por defecto):
name space, etc (name,
operationName) o excluir métodos de
operaciones del web service (con el atributo exclude=true).
contendrá el valor de retorno (atributo
los parámetros de una operación
operaciones y los métodos:
codificación de los mensajes (RPC vs.
parámetros a usar (encoded vs.literal).
Atributos: name, className, initParams, roles, heards
En el siguiente ejemplo consumiremos el servicio web que devuelve el tiempo meteorológico
Servicio web tiempo meteorológico
Crear una aplicación java que utilice el servicio web que nos devuelve la previsión meteorológica en
tiempo real.
Utilizar los dos métodos del servicio web.
Agregamos el archivo de tipo Web Service Client a nuestro proyecto de tipo java
Para uso exclusivo de los alumnos de CETICSA S.L.
Atributos: name, className, initParams, roles, heards
En el siguiente ejemplo consumiremos el servicio web que devuelve el tiempo meteorológico
po meteorológico
aplicación java que utilice el servicio web que nos devuelve la previsión meteorológica en
Utilizar los dos métodos del servicio web.
Agregamos el archivo de tipo Web Service Client a nuestro proyecto de tipo java
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
En el siguiente ejemplo consumiremos el servicio web que devuelve el tiempo meteorológico
aplicación java que utilice el servicio web que nos devuelve la previsión meteorológica en
Agregamos el archivo de tipo Web Service Client a nuestro proyecto de tipo java application.
Referencia al servicio web:
http://www.webservicex.net/globalweather.asmx?WSDL
Probamos el servicio recién referenciado.
public static void main(String[] args) {
String tiempo=getWeather("MADRID","SPAIN");
System.out.println(tiempo);
}
private static String getCitiesByCountry(java.lang.String countryName) {
MisServicios.GlobalWeather service = new MisServicios.GlobalWeather();
MisServicios.GlobalWeatherSoap port = service.getGlobalWeatherSoap();
return port.getCitiesByCountry(countryName);
}
private static String getWeather(java.lang.String cityName, java.lang.String countryName) {
MisServicios.GlobalWeather service = new MisServicios.GlobalWeather();
MisServicios.GlobalWeatherSoap port = service.getGlobalWeatherSoap();
return port.getWeather(cityName, countryName);
}
Ver Video:
en el Módulo 8. Unidad 1, en la plataforma elearning
Para uso exclusivo de los alumnos de CETICSA S.L.
http://www.webservicex.net/globalweather.asmx?WSDL
Probamos el servicio recién referenciado.
public static void main(String[] args) {
String tiempo=getWeather("MADRID","SPAIN");
private static String getCitiesByCountry(java.lang.String countryName) {
MisServicios.GlobalWeather service = new MisServicios.GlobalWeather();
MisServicios.GlobalWeatherSoap port = service.getGlobalWeatherSoap();
return port.getCitiesByCountry(countryName);
private static String getWeather(java.lang.String cityName, java.lang.String countryName) {
MisServicios.GlobalWeather service = new MisServicios.GlobalWeather();
.GlobalWeatherSoap port = service.getGlobalWeatherSoap();
return port.getWeather(cityName, countryName);
Video: Analizando ServiciosWeb,
en el Módulo 8. Unidad 1, en la plataforma elearning
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
private static String getWeather(java.lang.String cityName, java.lang.String countryName) {
en el Módulo 8. Unidad 1, en la plataforma elearning
Objetivo
Consumir un proyecto Web Service de ASP.Net desde una aplicación Java.
Enunciado
SERVICIO WEB MONEDAS ASP.NET
- Realizar un Servicio Web con ASP.NET cuya funcionalidad será convertir Monedas.
- Podremos convertir entre diversas monedas a euros y
- Las Monedas que vamos a convertir son:
� DOLAR = 1,26201 Euros
� PESOS = 14,4762 Euros
� RUPIAS = 75,6061 Euros
� YENES = 135,861 Euros
� PESETAS = 166,386 Euros
SERVICIO WEB MONEDAS
1. Crear un servicio web con Visual Studio .Net con el
public double[] valores = new double[] { 1.26201, 14.4762, 75.6061, 135.861, 166.386 };
[WebMethod]
public double convertirMonedaEuro(double valor, int indice)
{
return (valor * valores[indice]);
}
[WebMethod]
public double convertirEuroMoneda(double valor, int indice)
{
return (valor / valores[indice]);
}
2. Ejecutar el servicio.
Para uso exclusivo de los alumnos de CETICSA S.L.
Laboratorio: Analizando ServiciosWeb
Consumir un proyecto Web Service de ASP.Net desde una aplicación Java.
Realizar un Servicio Web con ASP.NET cuya funcionalidad será convertir Monedas.
Podremos convertir entre diversas monedas a euros y viceversa, de euros a monedas.
Las Monedas que vamos a convertir son:
DOLAR = 1,26201 Euros
PESOS = 14,4762 Euros
RUPIAS = 75,6061 Euros
YENES = 135,861 Euros
PESETAS = 166,386 Euros
Crear un servicio web con Visual Studio .Net con el código siguiente:
public double[] valores = new double[] { 1.26201, 14.4762, 75.6061, 135.861, 166.386 };
public double convertirMonedaEuro(double valor, int indice)
public double convertirEuroMoneda(double valor, int indice)
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Laboratorio: Analizando ServiciosWeb
Realizar un Servicio Web con ASP.NET cuya funcionalidad será convertir Monedas.
viceversa, de euros a monedas.
public double[] valores = new double[] { 1.26201, 14.4762, 75.6061, 135.861, 166.386 };
EJEMPLO PRUEBA CONVERSIÓN DE MONEDAS
1. Crear un proyecto en NetBeans de tipo java application y agregar un
Client.
2. Enlazarnos al servicio web recién creado.
http://localhost:2920/ServicioConvertirMonedas/Service.asmx?WSDL
public static void main(String[] args)
{
double resultado = convertirMonedaEuro(121,2);
System.out.println(resultado);
}
private static Double convertirMonedaEuro(double valor, int indice) {
ConsumirWS.NewWebServiceService service = new ConsumirWS.NewWebServiceService();
ConsumirWS.NewWebService port = service.getNewWebServicePort();
return port.convertirMonedaEuro(valor, indice);
}
Para uso exclusivo de los alumnos de CETICSA S.L.
EJEMPLO PRUEBA CONVERSIÓN DE MONEDAS
Crear un proyecto en NetBeans de tipo java application y agregar un archivo de tipo WebService
Enlazarnos al servicio web recién creado. Colocamos la dirección del servicio seguido de WSDL.
http://localhost:2920/ServicioConvertirMonedas/Service.asmx?WSDL
public static void main(String[] args)
resultado = convertirMonedaEuro(121,2);
private static Double convertirMonedaEuro(double valor, int indice) {
ConsumirWS.NewWebServiceService service = new ConsumirWS.NewWebServiceService();
ConsumirWS.NewWebService port = service.getNewWebServicePort();
return port.convertirMonedaEuro(valor, indice);
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
archivo de tipo WebService
Colocamos la dirección del servicio seguido de WSDL.
ConsumirWS.NewWebServiceService service = new ConsumirWS.NewWebServiceService();
Unidad 2: Diseñando Buenas Prácticas y Patrones para los Servicios Web
Objetivos
� Comprender los patrones de diseño en el contexto de los servicios web.
� Describir los patrones de diseño basados en servicios web.
� Implemetar patrones de diseño.
Introducción
Un Patrón de Diseño (design pattern) es una solución repetible a un problema recurrente en
software. Esta solución no es un diseño terminado que puede traducirse directamente a código, sino
más bien una descripción sobre cómo resolver el problema, la cual puede ser utilizada en diversas
situaciones. Los patrones de diseño reflejan
han ido haciendo a medida que intentaban conseguir mayor reutilización y flexibilidad en su software.
Los patrones documentan y explican problemas de diseño, y luego discuten una buena solución a
dicho problema. Con el tiempo, los patrones comienzan a incorporarse al conocimiento y experiencia
colectiva de la industria del software, lo que demuestra que el origen de los mismos radica en la
práctica misma más que en la teoría. La definición de Christo
patrón describe un problema que ocurre una y otra vez en nuestro entorno, así como la solución a ese
problema, de tal modo que se pueda aplicar esta solución un millón de veces, sin hacer lo mismo dos
veces”. Si bien ésta definición es sobre patrones de ciudades y edificios la idea es aplicable a la
industria del software: encontrar una solución a un problema dentro de un contexto. Un patrón de
diseño nomina, abstrae e identifica los aspectos clave de una estructura de d
hace útiles para crear un diseño orientado a objetos reutilizable. El patrón de diseño identifica las clases
e instancias participantes, sus roles y colaboraciones, y la distribución de responsabilidades. Cada
patrón de diseño se centra en un problema concreto, describiendo cuándo aplicarlo y si tiene sentido
hacerlo teniendo en cuenta otras restricciones de diseño, así como las consecuencias, ventajas e
inconvenientes de su uso. En los últimos años los patrones han ido ganando acept
extendiendo a otras áreas dentro del desarrollo y mantenimiento de software. Su utilización, si bien
todavía le queda mucho camino por recorrer, comienza a tener suficiente madurez. Los patrones de
diseño proveen una forma efectiva para
de software orientado a objetos.
El término “patrón de diseño” no es extremadamente preciso pero sí muy útil. En la forma en la que se
suele entender actualmente fue acuñado en Gamma y col.(1994), im
designar abreviadamente como GoF1. Por la manera en que se emplea este concepto en esta
referencia básica y en la mayoría de usos posteriores, se refiere a una manera especialmente inteligente
y perspicaz de resolver un tipo general de problema.
A pesar de constar el término “diseño” no se suele considerar que se refiera únicamente a la fase de
diseño de un programa, es una solución completa que incluye análisis, diseño e implementación. Un
“patrón de diseño” no se consider
código en algún lenguaje, pero claramente no es una convención o receta “idiomática”, ligada a un
lenguaje concreto, como podría la relacionada con “cómo recorrer de forma eficiente un vector e
empleando aritmética de punteros”, por poner un ejemplo. Sin embargo, en GoF se remarca que un
patrón puede serlo, tener sentido identificarlo como tal o no, dependiendo del lenguaje utilizado. En el
lenguaje de implementación elegido en GoF, C++, un p
implícito en el propio lenguaje) mientras que sería una solución general muy adecuada a numerosos
Para uso exclusivo de los alumnos de CETICSA S.L.
Diseñando Buenas Prácticas y Patrones para los Servicios Web
los patrones de diseño en el contexto de los servicios web.
Describir los patrones de diseño basados en servicios web.
Implemetar patrones de diseño.
Un Patrón de Diseño (design pattern) es una solución repetible a un problema recurrente en
software. Esta solución no es un diseño terminado que puede traducirse directamente a código, sino
más bien una descripción sobre cómo resolver el problema, la cual puede ser utilizada en diversas
situaciones. Los patrones de diseño reflejan todo el rediseño y remodificación que los desarrolladores
han ido haciendo a medida que intentaban conseguir mayor reutilización y flexibilidad en su software.
Los patrones documentan y explican problemas de diseño, y luego discuten una buena solución a
cho problema. Con el tiempo, los patrones comienzan a incorporarse al conocimiento y experiencia
colectiva de la industria del software, lo que demuestra que el origen de los mismos radica en la
práctica misma más que en la teoría. La definición de Christopher Alexander sobre patrones: “cada
patrón describe un problema que ocurre una y otra vez en nuestro entorno, así como la solución a ese
problema, de tal modo que se pueda aplicar esta solución un millón de veces, sin hacer lo mismo dos
ta definición es sobre patrones de ciudades y edificios la idea es aplicable a la
industria del software: encontrar una solución a un problema dentro de un contexto. Un patrón de
diseño nomina, abstrae e identifica los aspectos clave de una estructura de d
hace útiles para crear un diseño orientado a objetos reutilizable. El patrón de diseño identifica las clases
e instancias participantes, sus roles y colaboraciones, y la distribución de responsabilidades. Cada
ntra en un problema concreto, describiendo cuándo aplicarlo y si tiene sentido
hacerlo teniendo en cuenta otras restricciones de diseño, así como las consecuencias, ventajas e
inconvenientes de su uso. En los últimos años los patrones han ido ganando acept
extendiendo a otras áreas dentro del desarrollo y mantenimiento de software. Su utilización, si bien
todavía le queda mucho camino por recorrer, comienza a tener suficiente madurez. Los patrones de
diseño proveen una forma efectiva para compartir experiencia con la comunidad de programadores
El término “patrón de diseño” no es extremadamente preciso pero sí muy útil. En la forma en la que se
suele entender actualmente fue acuñado en Gamma y col.(1994), importante referencia que se suele
designar abreviadamente como GoF1. Por la manera en que se emplea este concepto en esta
referencia básica y en la mayoría de usos posteriores, se refiere a una manera especialmente inteligente
o general de problema.
A pesar de constar el término “diseño” no se suele considerar que se refiera únicamente a la fase de
diseño de un programa, es una solución completa que incluye análisis, diseño e implementación. Un
“patrón de diseño” no se considera bien especificado hasta que se ha podido plasmar en forma de
código en algún lenguaje, pero claramente no es una convención o receta “idiomática”, ligada a un
lenguaje concreto, como podría la relacionada con “cómo recorrer de forma eficiente un vector e
empleando aritmética de punteros”, por poner un ejemplo. Sin embargo, en GoF se remarca que un
patrón puede serlo, tener sentido identificarlo como tal o no, dependiendo del lenguaje utilizado. En el
lenguaje de implementación elegido en GoF, C++, un patrón como “herencia” no tiene sentido (ya está
implícito en el propio lenguaje) mientras que sería una solución general muy adecuada a numerosos
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Diseñando Buenas Prácticas y Patrones
Un Patrón de Diseño (design pattern) es una solución repetible a un problema recurrente en el diseño de
software. Esta solución no es un diseño terminado que puede traducirse directamente a código, sino
más bien una descripción sobre cómo resolver el problema, la cual puede ser utilizada en diversas
todo el rediseño y remodificación que los desarrolladores
han ido haciendo a medida que intentaban conseguir mayor reutilización y flexibilidad en su software.
Los patrones documentan y explican problemas de diseño, y luego discuten una buena solución a
cho problema. Con el tiempo, los patrones comienzan a incorporarse al conocimiento y experiencia
colectiva de la industria del software, lo que demuestra que el origen de los mismos radica en la
pher Alexander sobre patrones: “cada
patrón describe un problema que ocurre una y otra vez en nuestro entorno, así como la solución a ese
problema, de tal modo que se pueda aplicar esta solución un millón de veces, sin hacer lo mismo dos
ta definición es sobre patrones de ciudades y edificios la idea es aplicable a la
industria del software: encontrar una solución a un problema dentro de un contexto. Un patrón de
diseño nomina, abstrae e identifica los aspectos clave de una estructura de diseño común, lo que los
hace útiles para crear un diseño orientado a objetos reutilizable. El patrón de diseño identifica las clases
e instancias participantes, sus roles y colaboraciones, y la distribución de responsabilidades. Cada
ntra en un problema concreto, describiendo cuándo aplicarlo y si tiene sentido
hacerlo teniendo en cuenta otras restricciones de diseño, así como las consecuencias, ventajas e
inconvenientes de su uso. En los últimos años los patrones han ido ganando aceptación, y se fueron
extendiendo a otras áreas dentro del desarrollo y mantenimiento de software. Su utilización, si bien
todavía le queda mucho camino por recorrer, comienza a tener suficiente madurez. Los patrones de
compartir experiencia con la comunidad de programadores
El término “patrón de diseño” no es extremadamente preciso pero sí muy útil. En la forma en la que se
portante referencia que se suele
designar abreviadamente como GoF1. Por la manera en que se emplea este concepto en esta
referencia básica y en la mayoría de usos posteriores, se refiere a una manera especialmente inteligente
A pesar de constar el término “diseño” no se suele considerar que se refiera únicamente a la fase de
diseño de un programa, es una solución completa que incluye análisis, diseño e implementación. Un
a bien especificado hasta que se ha podido plasmar en forma de
código en algún lenguaje, pero claramente no es una convención o receta “idiomática”, ligada a un
lenguaje concreto, como podría la relacionada con “cómo recorrer de forma eficiente un vector en C
empleando aritmética de punteros”, por poner un ejemplo. Sin embargo, en GoF se remarca que un
patrón puede serlo, tener sentido identificarlo como tal o no, dependiendo del lenguaje utilizado. En el
atrón como “herencia” no tiene sentido (ya está
implícito en el propio lenguaje) mientras que sería una solución general muy adecuada a numerosos
problemas si el lenguaje de implementación fuese C, por ejemplo. Tampoco hay que confundir “patrón
de diseño” con un algoritmo adecuado para resolver un tipo concreto de problema
se tendría que implementar de forma distinta según el lenguaje. Un patrón de diseño debe ser una
especificación muy general, una especie de invariante que se cumple en
diversos y que define una solución general y muy estable.
Los desarrolladores de software han aprendido a reutilizar código y de esa manera tendrán su marco de
trabajo básico para usar cuando se enfrenten a problemas de similares carac
formas de solucionar estos problemas de manera eficiente y efectiva es la utilización de los Patrones de
Diseño. Una notación práctica y aceptada para la especificación, visualización, construcción y
documentación de sistemas de soft
diagramas que facilitan el desarrollo y comunicación de un proyecto de software. . Dado que UML es
un lenguaje que permite ser extendido y que los Patrones de Diseño aportan buenas soluciones a
problemas recurrentes, este Trabajo Final tiene como objetivo extender UML e incorporarle el uso de
Patrones de Diseño para ampliar las potencialidades de este lenguaje y brindar al desarrollador de
software la posibilidad de incorporar Patrones de Diseño en su
Actualmente, los patrones de diseño son, sin duda, alguna la herramienta más importante de la que
disponemos los ingenieros, arquitectos, analistas, desarrolladores, etc., para la creación de sistemas
robustos, escalables, fácilmente adaptabl
miles de líneas sobre las ventajas de los patrones de diseño, pero sin embargo, pocos han sido los análisis
de los problemas asociados a su uso.
Son una forma de formalizar la reusabilidad de
plantean como una buena herramienta para el diseño y la documentación de aplicaciones y
frameworks. . Son descripciones de objetos y clases que se comunican y que son capaces de solucionar
un problema de diseño en general, en un contexto en particular. . "Cada patrón describe un problema
que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese
problema, de tal manera que esa solución pueda ser usada más de
siquiera dos veces de la misma forma". (Alexander Christopher)
Proponen una forma de reutilizar la experiencia de los programadores. Contribuyen a dar flexibilidad y
extensibilidad a los diseños. Contribuyen a reutiliza
estructura de un diseño que puede ser aplicado en una gran cantidad de situaciones. Mejoran
(aumentan, elevan) la flexibilidad, modularidad y extensibilidad.. Incrementan el vocabulario de diseño,
ayudando a diseñar desde un mayor nivel de abstracción.
Elementos:
� Nombre: resume la esencia del patrón. .
� Clasificación: según el propósito
responde a ¿Qué hace el patrón? .
� Contexto: ejemplo que ilustra el problema y cómo se estructuran clases y objetos para
solucionarlo. .
� Aplicabilidad: situaciones en las que puede aplicarse el patrón. .
� Estructura: representación gráfica de las clases que intervienen y sus relaciones. . Participan
clases, objetos y responsabilidades. .
� Consecuencias: resultados y cambios al usar el patrón. .
� Diagrama de Ejemplo: diagrama del modelo del usuario que usa el/los estereotipo/s que
forma/n el patrón y en el que se cumplen las Reglas OCL.
Clasificación:
Según el Propósito: ¿Qué hacen?
Para uso exclusivo de los alumnos de CETICSA S.L.
problemas si el lenguaje de implementación fuese C, por ejemplo. Tampoco hay que confundir “patrón
con un algoritmo adecuado para resolver un tipo concreto de problema
se tendría que implementar de forma distinta según el lenguaje. Un patrón de diseño debe ser una
especificación muy general, una especie de invariante que se cumple en
diversos y que define una solución general y muy estable.
Los desarrolladores de software han aprendido a reutilizar código y de esa manera tendrán su marco de
trabajo básico para usar cuando se enfrenten a problemas de similares carac
formas de solucionar estos problemas de manera eficiente y efectiva es la utilización de los Patrones de
Diseño. Una notación práctica y aceptada para la especificación, visualización, construcción y
documentación de sistemas de software es UML que permite la construcción de una serie de
diagramas que facilitan el desarrollo y comunicación de un proyecto de software. . Dado que UML es
un lenguaje que permite ser extendido y que los Patrones de Diseño aportan buenas soluciones a
emas recurrentes, este Trabajo Final tiene como objetivo extender UML e incorporarle el uso de
Patrones de Diseño para ampliar las potencialidades de este lenguaje y brindar al desarrollador de
software la posibilidad de incorporar Patrones de Diseño en sus proyectos.
Actualmente, los patrones de diseño son, sin duda, alguna la herramienta más importante de la que
disponemos los ingenieros, arquitectos, analistas, desarrolladores, etc., para la creación de sistemas
robustos, escalables, fácilmente adaptables y con grandes cotas de reutilización. Se han escrito miles y
miles de líneas sobre las ventajas de los patrones de diseño, pero sin embargo, pocos han sido los análisis
de los problemas asociados a su uso.
Son una forma de formalizar la reusabilidad de código ante situaciones similares a las ya conocidas. . Se
plantean como una buena herramienta para el diseño y la documentación de aplicaciones y
frameworks. . Son descripciones de objetos y clases que se comunican y que son capaces de solucionar
lema de diseño en general, en un contexto en particular. . "Cada patrón describe un problema
que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese
problema, de tal manera que esa solución pueda ser usada más de un millón de veces sin hacerlo ni
siquiera dos veces de la misma forma". (Alexander Christopher)
Proponen una forma de reutilizar la experiencia de los programadores. Contribuyen a dar flexibilidad y
extensibilidad a los diseños. Contribuyen a reutilizar diseño, identificando aspectos claves de la
estructura de un diseño que puede ser aplicado en una gran cantidad de situaciones. Mejoran
(aumentan, elevan) la flexibilidad, modularidad y extensibilidad.. Incrementan el vocabulario de diseño,
señar desde un mayor nivel de abstracción.
resume la esencia del patrón. .
según el propósito - ¿Qué hacen? - y el alcance - ¿Dónde se aplican?
responde a ¿Qué hace el patrón? .
ejemplo que ilustra el problema y cómo se estructuran clases y objetos para
situaciones en las que puede aplicarse el patrón. .
representación gráfica de las clases que intervienen y sus relaciones. . Participan
clases, objetos y responsabilidades. .
resultados y cambios al usar el patrón. .
: diagrama del modelo del usuario que usa el/los estereotipo/s que
forma/n el patrón y en el que se cumplen las Reglas OCL.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
problemas si el lenguaje de implementación fuese C, por ejemplo. Tampoco hay que confundir “patrón
con un algoritmo adecuado para resolver un tipo concreto de problema –que, lógicamente,
se tendría que implementar de forma distinta según el lenguaje. Un patrón de diseño debe ser una
especificación muy general, una especie de invariante que se cumple en problemas de ámbitos
Los desarrolladores de software han aprendido a reutilizar código y de esa manera tendrán su marco de
trabajo básico para usar cuando se enfrenten a problemas de similares características. Una de las
formas de solucionar estos problemas de manera eficiente y efectiva es la utilización de los Patrones de
Diseño. Una notación práctica y aceptada para la especificación, visualización, construcción y
ware es UML que permite la construcción de una serie de
diagramas que facilitan el desarrollo y comunicación de un proyecto de software. . Dado que UML es
un lenguaje que permite ser extendido y que los Patrones de Diseño aportan buenas soluciones a
emas recurrentes, este Trabajo Final tiene como objetivo extender UML e incorporarle el uso de
Patrones de Diseño para ampliar las potencialidades de este lenguaje y brindar al desarrollador de
Actualmente, los patrones de diseño son, sin duda, alguna la herramienta más importante de la que
disponemos los ingenieros, arquitectos, analistas, desarrolladores, etc., para la creación de sistemas
es y con grandes cotas de reutilización. Se han escrito miles y
miles de líneas sobre las ventajas de los patrones de diseño, pero sin embargo, pocos han sido los análisis
código ante situaciones similares a las ya conocidas. . Se
plantean como una buena herramienta para el diseño y la documentación de aplicaciones y
frameworks. . Son descripciones de objetos y clases que se comunican y que son capaces de solucionar
lema de diseño en general, en un contexto en particular. . "Cada patrón describe un problema
que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese
un millón de veces sin hacerlo ni
Proponen una forma de reutilizar la experiencia de los programadores. Contribuyen a dar flexibilidad y
r diseño, identificando aspectos claves de la
estructura de un diseño que puede ser aplicado en una gran cantidad de situaciones. Mejoran
(aumentan, elevan) la flexibilidad, modularidad y extensibilidad.. Incrementan el vocabulario de diseño,
¿Dónde se aplican? - . Sinopsis:
ejemplo que ilustra el problema y cómo se estructuran clases y objetos para
representación gráfica de las clases que intervienen y sus relaciones. . Participantes:
: diagrama del modelo del usuario que usa el/los estereotipo/s que
� . Creacionales: relacionados con el proceso de creación de objetos.
� . de Comportamiento: relacionados con la interacción de clases y objetos y la distribución de
responsabilidades.
� . Estructurales: relacionados con l
� Según el Alcance: ¿Dónde se aplican?
� . Clase: tratan la relación entre subclases a través de herencia.
� . Objeto: tratan la relación entre objetos que cambian en tiempo de ejecución.
Diseñar una arquitectura basada en patr
beneficios, pero prácticamente imposible sin un estudio previo del dominio del problema que estamos
tratando. El uso de lenguajes de modelado como UML nos ayuda a ver mejor las propiedades del
sistema que estamos diseñando y harán aparecer relaciones entre los componentes que a primera vista
eran difusas o que simplemente no habíamos visto. El mero hecho de utilizar patrones de diseño y
comenzar a realizar su implementación sin tener en cuenta el domi
gravísimo y degenera en la práctica de ir esparciendo patrones por las diferentes partes de un proyecto
sin ningún criterio general.
Estos patrones no representarán ningún concepto de nuestro dominio, probablemente no re
ningún significado a alguien que no esté familiarizado con nuestro proyecto, y dificultarán
notablemente la extensibilidad de nuestro proyecto obligando a una refactorización continua. Antes de
abordar un proyecto con patrones hemos de analizar mi
útiles, cuáles son las relaciones entre los diferentes componentes de nuestro sistema, cómo podemos
relacionar los patrones entre sí de modo que formen una estructura sólida, cuáles son los patrones que
refleja nuestro dominio, etc. Esta tarea obviamente es mucho más compleja que el mero hecho de
ponerse a codificar patrones.
Existen cientos y cientos de patrones que han ido apareciendo con el tiempo y que se han convertido
en soluciones estándar para diferentes pro
que podemos encontrar patrones de arquitectura, de economía, etc. Así que la clave de todo es la
experiencia puede que hayamos realizado un análisis fantástico y que hayamos estudiado los patro
más avanzados en el ámbito que estamos afrontando, sin embargo, sin la experiencia adecuada
nuestro proyecto fracasará.
Sea como sea, la experiencia se adquiere con el tiempo y a base de tropiezos. Seguramente nuestros
primeros proyectos no queden como
demos cuenta de que podríamos haber utilizado otros métodos para abordar de un modo más
eficiente los problemas con los que nos habíamos enfrentado.
La primera regla de los patrones de diseño coi
Del mismo modo que no es aconsejable optimizar prematuramente, no se deben utilizar patrones de
diseño antes de tiempo. Seguramente sea mejor implementar algo primero y asegurarse de que
funciona, para luego utilizar el patrón de diseño para mejorar las flaquezas; esto es cierto, sobre todo,
cuando aún no ha identificado todos los detalles del proyecto (si comprende totalmente el dominio y el
problema, tal vez sea razonable utilizar patrones desde el
utilizar los algoritmos más eficientes desde el comienzo en algunas aplicaciones).
Los patrones de diseño pueden incrementar o disminuir la capacidad de comprensión de un diseño o
de una implementación, disminuirla al añadir accesos indirectos o aumentar la cantidad de código,
disminuirla al regular la modularidad, separar mejor los conceptos y simplificar la descripción. Una vez
que aprenda el vocabulario de los patrones de diseño le será más fácil y más rápido c
otros individuos que también lo conozcan. Por que atraviesa una estructura y realiza llamadas de
retorno, en tanto que algunos métodos deben estar presentes y son llamados de este modo y en este
orden”.
La mayoría de las personas utiliza pa
algo que debería resultar sencillo no lo es
Para uso exclusivo de los alumnos de CETICSA S.L.
. Creacionales: relacionados con el proceso de creación de objetos.
. de Comportamiento: relacionados con la interacción de clases y objetos y la distribución de
. Estructurales: relacionados con la composición de clases y objetos.
: ¿Dónde se aplican?
. Clase: tratan la relación entre subclases a través de herencia.
. Objeto: tratan la relación entre objetos que cambian en tiempo de ejecución.
Diseñar una arquitectura basada en patrones de diseño es una tarea compleja, que reporta muchos
beneficios, pero prácticamente imposible sin un estudio previo del dominio del problema que estamos
tratando. El uso de lenguajes de modelado como UML nos ayuda a ver mejor las propiedades del
a que estamos diseñando y harán aparecer relaciones entre los componentes que a primera vista
eran difusas o que simplemente no habíamos visto. El mero hecho de utilizar patrones de diseño y
comenzar a realizar su implementación sin tener en cuenta el dominio de nuestro modelo, es un error
gravísimo y degenera en la práctica de ir esparciendo patrones por las diferentes partes de un proyecto
Estos patrones no representarán ningún concepto de nuestro dominio, probablemente no re
ningún significado a alguien que no esté familiarizado con nuestro proyecto, y dificultarán
notablemente la extensibilidad de nuestro proyecto obligando a una refactorización continua. Antes de
abordar un proyecto con patrones hemos de analizar minuciosamente qué patrones nos pueden ser
útiles, cuáles son las relaciones entre los diferentes componentes de nuestro sistema, cómo podemos
relacionar los patrones entre sí de modo que formen una estructura sólida, cuáles son los patrones que
tro dominio, etc. Esta tarea obviamente es mucho más compleja que el mero hecho de
Existen cientos y cientos de patrones que han ido apareciendo con el tiempo y que se han convertido
en soluciones estándar para diferentes problemas, y por supuesto no limitados al ámbito informático sino
que podemos encontrar patrones de arquitectura, de economía, etc. Así que la clave de todo es la
experiencia puede que hayamos realizado un análisis fantástico y que hayamos estudiado los patro
más avanzados en el ámbito que estamos afrontando, sin embargo, sin la experiencia adecuada
Sea como sea, la experiencia se adquiere con el tiempo y a base de tropiezos. Seguramente nuestros
primeros proyectos no queden como los habíamos ideado en su concepción, y con el tiempo, nos
demos cuenta de que podríamos haber utilizado otros métodos para abordar de un modo más
eficiente los problemas con los que nos habíamos enfrentado.
La primera regla de los patrones de diseño coincide con la primera regla de la optimización: retrasar.
Del mismo modo que no es aconsejable optimizar prematuramente, no se deben utilizar patrones de
diseño antes de tiempo. Seguramente sea mejor implementar algo primero y asegurarse de que
ra luego utilizar el patrón de diseño para mejorar las flaquezas; esto es cierto, sobre todo,
cuando aún no ha identificado todos los detalles del proyecto (si comprende totalmente el dominio y el
problema, tal vez sea razonable utilizar patrones desde el principio, de igual modo que tiene sentido
utilizar los algoritmos más eficientes desde el comienzo en algunas aplicaciones).
Los patrones de diseño pueden incrementar o disminuir la capacidad de comprensión de un diseño o
la al añadir accesos indirectos o aumentar la cantidad de código,
disminuirla al regular la modularidad, separar mejor los conceptos y simplificar la descripción. Una vez
que aprenda el vocabulario de los patrones de diseño le será más fácil y más rápido c
otros individuos que también lo conozcan. Por que atraviesa una estructura y realiza llamadas de
retorno, en tanto que algunos métodos deben estar presentes y son llamados de este modo y en este
La mayoría de las personas utiliza patrones de diseño cuando perciben un problema en su proyecto
algo que debería resultar sencillo no lo es — o su implementación— como por ejemplo, el rendimiento.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
. de Comportamiento: relacionados con la interacción de clases y objetos y la distribución de
. Objeto: tratan la relación entre objetos que cambian en tiempo de ejecución.
ones de diseño es una tarea compleja, que reporta muchos
beneficios, pero prácticamente imposible sin un estudio previo del dominio del problema que estamos
tratando. El uso de lenguajes de modelado como UML nos ayuda a ver mejor las propiedades del
a que estamos diseñando y harán aparecer relaciones entre los componentes que a primera vista
eran difusas o que simplemente no habíamos visto. El mero hecho de utilizar patrones de diseño y
nio de nuestro modelo, es un error
gravísimo y degenera en la práctica de ir esparciendo patrones por las diferentes partes de un proyecto
Estos patrones no representarán ningún concepto de nuestro dominio, probablemente no reflejarán
ningún significado a alguien que no esté familiarizado con nuestro proyecto, y dificultarán
notablemente la extensibilidad de nuestro proyecto obligando a una refactorización continua. Antes de
nuciosamente qué patrones nos pueden ser
útiles, cuáles son las relaciones entre los diferentes componentes de nuestro sistema, cómo podemos
relacionar los patrones entre sí de modo que formen una estructura sólida, cuáles son los patrones que
tro dominio, etc. Esta tarea obviamente es mucho más compleja que el mero hecho de
Existen cientos y cientos de patrones que han ido apareciendo con el tiempo y que se han convertido
blemas, y por supuesto no limitados al ámbito informático sino
que podemos encontrar patrones de arquitectura, de economía, etc. Así que la clave de todo es la
experiencia puede que hayamos realizado un análisis fantástico y que hayamos estudiado los patrones
más avanzados en el ámbito que estamos afrontando, sin embargo, sin la experiencia adecuada
Sea como sea, la experiencia se adquiere con el tiempo y a base de tropiezos. Seguramente nuestros
los habíamos ideado en su concepción, y con el tiempo, nos
demos cuenta de que podríamos haber utilizado otros métodos para abordar de un modo más
ncide con la primera regla de la optimización: retrasar.
Del mismo modo que no es aconsejable optimizar prematuramente, no se deben utilizar patrones de
diseño antes de tiempo. Seguramente sea mejor implementar algo primero y asegurarse de que
ra luego utilizar el patrón de diseño para mejorar las flaquezas; esto es cierto, sobre todo,
cuando aún no ha identificado todos los detalles del proyecto (si comprende totalmente el dominio y el
principio, de igual modo que tiene sentido
utilizar los algoritmos más eficientes desde el comienzo en algunas aplicaciones).
Los patrones de diseño pueden incrementar o disminuir la capacidad de comprensión de un diseño o
la al añadir accesos indirectos o aumentar la cantidad de código,
disminuirla al regular la modularidad, separar mejor los conceptos y simplificar la descripción. Una vez
que aprenda el vocabulario de los patrones de diseño le será más fácil y más rápido comunicarse con
otros individuos que también lo conozcan. Por que atraviesa una estructura y realiza llamadas de
retorno, en tanto que algunos métodos deben estar presentes y son llamados de este modo y en este
trones de diseño cuando perciben un problema en su proyecto —
como por ejemplo, el rendimiento.
Examine un código o un proyecto de esa naturaleza. ¿Cuáles son sus problemas, cuáles son sus
compromisos? ¿Qué le gustaría realizar que, en la actualidad, es muy difícil lograr? A continuación,
compruebe una referencia de patrón de diseño y busque los patrones que abordan los temas que le
preocupan.
Para que una solución sea considerada un patrón debe poseer ciertos componentes fundamentales:
� Nombre del patrón. Permite describir en pocas palabras un problema de diseño junto con sus
soluciones y consecuencias.
� Problema (o fuerzas no balanceadas). Indica cuándo aplicar el
oportunidades el problema incluye una serie de condiciones que deben darse para aplicar el
patrón. Muestra la verdadera esencia del problema. Este enunciado se completa con un
conjunto de fuerzas, término que se utiliza para indicar cual
deba ser considerado a la hora de resolverlo, entre ellos:
- Requerimientos a cumplir por la solución.
- Restricciones a considerar.
- Propiedades deseables que la solución debe tener.
Son las fuerzas las que ayudan a entender el p
vista.
� Solución. No describe una solución o implementación en concreto, sino que un patrón es más
bien como una plantilla que puede aplicarse en diversas situaciones diferentes. El patrón brinda
una descripción abstracta de un problema de diseño y cómo lo resuelve una determinada
disposición de objetos. Que la solución sea aplicable a diversas situaciones denota el carácter
“recurrente” de los patrones.
� Consecuencias. Resultados en términos de ventajas e
Según el nivel de abstracción los patrones de diseño pueden clasificarse de la siguiente forma:
� Patrones arquitectónicos. Centrados en la arquitectura del sistema. Definen una estructura
fundamental sobre la organización
cuáles son sus responsabilidades y como se interrelacionan.
� Patrones de diseño. Esquemas para refinar los subsistemas o componentes de un sistema de
software, o sus relaciones. Describen una estr
comunicantes que resuelven un problema de diseño dentro de un contexto.
Ejemplo: el patrón singleton asegura que exista sólo una instancia de una determinada clase.
Patrones de codificación o modismos (idioms). Patr
particulares del diseño en un lenguaje de programación específico. Ejemplo: en Java implementar una
interface en una clase anónima.
Los patrones arquitectónicos podrían considerarse estrategias de alto nivel que abarc
a gran escala, propiedades y mecanismos del sistema. Tienen implicancias muy amplias que afectan
tanto a la estructura como a la organización del sistema. Los patrones de diseño son tácticas de medio
nivel para profundizar en la estructura y
patrones de diseño no influencian la estructura del sistema sino que definen micro
subsistemas y componentes. Por último, los modismos son técnicas específicas del paradigm
de programación que complementan detalles de bajo nivel (internos o externos) de la estructura de un
componente.
Para uso exclusivo de los alumnos de CETICSA S.L.
Examine un código o un proyecto de esa naturaleza. ¿Cuáles son sus problemas, cuáles son sus
ompromisos? ¿Qué le gustaría realizar que, en la actualidad, es muy difícil lograr? A continuación,
compruebe una referencia de patrón de diseño y busque los patrones que abordan los temas que le
Componentes fundamentales
ea considerada un patrón debe poseer ciertos componentes fundamentales:
Nombre del patrón. Permite describir en pocas palabras un problema de diseño junto con sus
soluciones y consecuencias.
Problema (o fuerzas no balanceadas). Indica cuándo aplicar el patrón. En algunas
oportunidades el problema incluye una serie de condiciones que deben darse para aplicar el
patrón. Muestra la verdadera esencia del problema. Este enunciado se completa con un
conjunto de fuerzas, término que se utiliza para indicar cualquier aspecto del problema que
deba ser considerado a la hora de resolverlo, entre ellos:
Requerimientos a cumplir por la solución.
Restricciones a considerar.
Propiedades deseables que la solución debe tener.
Son las fuerzas las que ayudan a entender el problema dado que lo exponen desde distintos puntos de
Solución. No describe una solución o implementación en concreto, sino que un patrón es más
bien como una plantilla que puede aplicarse en diversas situaciones diferentes. El patrón brinda
cripción abstracta de un problema de diseño y cómo lo resuelve una determinada
disposición de objetos. Que la solución sea aplicable a diversas situaciones denota el carácter
“recurrente” de los patrones.
Consecuencias. Resultados en términos de ventajas e inconvenientes.
Tipos de patrones
Según el nivel de abstracción los patrones de diseño pueden clasificarse de la siguiente forma:
Patrones arquitectónicos. Centrados en la arquitectura del sistema. Definen una estructura
fundamental sobre la organización del sistema. Proveen un conjunto predefinido de subsistemas,
cuáles son sus responsabilidades y como se interrelacionan.
Patrones de diseño. Esquemas para refinar los subsistemas o componentes de un sistema de
software, o sus relaciones. Describen una estructura recurrente y común de componentes
comunicantes que resuelven un problema de diseño dentro de un contexto.
Ejemplo: el patrón singleton asegura que exista sólo una instancia de una determinada clase.
Patrones de codificación o modismos (idioms). Patrones que ayudan a implementar aspectos
particulares del diseño en un lenguaje de programación específico. Ejemplo: en Java implementar una
Los patrones arquitectónicos podrían considerarse estrategias de alto nivel que abarc
a gran escala, propiedades y mecanismos del sistema. Tienen implicancias muy amplias que afectan
tanto a la estructura como a la organización del sistema. Los patrones de diseño son tácticas de medio
nivel para profundizar en la estructura y comportamiento de ciertos componentes y sus relaciones. Los
patrones de diseño no influencian la estructura del sistema sino que definen micro
subsistemas y componentes. Por último, los modismos son técnicas específicas del paradigm
de programación que complementan detalles de bajo nivel (internos o externos) de la estructura de un
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Examine un código o un proyecto de esa naturaleza. ¿Cuáles son sus problemas, cuáles son sus
ompromisos? ¿Qué le gustaría realizar que, en la actualidad, es muy difícil lograr? A continuación,
compruebe una referencia de patrón de diseño y busque los patrones que abordan los temas que le
Componentes fundamentales
ea considerada un patrón debe poseer ciertos componentes fundamentales:
Nombre del patrón. Permite describir en pocas palabras un problema de diseño junto con sus
patrón. En algunas
oportunidades el problema incluye una serie de condiciones que deben darse para aplicar el
patrón. Muestra la verdadera esencia del problema. Este enunciado se completa con un
quier aspecto del problema que
roblema dado que lo exponen desde distintos puntos de
Solución. No describe una solución o implementación en concreto, sino que un patrón es más
bien como una plantilla que puede aplicarse en diversas situaciones diferentes. El patrón brinda
cripción abstracta de un problema de diseño y cómo lo resuelve una determinada
disposición de objetos. Que la solución sea aplicable a diversas situaciones denota el carácter
Tipos de patrones
Según el nivel de abstracción los patrones de diseño pueden clasificarse de la siguiente forma:
Patrones arquitectónicos. Centrados en la arquitectura del sistema. Definen una estructura
del sistema. Proveen un conjunto predefinido de subsistemas,
Patrones de diseño. Esquemas para refinar los subsistemas o componentes de un sistema de
uctura recurrente y común de componentes
comunicantes que resuelven un problema de diseño dentro de un contexto.
Ejemplo: el patrón singleton asegura que exista sólo una instancia de una determinada clase.
ones que ayudan a implementar aspectos
particulares del diseño en un lenguaje de programación específico. Ejemplo: en Java implementar una
Los patrones arquitectónicos podrían considerarse estrategias de alto nivel que abarcan componentes
a gran escala, propiedades y mecanismos del sistema. Tienen implicancias muy amplias que afectan
tanto a la estructura como a la organización del sistema. Los patrones de diseño son tácticas de medio
comportamiento de ciertos componentes y sus relaciones. Los
patrones de diseño no influencian la estructura del sistema sino que definen micro-arquitecturas para los
subsistemas y componentes. Por último, los modismos son técnicas específicas del paradigma y lenguaje
de programación que complementan detalles de bajo nivel (internos o externos) de la estructura de un
Patrones Creacionales. Los patrones creacionales abstraen el proceso de instanciación de objetos,
ayudando a que el sistema sea independiente de cómo se crean, componen y representan sus objetos.
Estos patrones encapsulan el conocimiento sobre las clases concretas que utiliza el sistema. En otras
palabras, estos patrones brindan soporte a una de las tareas mas comunes dentro de la pr
orientada a objetos: la instanciación. Estos patrones brindan las siguientes características:
� Instanciación genérica: permite que los objetos sean creados dentro del sistema sin especificar
clases concretas en el código.
� Simplicidad: algunos patrones facilitan la creación de objetos, evitando que el cliente deba tener
código complejo sobre como instanciar un determinado objeto.
� Restricciones creacionales: algunos patrones ayudan a establecer restricciones sobre la creación de
objetos, tales como qué objeto crear, cuándo, cómo, etc.
Por lo general, son alternativas de diseño bajo estrategias de herencia o delegación que encapsulan el
mecanismo de creación, independizando los tipos de objetos “producto” que se manejan. Los patrones
creacionales son los siguientes:
1. Singleton: asegura que una determinada clase sea instanciada una y sólo una vez,
proporcionando un único punto de acceso global a ella.
2. Abstract Factory: provee una interfaz para crear familias de objetos producto relacionados o
que dependen entre si, sin especificar sus cla
3. Factory Method: define una interfaz para crear un objeto delegando la decisión de qué clase
crear en las subclases. Este enfoque también puede ser llamado constructor “virtual”.
4. Builder: separa la construcción de un objeto complejo de su r
mismo proceso de construcción pueda crear diferentes representaciones. Simplifica la
construcción de objetos con estructura interna compleja y permite la construcción de objetos
paso a paso. Ejemplo: este patrón se encuentra
preparan menús infantiles. Generalmente estos menús están formados de un plato principal, un
acompañamiento, una bebida y un juguete. Si bien el contenido del menú puede variar, el
proceso de construcción es siemp
seguir. Estos pasos son: preparar un plato principal, preparar un acompañamiento, incluir un
juguete y guardarlos en una bolsa. La bebida se sirve en un vaso y queda fuera de la bolsa.
5. Prototype: facilita la creación dinámica de objetos mediante la definición de clases cuyos
objetos pueden crear duplicados de si mismos. Estos objetos son llamados prototipos. Ejemplo: un
escenario frecuente es contar con GUIs (Interfaz Gráfica de Usuario) que cuenten
número de controles similares, los cuales deben ser inicializados a un determinado estado común
para mantener consistencia. El proceso de inicialización se repite varias veces por cada control
de manera que las líneas de código se incrementan.
código se puede contar con un objeto inicializado en un determinado estado estándar y luego
obtener clones de él ya inicializados.
clases y objetos parar formar estructuras más grandes. Los patrones estructurales de clases
utilizan la herencia para componer interfaces o implementaciones. En lugar de combinar
interfaces o implementaciones, los patrones estructurales de objetos describen formas de
componer objetos para obtener nuevas funcionalidades. La flexibilidad añadida mediante la
composición de objetos viene dada por la capacidad de cambiar la composición en tiempo de
ejecución, que es imposible con la composición de clases. Ejemplos típicos son cómo comunic
dos clases incompatibles o cómo añadir funcionalidad a objetos. Los patrones estructurales son
los siguientes:
6. Adapter: oficia de intermediario entre dos clases cuyas interfaces son incompatibles de manera
tal que puedan ser utilizadas en conjunto. Eje
patrón, quizá el más común de ellos sea el de los adaptadores de enchufes el cual permitiría
utilizar un enchufe de dos patas planas adaptándolo a un toma corriente de dos patas
redondas.
Para uso exclusivo de los alumnos de CETICSA S.L.
Patrones Creacionales. Los patrones creacionales abstraen el proceso de instanciación de objetos,
dependiente de cómo se crean, componen y representan sus objetos.
Estos patrones encapsulan el conocimiento sobre las clases concretas que utiliza el sistema. En otras
palabras, estos patrones brindan soporte a una de las tareas mas comunes dentro de la pr
orientada a objetos: la instanciación. Estos patrones brindan las siguientes características:
Instanciación genérica: permite que los objetos sean creados dentro del sistema sin especificar
atrones facilitan la creación de objetos, evitando que el cliente deba tener
código complejo sobre como instanciar un determinado objeto.
Restricciones creacionales: algunos patrones ayudan a establecer restricciones sobre la creación de
mo qué objeto crear, cuándo, cómo, etc.
Por lo general, son alternativas de diseño bajo estrategias de herencia o delegación que encapsulan el
mecanismo de creación, independizando los tipos de objetos “producto” que se manejan. Los patrones
ue una determinada clase sea instanciada una y sólo una vez,
proporcionando un único punto de acceso global a ella.
Abstract Factory: provee una interfaz para crear familias de objetos producto relacionados o
que dependen entre si, sin especificar sus clases concretas.
Factory Method: define una interfaz para crear un objeto delegando la decisión de qué clase
crear en las subclases. Este enfoque también puede ser llamado constructor “virtual”.
Builder: separa la construcción de un objeto complejo de su representación, de forma que el
mismo proceso de construcción pueda crear diferentes representaciones. Simplifica la
construcción de objetos con estructura interna compleja y permite la construcción de objetos
paso a paso. Ejemplo: este patrón se encuentra en los restaurantes de comidas rápidas que
preparan menús infantiles. Generalmente estos menús están formados de un plato principal, un
acompañamiento, una bebida y un juguete. Si bien el contenido del menú puede variar, el
proceso de construcción es siempre el mismo: el cajero indica a los empleados los pasos a
seguir. Estos pasos son: preparar un plato principal, preparar un acompañamiento, incluir un
juguete y guardarlos en una bolsa. La bebida se sirve en un vaso y queda fuera de la bolsa.
acilita la creación dinámica de objetos mediante la definición de clases cuyos
objetos pueden crear duplicados de si mismos. Estos objetos son llamados prototipos. Ejemplo: un
escenario frecuente es contar con GUIs (Interfaz Gráfica de Usuario) que cuenten
número de controles similares, los cuales deben ser inicializados a un determinado estado común
para mantener consistencia. El proceso de inicialización se repite varias veces por cada control
de manera que las líneas de código se incrementan. Con el fin de optimizar estas partes del
código se puede contar con un objeto inicializado en un determinado estado estándar y luego
obtener clones de él ya inicializados. Patrones estructurales. Se encargan de cómo se combinan
ar estructuras más grandes. Los patrones estructurales de clases
utilizan la herencia para componer interfaces o implementaciones. En lugar de combinar
interfaces o implementaciones, los patrones estructurales de objetos describen formas de
s para obtener nuevas funcionalidades. La flexibilidad añadida mediante la
composición de objetos viene dada por la capacidad de cambiar la composición en tiempo de
ejecución, que es imposible con la composición de clases. Ejemplos típicos son cómo comunic
dos clases incompatibles o cómo añadir funcionalidad a objetos. Los patrones estructurales son
Adapter: oficia de intermediario entre dos clases cuyas interfaces son incompatibles de manera
tal que puedan ser utilizadas en conjunto. Ejemplo: en la vida cotidiana se ven ejemplos de este
patrón, quizá el más común de ellos sea el de los adaptadores de enchufes el cual permitiría
utilizar un enchufe de dos patas planas adaptándolo a un toma corriente de dos patas
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Patrones Creacionales. Los patrones creacionales abstraen el proceso de instanciación de objetos,
dependiente de cómo se crean, componen y representan sus objetos.
Estos patrones encapsulan el conocimiento sobre las clases concretas que utiliza el sistema. En otras
palabras, estos patrones brindan soporte a una de las tareas mas comunes dentro de la programación
orientada a objetos: la instanciación. Estos patrones brindan las siguientes características:
Instanciación genérica: permite que los objetos sean creados dentro del sistema sin especificar
atrones facilitan la creación de objetos, evitando que el cliente deba tener
Restricciones creacionales: algunos patrones ayudan a establecer restricciones sobre la creación de
Por lo general, son alternativas de diseño bajo estrategias de herencia o delegación que encapsulan el
mecanismo de creación, independizando los tipos de objetos “producto” que se manejan. Los patrones
ue una determinada clase sea instanciada una y sólo una vez,
Abstract Factory: provee una interfaz para crear familias de objetos producto relacionados o
Factory Method: define una interfaz para crear un objeto delegando la decisión de qué clase
crear en las subclases. Este enfoque también puede ser llamado constructor “virtual”.
epresentación, de forma que el
mismo proceso de construcción pueda crear diferentes representaciones. Simplifica la
construcción de objetos con estructura interna compleja y permite la construcción de objetos
en los restaurantes de comidas rápidas que
preparan menús infantiles. Generalmente estos menús están formados de un plato principal, un
acompañamiento, una bebida y un juguete. Si bien el contenido del menú puede variar, el
re el mismo: el cajero indica a los empleados los pasos a
seguir. Estos pasos son: preparar un plato principal, preparar un acompañamiento, incluir un
juguete y guardarlos en una bolsa. La bebida se sirve en un vaso y queda fuera de la bolsa.
acilita la creación dinámica de objetos mediante la definición de clases cuyos
objetos pueden crear duplicados de si mismos. Estos objetos son llamados prototipos. Ejemplo: un
escenario frecuente es contar con GUIs (Interfaz Gráfica de Usuario) que cuenten con un gran
número de controles similares, los cuales deben ser inicializados a un determinado estado común
para mantener consistencia. El proceso de inicialización se repite varias veces por cada control
Con el fin de optimizar estas partes del
código se puede contar con un objeto inicializado en un determinado estado estándar y luego
Patrones estructurales. Se encargan de cómo se combinan
ar estructuras más grandes. Los patrones estructurales de clases
utilizan la herencia para componer interfaces o implementaciones. En lugar de combinar
interfaces o implementaciones, los patrones estructurales de objetos describen formas de
s para obtener nuevas funcionalidades. La flexibilidad añadida mediante la
composición de objetos viene dada por la capacidad de cambiar la composición en tiempo de
ejecución, que es imposible con la composición de clases. Ejemplos típicos son cómo comunicar
dos clases incompatibles o cómo añadir funcionalidad a objetos. Los patrones estructurales son
Adapter: oficia de intermediario entre dos clases cuyas interfaces son incompatibles de manera
mplo: en la vida cotidiana se ven ejemplos de este
patrón, quizá el más común de ellos sea el de los adaptadores de enchufes el cual permitiría
utilizar un enchufe de dos patas planas adaptándolo a un toma corriente de dos patas
7. Bridge: disocia un componente complejo en dos jerarquías de clases: una abstracción funcional
y la implementación interna, para que ambas puedan variar independientemente. Ejemplo: los
electrodomésticos y sus interruptores de encendido pueden ser considerados como ejemplo
este patrón donde el interruptor de encendido es considerado la abstracción y el
electrodoméstico en si la implementación. El interruptor podría ser un simple interruptor de
encendido/apagado, un regulador de velocidades u alguna otra opción, mientras
electrodoméstico puede ser una lámpara, un ventilador de techo, etc.
8. Composite: compone objetos en estructuras de árboles para representar jerarquías parte
Permite que los clientes traten de manera uniforme a los objetos individuales y a los
Ejemplo: en una gráfica de Gantt existen tareas simples (con una actividad) y compuestas (que
contienen varias tareas). Modelar estos dos tipos de tareas en una jerarquía de clases donde
ambas son subclases de una clase que cuente con un método
permitiría tratar de forma uniforme a tareas simples y compuestas para calcular el tiempo
utilizado por cada una de ellas. Concretamente una tarea simple informa el tiempo dedicado a
ella, mientras que una compuesta lo hace sumand
tareas que contiene.
9. Decorator: agrega o limita responsabilidades adicionales a un objeto de forma dinámica,
proporcionando una alternativa flexible a la herencia para extender funcionalidad. Ejemplo: si
bien es cierto que se pueden colgar pinturas, cuadros y fotos en las paredes sin marcos, éstos
suelen ser utilizados a menudo y son ellos los que se cuelgan en la pared en lugar de su
contenido (pinturas, cuadros, etc.). Al momento de colgarse los cuadros junto co
pueden formar un solo “componente visual”
10. Facade: proporciona una interfaz simplificada para un conjunto de interfaces de subsistemas.
Define una interfaz de alto nivel que hace que un subsistema sea más fácil de usar. Ejemplo: En
un sistema de compras los clientes contactan a un responsable de ventas que actúa como
Facade al momento de realizar un pedido. Este representante de ventas actúa como Facade
proveyendo una interface con los departamentos (subsitemas) de ped
11. Flyweight: permite el uso de un gran número de objetos de grano fino de forma eficiente
mediante compartimiento. Ejemplo: La red telefónica pública conmutada es un ejemplo de este
patrón ya que hay diversos componentes, como por ejemplo nodos de conmutaci
deben compartir entre los distintos usuarios. Los usuarios no conocen cuántos componentes de
cada tipo hay disponibles al momento de realizar la llamada. Lo único por lo que se preocupan
los usuarios es por obtener tono para marcar, poder discar
12. Proxy: Provee un sustituto o representante de un objeto para controlar el acceso a éste. Este
patrón posee las siguientes variantes:
remoto como si estuviese localmente.
tamaño bajo demanda. - Proxy de protección: se encarga de controlar el acceso al objeto
representado. Patrones de comportamiento Tienen que ver con algoritmos y asignación de
responsabilidades. Estos patrones se focalizan en el flujo de
formas de organizar los controles dentro del sistema pueden llevar a grandes beneficios en
cuanto a mantenibilidad y eficiencia. Algunos ejemplos de estos patrones incluyen la definición
de abstracciones de algoritmos,
reduciendo las dependencias o asociar comportamiento a objetos e invocar su ejecución. Los
patrones de comportamiento basados en clases utilizan la herencia para distribuir el
comportamiento entre clases, ellos son: Template Method e Interpreter. Mientras que los basados
en objetos utilizan la composición. Los patrones de comportamiento son los siguientes:
13. Chain of responsibility: establece una cadena de mensajes dentro del sistema de manera
dicho mensaje sea manejado en el mismo nivel donde fue emitido, o redirigido a un objeto
capaz de manejarlo. Evita acoplar el emisor del mensaje con un receptor, dando a más de un
objeto la posibilidad de responder al mensaje.
14. Command: representa una solicitud con un objeto, de manera tal de poder parametrizar a los
clientes con distintas solicitudes, encolarlas o llevar un registro de las mismas, y poder deshacer
Para uso exclusivo de los alumnos de CETICSA S.L.
un componente complejo en dos jerarquías de clases: una abstracción funcional
y la implementación interna, para que ambas puedan variar independientemente. Ejemplo: los
electrodomésticos y sus interruptores de encendido pueden ser considerados como ejemplo
este patrón donde el interruptor de encendido es considerado la abstracción y el
electrodoméstico en si la implementación. El interruptor podría ser un simple interruptor de
encendido/apagado, un regulador de velocidades u alguna otra opción, mientras
electrodoméstico puede ser una lámpara, un ventilador de techo, etc.
Composite: compone objetos en estructuras de árboles para representar jerarquías parte
Permite que los clientes traten de manera uniforme a los objetos individuales y a los
Ejemplo: en una gráfica de Gantt existen tareas simples (con una actividad) y compuestas (que
contienen varias tareas). Modelar estos dos tipos de tareas en una jerarquía de clases donde
ambas son subclases de una clase que cuente con un método “calculáTiempoUtilizado”
permitiría tratar de forma uniforme a tareas simples y compuestas para calcular el tiempo
utilizado por cada una de ellas. Concretamente una tarea simple informa el tiempo dedicado a
ella, mientras que una compuesta lo hace sumando los tiempos insumidos de cada una de las
Decorator: agrega o limita responsabilidades adicionales a un objeto de forma dinámica,
proporcionando una alternativa flexible a la herencia para extender funcionalidad. Ejemplo: si
cierto que se pueden colgar pinturas, cuadros y fotos en las paredes sin marcos, éstos
suelen ser utilizados a menudo y son ellos los que se cuelgan en la pared en lugar de su
contenido (pinturas, cuadros, etc.). Al momento de colgarse los cuadros junto co
pueden formar un solo “componente visual”
Facade: proporciona una interfaz simplificada para un conjunto de interfaces de subsistemas.
Define una interfaz de alto nivel que hace que un subsistema sea más fácil de usar. Ejemplo: En
compras los clientes contactan a un responsable de ventas que actúa como
Facade al momento de realizar un pedido. Este representante de ventas actúa como Facade
proveyendo una interface con los departamentos (subsitemas) de pedidos, facturación y envíos.
Flyweight: permite el uso de un gran número de objetos de grano fino de forma eficiente
mediante compartimiento. Ejemplo: La red telefónica pública conmutada es un ejemplo de este
patrón ya que hay diversos componentes, como por ejemplo nodos de conmutaci
deben compartir entre los distintos usuarios. Los usuarios no conocen cuántos componentes de
cada tipo hay disponibles al momento de realizar la llamada. Lo único por lo que se preocupan
los usuarios es por obtener tono para marcar, poder discar y efectuar la llamada.
Proxy: Provee un sustituto o representante de un objeto para controlar el acceso a éste. Este
patrón posee las siguientes variantes: - Proxy remoto: se encarga de representar un objeto
remoto como si estuviese localmente. - Proxy virtual: se encarga de crear objetos de gran
Proxy de protección: se encarga de controlar el acceso al objeto
Patrones de comportamiento Tienen que ver con algoritmos y asignación de
responsabilidades. Estos patrones se focalizan en el flujo de control dentro de un sistema. Ciertas
formas de organizar los controles dentro del sistema pueden llevar a grandes beneficios en
cuanto a mantenibilidad y eficiencia. Algunos ejemplos de estos patrones incluyen la definición
de abstracciones de algoritmos, las colaboraciones entre objetos para realizar tareas complejas
reduciendo las dependencias o asociar comportamiento a objetos e invocar su ejecución. Los
patrones de comportamiento basados en clases utilizan la herencia para distribuir el
entre clases, ellos son: Template Method e Interpreter. Mientras que los basados
en objetos utilizan la composición. Los patrones de comportamiento son los siguientes:
Chain of responsibility: establece una cadena de mensajes dentro del sistema de manera
dicho mensaje sea manejado en el mismo nivel donde fue emitido, o redirigido a un objeto
capaz de manejarlo. Evita acoplar el emisor del mensaje con un receptor, dando a más de un
objeto la posibilidad de responder al mensaje.
una solicitud con un objeto, de manera tal de poder parametrizar a los
clientes con distintas solicitudes, encolarlas o llevar un registro de las mismas, y poder deshacer
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
un componente complejo en dos jerarquías de clases: una abstracción funcional
y la implementación interna, para que ambas puedan variar independientemente. Ejemplo: los
electrodomésticos y sus interruptores de encendido pueden ser considerados como ejemplos de
este patrón donde el interruptor de encendido es considerado la abstracción y el
electrodoméstico en si la implementación. El interruptor podría ser un simple interruptor de
encendido/apagado, un regulador de velocidades u alguna otra opción, mientras que el
Composite: compone objetos en estructuras de árboles para representar jerarquías parte-todo.
Permite que los clientes traten de manera uniforme a los objetos individuales y a los complejos.
Ejemplo: en una gráfica de Gantt existen tareas simples (con una actividad) y compuestas (que
contienen varias tareas). Modelar estos dos tipos de tareas en una jerarquía de clases donde
“calculáTiempoUtilizado”
permitiría tratar de forma uniforme a tareas simples y compuestas para calcular el tiempo
utilizado por cada una de ellas. Concretamente una tarea simple informa el tiempo dedicado a
o los tiempos insumidos de cada una de las
Decorator: agrega o limita responsabilidades adicionales a un objeto de forma dinámica,
proporcionando una alternativa flexible a la herencia para extender funcionalidad. Ejemplo: si
cierto que se pueden colgar pinturas, cuadros y fotos en las paredes sin marcos, éstos
suelen ser utilizados a menudo y son ellos los que se cuelgan en la pared en lugar de su
contenido (pinturas, cuadros, etc.). Al momento de colgarse los cuadros junto con su marco
Facade: proporciona una interfaz simplificada para un conjunto de interfaces de subsistemas.
Define una interfaz de alto nivel que hace que un subsistema sea más fácil de usar. Ejemplo: En
compras los clientes contactan a un responsable de ventas que actúa como
Facade al momento de realizar un pedido. Este representante de ventas actúa como Facade
idos, facturación y envíos.
Flyweight: permite el uso de un gran número de objetos de grano fino de forma eficiente
mediante compartimiento. Ejemplo: La red telefónica pública conmutada es un ejemplo de este
patrón ya que hay diversos componentes, como por ejemplo nodos de conmutación, que se
deben compartir entre los distintos usuarios. Los usuarios no conocen cuántos componentes de
cada tipo hay disponibles al momento de realizar la llamada. Lo único por lo que se preocupan
y efectuar la llamada.
Proxy: Provee un sustituto o representante de un objeto para controlar el acceso a éste. Este
Proxy remoto: se encarga de representar un objeto
ar objetos de gran
Proxy de protección: se encarga de controlar el acceso al objeto
Patrones de comportamiento Tienen que ver con algoritmos y asignación de
control dentro de un sistema. Ciertas
formas de organizar los controles dentro del sistema pueden llevar a grandes beneficios en
cuanto a mantenibilidad y eficiencia. Algunos ejemplos de estos patrones incluyen la definición
las colaboraciones entre objetos para realizar tareas complejas
reduciendo las dependencias o asociar comportamiento a objetos e invocar su ejecución. Los
patrones de comportamiento basados en clases utilizan la herencia para distribuir el
entre clases, ellos son: Template Method e Interpreter. Mientras que los basados
en objetos utilizan la composición. Los patrones de comportamiento son los siguientes:
Chain of responsibility: establece una cadena de mensajes dentro del sistema de manera tal que
dicho mensaje sea manejado en el mismo nivel donde fue emitido, o redirigido a un objeto
capaz de manejarlo. Evita acoplar el emisor del mensaje con un receptor, dando a más de un
una solicitud con un objeto, de manera tal de poder parametrizar a los
clientes con distintas solicitudes, encolarlas o llevar un registro de las mismas, y poder deshacer
las operaciones. Estas solicitudes, al ser representadas como un objeto también puede
como parámetro o devolverse como resultados.
15. Interpreter: en un contexto donde se repite una determinada clase de problemas y el dominio es
bien conocido, se pueden caracterizar estos problemas como un lenguaje y, a su vez, estos
problemas pueden ser tratados por un “motor” de interpretación. Este patrón busca definir un
intérprete para dicho lenguaje, para el cual define una gramática y un intérprete de la misma
para poder resolver los problemas. Ejemplo: distintos motores de bases de datos (Ora
Server, Sybase, DB2, etc.) utilizan distintos códigos de error para indicar fallas (errores de clave
duplicada, violación de restricciones de integridad referencial, longitud de datos, etc.). La
utilización de éste patrón permitiría definir un int
datos con el cual se determinaría la falla y tomarían las acciones pertinentes en función de la
misma. El sistema debe configurarse para utilizar el interprete adecuado según el motor de base
de datos.
16. Iterator: provee un modo de acceder secuencialmente a los elementos de un objeto agregado
(una colección) sin exponer su representación interna. El iterador está altamente acoplado al
objeto agregado. Ejemplo: Los árboles
en-orden y post-orden. La aplicación de este patrón permitiría definir un iterador para cada tipo
de recorrido, pudiendo ser utilizados para recorrer el árbol sin exponer su contenido.
17. Mediator: simplifica la comunicación entre objetos den
de un objeto mediador que administra la distribución de mensajes entre objetos. Promueve bajo
acoplamiento al evitar que los objetos se referencien unos a otros explícitamente, permitiendo
variar la interacción entre ellos independientemente. Ejemplo: Este patrón puede verse en las
torres de control de los aeropuertos. Los pilotos de los aviones que se encuentran por despegar o
aterrizar se comunican con la torre en lugar de hacerlo explícitamente entre ellos. La tor
control regula quien puede aterrizar y despegar, pero no se encarga de controlar todo el vuelo.
18. Memento: preserva una “fotografía instantánea” del estado de un objeto con el fin de permitirle
volver a su estado original, sin revelar su contenido al
muy importante de los editores de texto es “Deshacer” o “Undo”, esta funcionalidad puede
implementarse vía Memento. Para realizar esto se debe considerar al contenido del documento
como estado del editor y ante ca
fotografía del estado del documento antes de la modificación, para poder volver al mismo. Dos
factores importantes deben ser tenidos en cuenta: el orden de guardado de los cambios, para
poder deshacerlos correctamente y cuando limpiar el registro de estados intermedios ya que
esto puede consumir muchos recursos.
19. Observer: brinda un mecanismo que permite a un componente transmitir de forma flexible
mensajes a aquellos objetos que hayan expresado interés en él.
cuando el objeto ha sido actualizado, y la idea es que quienes hayan expresado interés
reaccionen ante este evento. Ejemplo: este patrón puede verse en las subastas donde cada
ofertante (Observer) tiene un indicador con su númer
aceptación de una oferta. El subastador(Subject, objeto observado) comienza la subasta con
una oferta inicial, cuando un ofertante toma esa oferta el subastador les retransmite a todos los
ofertantes que el precio ha cambiado.
20. State: permite que un objeto modifique su comportamiento cada vez que cambie su estado
interno. El objeto parecerá que cambió de clase. Ejemplo: este patrón puede observarse en las
máquinas expendedoras de golosinas, las cuales pasan por distin
dinero depositado, capacidad para dar vuelto, golosina seleccionada, etc. En cada uno de
éstos estados la máquina se comporta distinta. Cuando se deposita dinero y se elije una golosina
la expendedora puede entregar un produc
cambiar su estado (por ejemplo quedarse sin stock, en cuyo caso no entregará mas golosinas, o
no entregar golosinas ya sea por falta de stock o cambio).
21. Strategy: define una jerarquía de clases que represe
intercambiables. Estos algoritmos pueden ser intercambiados por la aplicación en tiempo de
ejecución. Ejemplo: Se dispone de un programa que encripta y desencripta mensajes de texto
Para uso exclusivo de los alumnos de CETICSA S.L.
las operaciones. Estas solicitudes, al ser representadas como un objeto también puede
como parámetro o devolverse como resultados.
Interpreter: en un contexto donde se repite una determinada clase de problemas y el dominio es
bien conocido, se pueden caracterizar estos problemas como un lenguaje y, a su vez, estos
n ser tratados por un “motor” de interpretación. Este patrón busca definir un
intérprete para dicho lenguaje, para el cual define una gramática y un intérprete de la misma
para poder resolver los problemas. Ejemplo: distintos motores de bases de datos (Ora
Server, Sybase, DB2, etc.) utilizan distintos códigos de error para indicar fallas (errores de clave
duplicada, violación de restricciones de integridad referencial, longitud de datos, etc.). La
utilización de éste patrón permitiría definir un intérprete de errores para cada motor de base de
datos con el cual se determinaría la falla y tomarían las acciones pertinentes en función de la
misma. El sistema debe configurarse para utilizar el interprete adecuado según el motor de base
r: provee un modo de acceder secuencialmente a los elementos de un objeto agregado
(una colección) sin exponer su representación interna. El iterador está altamente acoplado al
objeto agregado. Ejemplo: Los árboles-B pueden recorrerse de tres formas distin
orden. La aplicación de este patrón permitiría definir un iterador para cada tipo
de recorrido, pudiendo ser utilizados para recorrer el árbol sin exponer su contenido.
Mediator: simplifica la comunicación entre objetos dentro del sistema mediante la introducción
de un objeto mediador que administra la distribución de mensajes entre objetos. Promueve bajo
acoplamiento al evitar que los objetos se referencien unos a otros explícitamente, permitiendo
e ellos independientemente. Ejemplo: Este patrón puede verse en las
torres de control de los aeropuertos. Los pilotos de los aviones que se encuentran por despegar o
aterrizar se comunican con la torre en lugar de hacerlo explícitamente entre ellos. La tor
control regula quien puede aterrizar y despegar, pero no se encarga de controlar todo el vuelo.
Memento: preserva una “fotografía instantánea” del estado de un objeto con el fin de permitirle
volver a su estado original, sin revelar su contenido al mundo exterior. Ejemplo: una funcionalidad
muy importante de los editores de texto es “Deshacer” o “Undo”, esta funcionalidad puede
implementarse vía Memento. Para realizar esto se debe considerar al contenido del documento
como estado del editor y ante cada cambio del documento se debe tomar una nueva
fotografía del estado del documento antes de la modificación, para poder volver al mismo. Dos
factores importantes deben ser tenidos en cuenta: el orden de guardado de los cambios, para
ectamente y cuando limpiar el registro de estados intermedios ya que
esto puede consumir muchos recursos.
Observer: brinda un mecanismo que permite a un componente transmitir de forma flexible
mensajes a aquellos objetos que hayan expresado interés en él. Estos mensajes se disparan
cuando el objeto ha sido actualizado, y la idea es que quienes hayan expresado interés
reaccionen ante este evento. Ejemplo: este patrón puede verse en las subastas donde cada
ofertante (Observer) tiene un indicador con su número, el cual es utilizado para indicar la
aceptación de una oferta. El subastador(Subject, objeto observado) comienza la subasta con
una oferta inicial, cuando un ofertante toma esa oferta el subastador les retransmite a todos los
cambiado.
State: permite que un objeto modifique su comportamiento cada vez que cambie su estado
interno. El objeto parecerá que cambió de clase. Ejemplo: este patrón puede observarse en las
máquinas expendedoras de golosinas, las cuales pasan por distintos estados: stock disponible,
dinero depositado, capacidad para dar vuelto, golosina seleccionada, etc. En cada uno de
éstos estados la máquina se comporta distinta. Cuando se deposita dinero y se elije una golosina
la expendedora puede entregar un producto y no cambiar su estado, entregar un producto y
cambiar su estado (por ejemplo quedarse sin stock, en cuyo caso no entregará mas golosinas, o
no entregar golosinas ya sea por falta de stock o cambio).
Strategy: define una jerarquía de clases que representan algoritmos, los cuales son
intercambiables. Estos algoritmos pueden ser intercambiados por la aplicación en tiempo de
ejecución. Ejemplo: Se dispone de un programa que encripta y desencripta mensajes de texto
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
las operaciones. Estas solicitudes, al ser representadas como un objeto también pueden pasarse
Interpreter: en un contexto donde se repite una determinada clase de problemas y el dominio es
bien conocido, se pueden caracterizar estos problemas como un lenguaje y, a su vez, estos
n ser tratados por un “motor” de interpretación. Este patrón busca definir un
intérprete para dicho lenguaje, para el cual define una gramática y un intérprete de la misma
para poder resolver los problemas. Ejemplo: distintos motores de bases de datos (Oracle, SQL
Server, Sybase, DB2, etc.) utilizan distintos códigos de error para indicar fallas (errores de clave
duplicada, violación de restricciones de integridad referencial, longitud de datos, etc.). La
érprete de errores para cada motor de base de
datos con el cual se determinaría la falla y tomarían las acciones pertinentes en función de la
misma. El sistema debe configurarse para utilizar el interprete adecuado según el motor de base
r: provee un modo de acceder secuencialmente a los elementos de un objeto agregado
(una colección) sin exponer su representación interna. El iterador está altamente acoplado al
B pueden recorrerse de tres formas distintas: pre-orden,
orden. La aplicación de este patrón permitiría definir un iterador para cada tipo
de recorrido, pudiendo ser utilizados para recorrer el árbol sin exponer su contenido.
tro del sistema mediante la introducción
de un objeto mediador que administra la distribución de mensajes entre objetos. Promueve bajo
acoplamiento al evitar que los objetos se referencien unos a otros explícitamente, permitiendo
e ellos independientemente. Ejemplo: Este patrón puede verse en las
torres de control de los aeropuertos. Los pilotos de los aviones que se encuentran por despegar o
aterrizar se comunican con la torre en lugar de hacerlo explícitamente entre ellos. La torre de
control regula quien puede aterrizar y despegar, pero no se encarga de controlar todo el vuelo.
Memento: preserva una “fotografía instantánea” del estado de un objeto con el fin de permitirle
mundo exterior. Ejemplo: una funcionalidad
muy importante de los editores de texto es “Deshacer” o “Undo”, esta funcionalidad puede
implementarse vía Memento. Para realizar esto se debe considerar al contenido del documento
da cambio del documento se debe tomar una nueva
fotografía del estado del documento antes de la modificación, para poder volver al mismo. Dos
factores importantes deben ser tenidos en cuenta: el orden de guardado de los cambios, para
ectamente y cuando limpiar el registro de estados intermedios ya que
Observer: brinda un mecanismo que permite a un componente transmitir de forma flexible
Estos mensajes se disparan
cuando el objeto ha sido actualizado, y la idea es que quienes hayan expresado interés
reaccionen ante este evento. Ejemplo: este patrón puede verse en las subastas donde cada
o, el cual es utilizado para indicar la
aceptación de una oferta. El subastador(Subject, objeto observado) comienza la subasta con
una oferta inicial, cuando un ofertante toma esa oferta el subastador les retransmite a todos los
State: permite que un objeto modifique su comportamiento cada vez que cambie su estado
interno. El objeto parecerá que cambió de clase. Ejemplo: este patrón puede observarse en las
tos estados: stock disponible,
dinero depositado, capacidad para dar vuelto, golosina seleccionada, etc. En cada uno de
éstos estados la máquina se comporta distinta. Cuando se deposita dinero y se elije una golosina
to y no cambiar su estado, entregar un producto y
cambiar su estado (por ejemplo quedarse sin stock, en cuyo caso no entregará mas golosinas, o
ntan algoritmos, los cuales son
intercambiables. Estos algoritmos pueden ser intercambiados por la aplicación en tiempo de
ejecución. Ejemplo: Se dispone de un programa que encripta y desencripta mensajes de texto
usando distintos algoritmos de encriptació
puede modelarse como una clase con servicios de encriptación (un método “encriptaMensaje”
que recibe el texto llano y una clave, para devolver un texto cifrado y servicios de
desencriptación (un método “desen
para devolver uno descifrado).
22. Template Method: define en una operación el esqueleto de un algoritmo, delegando en las
subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos
sin cambiar su estructura.
23. Visitor: representa una operación sobre elementos de una estructura de objetos. Permite definir
una nueva operación sin cambiar las clases de los elementos sobre los que opera. Brinda una
forma sencilla y mantenible de realizar acciones sobre una familia de clases. Ejemplo: un
compilador interpreta código fuente y lo representa como un árbol de sintaxis abstracta
(Abstract Syntax Tree, AST), el cual cuenta con diversos tipos de nodos (asignaciones, expresiones
condicionales, etc.). Sobre este árbol se desean ejecutar algunas operaciones como: revisar que
todas las variables fueron declaradas, chequeos de tipos de datos, generación de código, etc.
Una forma de realizar estas operaciones es mediante la implementación
cual recorrerá toda la estructura del árbol. Cuando un nodo acepte al Visitor, éste invocará al
método de visita definido en el Visitor que toma por parámetro al nodo siendo visitado.
Patrones de diseño basados en servicios web
Para el desarrollo de aplicaciones orientadas a servicio utilizando arquitecturas SOA, se han desarrollado
una serie de patrones de software.
Estos patrones se pueden dividir en cinco categorías:
Aprendizaje
Es importante entender el entorno de los servicios Web. Dentro de esta categoría podemos encontrar:
Service-Oriented Architecture: Es el patrón que forma la arquitectura de los servicios Web como ya
hemos visto anteriormente.
Architecture Adapter. Se puede ver como un patrón genérico que facilita la comunicación entre
arquitecturas.
Service Directory: Este patrón facilita la transparencia en la localización de servicios, permitiendo realizar
robustas interfaces para encontrar el servicio que realmente s
Adaptación
Estos patrones son los llamados básicos para conocer el funcionamiento del entorno de los Servicios
Web.
En esta categoría nos encontramos:
� Business Object: Un business object engloba a un concepto de negocio del mundo real como
puede ser un cliente, una compañía o un producto, por ejemplo, y lo que pretende este patrón es
trasladar el concepto de objeto de negocio dentro del paradigma de los servicios Web.
� Business Process: Este patrón se utiliza para tratar con procesos de negoc
dos estándares:
o Business Process Execution Lenguaje (BPEL) propuesto por Bea Systems, IBM y Microsoft.
o Business Process Modeling Languaje (BPML) propuesto por el resto de compañías que no
están en el grupo anterior como puede
� Bussines Object Collection: Con este patrón se pueden realizar composiciones de procesos de
negocio.
� Asynchronous Bussines Process: Este patrón es la evolución del patrón anterior Bussines Process.
Para uso exclusivo de los alumnos de CETICSA S.L.
usando distintos algoritmos de encriptación. Cada uno de estos algoritmos de encriptación
puede modelarse como una clase con servicios de encriptación (un método “encriptaMensaje”
que recibe el texto llano y una clave, para devolver un texto cifrado y servicios de
desencriptación (un método “desencriptaMensaje” que recibe una clave y un texto cifrado
para devolver uno descifrado).
Template Method: define en una operación el esqueleto de un algoritmo, delegando en las
subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos
Visitor: representa una operación sobre elementos de una estructura de objetos. Permite definir
una nueva operación sin cambiar las clases de los elementos sobre los que opera. Brinda una
le de realizar acciones sobre una familia de clases. Ejemplo: un
compilador interpreta código fuente y lo representa como un árbol de sintaxis abstracta
(Abstract Syntax Tree, AST), el cual cuenta con diversos tipos de nodos (asignaciones, expresiones
icionales, etc.). Sobre este árbol se desean ejecutar algunas operaciones como: revisar que
todas las variables fueron declaradas, chequeos de tipos de datos, generación de código, etc.
Una forma de realizar estas operaciones es mediante la implementación
cual recorrerá toda la estructura del árbol. Cuando un nodo acepte al Visitor, éste invocará al
método de visita definido en el Visitor que toma por parámetro al nodo siendo visitado.
atrones de diseño basados en servicios web
aplicaciones orientadas a servicio utilizando arquitecturas SOA, se han desarrollado
Estos patrones se pueden dividir en cinco categorías:
Es importante entender el entorno de los servicios Web. Dentro de esta categoría podemos encontrar:
Oriented Architecture: Es el patrón que forma la arquitectura de los servicios Web como ya
de ver como un patrón genérico que facilita la comunicación entre
Service Directory: Este patrón facilita la transparencia en la localización de servicios, permitiendo realizar
robustas interfaces para encontrar el servicio que realmente se quiere.
Estos patrones son los llamados básicos para conocer el funcionamiento del entorno de los Servicios
En esta categoría nos encontramos:
Business Object: Un business object engloba a un concepto de negocio del mundo real como
ede ser un cliente, una compañía o un producto, por ejemplo, y lo que pretende este patrón es
trasladar el concepto de objeto de negocio dentro del paradigma de los servicios Web.
Business Process: Este patrón se utiliza para tratar con procesos de negocio. En este momento existen
Business Process Execution Lenguaje (BPEL) propuesto por Bea Systems, IBM y Microsoft.
Business Process Modeling Languaje (BPML) propuesto por el resto de compañías que no
están en el grupo anterior como pueden ser WebMethods, SeeBeyond, etc.
Bussines Object Collection: Con este patrón se pueden realizar composiciones de procesos de
Asynchronous Bussines Process: Este patrón es la evolución del patrón anterior Bussines Process.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
n. Cada uno de estos algoritmos de encriptación
puede modelarse como una clase con servicios de encriptación (un método “encriptaMensaje”
que recibe el texto llano y una clave, para devolver un texto cifrado y servicios de
criptaMensaje” que recibe una clave y un texto cifrado
Template Method: define en una operación el esqueleto de un algoritmo, delegando en las
subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos del algoritmo
Visitor: representa una operación sobre elementos de una estructura de objetos. Permite definir
una nueva operación sin cambiar las clases de los elementos sobre los que opera. Brinda una
le de realizar acciones sobre una familia de clases. Ejemplo: un
compilador interpreta código fuente y lo representa como un árbol de sintaxis abstracta
(Abstract Syntax Tree, AST), el cual cuenta con diversos tipos de nodos (asignaciones, expresiones
icionales, etc.). Sobre este árbol se desean ejecutar algunas operaciones como: revisar que
todas las variables fueron declaradas, chequeos de tipos de datos, generación de código, etc.
Una forma de realizar estas operaciones es mediante la implementación del patrón Visitor, el
cual recorrerá toda la estructura del árbol. Cuando un nodo acepte al Visitor, éste invocará al
método de visita definido en el Visitor que toma por parámetro al nodo siendo visitado.
atrones de diseño basados en servicios web
aplicaciones orientadas a servicio utilizando arquitecturas SOA, se han desarrollado
Es importante entender el entorno de los servicios Web. Dentro de esta categoría podemos encontrar:
Oriented Architecture: Es el patrón que forma la arquitectura de los servicios Web como ya
de ver como un patrón genérico que facilita la comunicación entre
Service Directory: Este patrón facilita la transparencia en la localización de servicios, permitiendo realizar
Estos patrones son los llamados básicos para conocer el funcionamiento del entorno de los Servicios
Business Object: Un business object engloba a un concepto de negocio del mundo real como
ede ser un cliente, una compañía o un producto, por ejemplo, y lo que pretende este patrón es
trasladar el concepto de objeto de negocio dentro del paradigma de los servicios Web.
io. En este momento existen
Business Process Execution Lenguaje (BPEL) propuesto por Bea Systems, IBM y Microsoft.
Business Process Modeling Languaje (BPML) propuesto por el resto de compañías que no
n ser WebMethods, SeeBeyond, etc.
Bussines Object Collection: Con este patrón se pueden realizar composiciones de procesos de
Asynchronous Bussines Process: Este patrón es la evolución del patrón anterior Bussines Process.
Determinando Cambios
Aunque los servicios Web permiten llamadas asíncronas, las implementaciones del servicio pueden estar
basados en paso de mensajes, también son importantes los servicios basados en eventos, estos patrones
se basan en patrones tradicionales como el Observer
En esta categoría podemos encontrar:
o Event Monitor: Es un patrón para crear formas efectivas para integrar aplicaciones sin la
intervención de otros componentes. El escenario más común donde se utiliza este patrón es
aplicaciones EAI (Enterprise Application Integration).
o Observer Services: Este patrón representa la manera más natural de detectar cambios y actuar
en consecuencia.
o Publish/Subscribe Services: Es la evolución del Observer Pattern, mientras que el pa
se base en el registro, el patrón Publish/Subscribe se base en notificaciones, esto permite que
distintos servicios puedan enviar la misma notificación.
Redefinición
Estos patrones te permiten acceder al comportamiento de un servicio que está implementado en un
lenguaje. Ayudan a entender el entorno del Servicio Web y a moldear este entorno de acuerdo con
nuestras necesidades.
En esta categoría podemos encontrar:
o Physical Tires: Este patrón ayuda a estructurar mejor la lógica de negocio de los servicios Web, e
incluso se puede utilizar para controlar el flujo de negociaciones que puede llegar a producirse
utilizando el patrón Publish/Subscribe.
o Connector: Este patrón se suele utilizar con el anterior para resolver los posibles problemas que
surgen en la subcripción.
o Faux Implementation: Es una alternativa para resolver los problemas que surgen en la utilización
de eventos en los servicios Web. Es simplemente un “socke
aporta las respuestas para los distintos eventos.
Creando flexibilidad
Para crear servicios más flexibles y optimizados.
En esta categoría se encuentran:
o Service Factory: Es uno de los patrones más importantes y permi
aporta flexibilidad en la instanciación de los componentes que crean los servicios Web. Este
patrón también se suele utilizar con el patrón Service Cache para aportar una mayor flexibilidad
en el mantenimiento de las aplicac
las aplicaciones.
o Data Transfer Object: Este patrón aporta rendimiento ya que permite recoger múltiples datos y
enviarlos en una única llamada, reduciendo el número de conexiones que el cliente ti
hacer al servidor.
o Partial Population: Este patrón permite a los clientes seleccionar únicamente los datos que son
necesarios para sus necesidades y sólo recuperar del servidor lo necesario. Este patrón además
de rendimiento aporta mayor ancho de
o Algunos patrones utilizan otros por ejemplo el Business Process Patern usa el Business Object
Patern y el Business Object Collection. Y el Service
Directory y Architecture Adapter.
Para uso exclusivo de los alumnos de CETICSA S.L.
Aunque los servicios Web permiten llamadas asíncronas, las implementaciones del servicio pueden estar
basados en paso de mensajes, también son importantes los servicios basados en eventos, estos patrones
se basan en patrones tradicionales como el Observer o el patrón Publicación/Suscripción.
En esta categoría podemos encontrar:
Event Monitor: Es un patrón para crear formas efectivas para integrar aplicaciones sin la
intervención de otros componentes. El escenario más común donde se utiliza este patrón es
aplicaciones EAI (Enterprise Application Integration).
Observer Services: Este patrón representa la manera más natural de detectar cambios y actuar
Publish/Subscribe Services: Es la evolución del Observer Pattern, mientras que el pa
se base en el registro, el patrón Publish/Subscribe se base en notificaciones, esto permite que
distintos servicios puedan enviar la misma notificación.
Estos patrones te permiten acceder al comportamiento de un servicio que está implementado en un
lenguaje. Ayudan a entender el entorno del Servicio Web y a moldear este entorno de acuerdo con
En esta categoría podemos encontrar:
ical Tires: Este patrón ayuda a estructurar mejor la lógica de negocio de los servicios Web, e
incluso se puede utilizar para controlar el flujo de negociaciones que puede llegar a producirse
utilizando el patrón Publish/Subscribe.
se suele utilizar con el anterior para resolver los posibles problemas que
Faux Implementation: Es una alternativa para resolver los problemas que surgen en la utilización
de eventos en los servicios Web. Es simplemente un “socket abierto” que recibe conexiones y
aporta las respuestas para los distintos eventos.
Para crear servicios más flexibles y optimizados.
Service Factory: Es uno de los patrones más importantes y permite la selección de servicios y
aporta flexibilidad en la instanciación de los componentes que crean los servicios Web. Este
patrón también se suele utilizar con el patrón Service Cache para aportar una mayor flexibilidad
en el mantenimiento de las aplicaciones que utilizan servicios Web, aportando un mayor ROI a
Data Transfer Object: Este patrón aporta rendimiento ya que permite recoger múltiples datos y
enviarlos en una única llamada, reduciendo el número de conexiones que el cliente ti
Partial Population: Este patrón permite a los clientes seleccionar únicamente los datos que son
necesarios para sus necesidades y sólo recuperar del servidor lo necesario. Este patrón además
de rendimiento aporta mayor ancho de banda en la red.
Algunos patrones utilizan otros por ejemplo el Business Process Patern usa el Business Object
Patern y el Business Object Collection. Y el Service-Oriented Architecture usa los patrones Service
Directory y Architecture Adapter.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Aunque los servicios Web permiten llamadas asíncronas, las implementaciones del servicio pueden estar
basados en paso de mensajes, también son importantes los servicios basados en eventos, estos patrones
o el patrón Publicación/Suscripción.
Event Monitor: Es un patrón para crear formas efectivas para integrar aplicaciones sin la
intervención de otros componentes. El escenario más común donde se utiliza este patrón es para
Observer Services: Este patrón representa la manera más natural de detectar cambios y actuar
Publish/Subscribe Services: Es la evolución del Observer Pattern, mientras que el patrón Observer
se base en el registro, el patrón Publish/Subscribe se base en notificaciones, esto permite que
Estos patrones te permiten acceder al comportamiento de un servicio que está implementado en un
lenguaje. Ayudan a entender el entorno del Servicio Web y a moldear este entorno de acuerdo con
ical Tires: Este patrón ayuda a estructurar mejor la lógica de negocio de los servicios Web, e
incluso se puede utilizar para controlar el flujo de negociaciones que puede llegar a producirse
se suele utilizar con el anterior para resolver los posibles problemas que
Faux Implementation: Es una alternativa para resolver los problemas que surgen en la utilización
t abierto” que recibe conexiones y
te la selección de servicios y
aporta flexibilidad en la instanciación de los componentes que crean los servicios Web. Este
patrón también se suele utilizar con el patrón Service Cache para aportar una mayor flexibilidad
iones que utilizan servicios Web, aportando un mayor ROI a
Data Transfer Object: Este patrón aporta rendimiento ya que permite recoger múltiples datos y
enviarlos en una única llamada, reduciendo el número de conexiones que el cliente tiene que
Partial Population: Este patrón permite a los clientes seleccionar únicamente los datos que son
necesarios para sus necesidades y sólo recuperar del servidor lo necesario. Este patrón además
Algunos patrones utilizan otros por ejemplo el Business Process Patern usa el Business Object
Oriented Architecture usa los patrones Service
Buenas practicas para desarrollar servicios web SOAP
Es importante conocer las prácticas más recomendables a la hora de desarrollar
Comentaremos en este bloque las prácticas más recomendables:
Analizar qué servicios web y con qué operaciones
Debemos analizar y diseñar servicios web con las responsabilidades bien repartidas, que sean cohesivos,
extensibles, escalables y reutilizables.
Escribe tu mismo el fichero WSDL (
Es el interfaz, el contrato y, en definit
tecnología. Además los generadores de WSDL pueden introducir dependencias con una tecnología
concreta. Por eso merece la pena aprender a escribir WSDL y schemas XSD.
Más eficiente un único mensaje enorme
A la hora de diseñar el interfaz de las operaciones, ten siempre en cuenta que un solo mensaje es
mucho más rápido que el equivalente en multiples
Sé coherente con la nomenclatura de namespaces de la organización
No hay nada que de peor impresión que un servicio web que no ha cuidado los namespaces.
El WSDL debe ser compatible con el WS
El WS-I Basic Profile es un conjunto de especificaciones y buenas prácticas definidas por la industria para
obtener servicios web interoperables
Usa http://localhost:puerto como dirección url del endpoint
Deja que sea el motor de webservices el encargado de sustituirla por la real. Así evitarás tener un fichero
WSDL por entorno.
Separa la definición de los mensajes del fichero WSD
Diseña por separado un schema XSD donde se definan los mensajes y que sea importado por el fichero
WSDL. Las principales ventajas son que se reduce el tamaño/complejidad del WSDL, permite utilizar
editores especializados para el diseño del schema XSD y
Define los mensajes de forma detallada mediante las restricciones de los schemas XSD
De esta forma podrás validar los mensajes a nivel de XML mediante el api XML u OXM que uses, sin
necesidad de implementar código
Crea tipos y elementos globales
A la hora de diseñar el schema XSD, (a nivel raíz) para poder reutilizarlos, tanto a nivel de elementos XML
como clases del lenguaje de implementación del servicio web.
Envio de ficheros adjuntos
Si necesitas enviar ficheros adjuntos (attachments), hazlo a nivel de http attachment y no como un
elemento del mensaje XML.
Automatización
Automatizaremos el proceso de generar el Skeleton y las clases OXM de mensajes del servicio web a
partir del WSDL (wsdl2code).
Programar tus tests a nivel de la clase Skeleton
Para uso exclusivo de los alumnos de CETICSA S.L.
practicas para desarrollar servicios web SOAP
Es importante conocer las prácticas más recomendables a la hora de desarrollar
Comentaremos en este bloque las prácticas más recomendables:
Analizar qué servicios web y con qué operaciones hay que desarrollar
servicios web con las responsabilidades bien repartidas, que sean cohesivos,
extensibles, escalables y reutilizables.
Escribe tu mismo el fichero WSDL (Contract-First)
Es el interfaz, el contrato y, en definitiva, la clave para una interoperabilidad real e independiente de la
tecnología. Además los generadores de WSDL pueden introducir dependencias con una tecnología
Por eso merece la pena aprender a escribir WSDL y schemas XSD.
co mensaje enorme
A la hora de diseñar el interfaz de las operaciones, ten siempre en cuenta que un solo mensaje es
mucho más rápido que el equivalente en multiples mensajes.
Sé coherente con la nomenclatura de namespaces de la organización
de peor impresión que un servicio web que no ha cuidado los namespaces.
El WSDL debe ser compatible con el WS-I Basic Profile
I Basic Profile es un conjunto de especificaciones y buenas prácticas definidas por la industria para
interoperables.
como dirección url del endpoint
Deja que sea el motor de webservices el encargado de sustituirla por la real. Así evitarás tener un fichero
Separa la definición de los mensajes del fichero WSDL.
Diseña por separado un schema XSD donde se definan los mensajes y que sea importado por el fichero
WSDL. Las principales ventajas son que se reduce el tamaño/complejidad del WSDL, permite utilizar
editores especializados para el diseño del schema XSD y permite reutilizar schemas y namespaces.
Define los mensajes de forma detallada mediante las restricciones de los schemas XSD
De esta forma podrás validar los mensajes a nivel de XML mediante el api XML u OXM que uses, sin
propio.
Crea tipos y elementos globales
A la hora de diseñar el schema XSD, (a nivel raíz) para poder reutilizarlos, tanto a nivel de elementos XML
como clases del lenguaje de implementación del servicio web.
r ficheros adjuntos (attachments), hazlo a nivel de http attachment y no como un
Automatizaremos el proceso de generar el Skeleton y las clases OXM de mensajes del servicio web a
ar tus tests a nivel de la clase Skeleton
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
practicas para desarrollar servicios web SOAP
Es importante conocer las prácticas más recomendables a la hora de desarrollar servicios web SOAP.
hay que desarrollar
servicios web con las responsabilidades bien repartidas, que sean cohesivos,
iva, la clave para una interoperabilidad real e independiente de la
tecnología. Además los generadores de WSDL pueden introducir dependencias con una tecnología
A la hora de diseñar el interfaz de las operaciones, ten siempre en cuenta que un solo mensaje es
Sé coherente con la nomenclatura de namespaces de la organización
de peor impresión que un servicio web que no ha cuidado los namespaces.
I Basic Profile es un conjunto de especificaciones y buenas prácticas definidas por la industria para
Deja que sea el motor de webservices el encargado de sustituirla por la real. Así evitarás tener un fichero
Diseña por separado un schema XSD donde se definan los mensajes y que sea importado por el fichero
WSDL. Las principales ventajas son que se reduce el tamaño/complejidad del WSDL, permite utilizar
permite reutilizar schemas y namespaces.
Define los mensajes de forma detallada mediante las restricciones de los schemas XSD
De esta forma podrás validar los mensajes a nivel de XML mediante el api XML u OXM que uses, sin
A la hora de diseñar el schema XSD, (a nivel raíz) para poder reutilizarlos, tanto a nivel de elementos XML
r ficheros adjuntos (attachments), hazlo a nivel de http attachment y no como un
Automatizaremos el proceso de generar el Skeleton y las clases OXM de mensajes del servicio web a
Para realizar pruebas unitarias del servicio web no necesitas desplegarlo. Ahorraras mucho tiempo y ya
desplegarás para las pruebas de integración o alguna demo.
Guarda log
El de los mensajes de entrada y salida j
de datos.
Organizando los archives WSDL (Web Services Definition Language)
WSDL es un archivo XML estándar utilizado para describir totalmente un servicio web
� Los archivos WSDL pueden publicarse en un registro UDDI para simplificar su distribución
� La mayoría de las herramientas de desarrollo permiten crear un cliente para un servicio a partir del
archivo WSDL que lo describe.
Un archivo WSDL está dividido en cuatro secciones
� El protocolo (HTTP, JMS, etc.), ubicación del servicio y características del mensaje SOAP
� Las operaciones soportadas por el servicio web
� Los mensajes que intercambian cliente y métodos del servicio web al invocar el servicio
� La estructura de los datos incluídos en los mensajes, descritos usando XML
Los archivos WSDL pueden contener hasta cuatro partes
<definitions>
<types>
Si se intercambian tipos complejos, estos se definen en esta sección y
son referenciados por los mensajes. Un m
referenciado por múltiples mensajes.
</types>
<message>
Un mensaje es la estructura de datos eviado a o regresado por un
servicio. Un mensaje puede ser usado por múltiples ports, por lo que
el resultado de un servicio puede ser el input
</message>
<portType>
Para uso exclusivo de los alumnos de CETICSA S.L.
Para realizar pruebas unitarias del servicio web no necesitas desplegarlo. Ahorraras mucho tiempo y ya
desplegarás para las pruebas de integración o alguna demo.
de los mensajes de entrada y salida junto con datos del cliente (ip, usuario), a nivel de fichero o base
Organizando los archives WSDL (Web Services Definition Language)
WSDL es un archivo XML estándar utilizado para describir totalmente un servicio web
icarse en un registro UDDI para simplificar su distribución
La mayoría de las herramientas de desarrollo permiten crear un cliente para un servicio a partir del
Un archivo WSDL está dividido en cuatro secciones que representan:
El protocolo (HTTP, JMS, etc.), ubicación del servicio y características del mensaje SOAP
Las operaciones soportadas por el servicio web
Los mensajes que intercambian cliente y métodos del servicio web al invocar el servicio
los datos incluídos en los mensajes, descritos usando XML-Schema
Los archivos WSDL pueden contener hasta cuatro partes
Si se intercambian tipos complejos, estos se definen en esta sección y
son referenciados por los mensajes. Un mismo tipo puede ser
referenciado por múltiples mensajes.
Un mensaje es la estructura de datos eviado a o regresado por un
servicio. Un mensaje puede ser usado por múltiples ports, por lo que
el resultado de un servicio puede ser el input de otro servicio.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Para realizar pruebas unitarias del servicio web no necesitas desplegarlo. Ahorraras mucho tiempo y ya
unto con datos del cliente (ip, usuario), a nivel de fichero o base
Organizando los archives WSDL (Web Services Definition Language)
WSDL es un archivo XML estándar utilizado para describir totalmente un servicio web
icarse en un registro UDDI para simplificar su distribución
La mayoría de las herramientas de desarrollo permiten crear un cliente para un servicio a partir del
El protocolo (HTTP, JMS, etc.), ubicación del servicio y características del mensaje SOAP
Los mensajes que intercambian cliente y métodos del servicio web al invocar el servicio
Schema
Es en esta sección en la que se describen todas las operaciones del
servicio web con referencias a los mensajes de entrada y salida
enviados y recibidos por cada operación.
</portType>
<binding>
Esta sección define el formato del mensaje SOAP asi como los
protocolos de transporte soportados para accesar el servicio
</binding>
</definitions>
Ejemplo de un archivo WSDL incompleto
<message name="romanNumber">
<part name="term" type="xs:string"/>
</message>
<message name="decimalNumber">
<part name="value" type="xs:nonNegativeInteger"/>
</message>
<portType name="romanNumbers">
<operation name="romanToDecimal">
<input message="romanNumber"/>
<output message="decimalNumber"/>
</operation>
<operation name="decimalToRoma
<input message="decimalNumber"/>
<output message="romanNumber"/>
</operation>
</portType>
Sección de binding para el anterior archivo WSDL
<binding type="romanNumbers" name="rn">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soa
http" />
<operation>
<soap:operation soapAction="http://
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation>
<soap:operation soapAction="http://ejemplos.com/ejer
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
Para uso exclusivo de los alumnos de CETICSA S.L.
Es en esta sección en la que se describen todas las operaciones del
servicio web con referencias a los mensajes de entrada y salida
enviados y recibidos por cada operación.
el formato del mensaje SOAP asi como los
protocolos de transporte soportados para accesar el servicio
Ejemplo de un archivo WSDL incompleto
<part name="term" type="xs:string"/>
name="decimalNumber">
<part name="value" type="xs:nonNegativeInteger"/>
<portType name="romanNumbers">
<operation name="romanToDecimal">
<output message="decimalNumber"/>
<operation name="decimalToRoman">
<input message="decimalNumber"/>
<output message="romanNumber"/>
Sección de binding para el anterior archivo WSDL
<binding type="romanNumbers" name="rn">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/
<soap:operation soapAction="http://ejemplos.com/ejer"/>
tion="http://ejemplos.com/ejer"/>
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Ver Video:
en el Módulo 8 Unidad 2, en la plataforma elearnig
Laboratorio: Buenas prácticas para desarrollar servicios web
Objetivo
Desarrollar un proyecto Web Service y consumirlo desde un proyecto Java Application.
Enunciado
- Realizar un Servicio Web cuya funcionalidad será convertir Monedas.
- Podremos convertir entre diversas monedas a euros y viceversa, de euros a
- Las Monedas que vamos a convertir son:
� DOLAR = 1,26201 Euros
� PESOS = 14,4762 Euros
� RUPIAS = 75,6061 Euros
� YENES = 135,861 Euros
� PESETAS = 166,386 Euros
CREACIÓN SERVICIO WEB MONEDAS:
Crear dos métodos en el servicio web como se muestra en la imag
Para uso exclusivo de los alumnos de CETICSA S.L.
Ver Video: DiseñandoWS,
en el Módulo 8 Unidad 2, en la plataforma elearnig
Laboratorio: Buenas prácticas para desarrollar servicios web
Desarrollar un proyecto Web Service y consumirlo desde un proyecto Java Application.
Realizar un Servicio Web cuya funcionalidad será convertir Monedas.
Podremos convertir entre diversas monedas a euros y viceversa, de euros a
Las Monedas que vamos a convertir son:
CREACIÓN SERVICIO WEB MONEDAS:
Crear dos métodos en el servicio web como se muestra en la imagen:
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
en el Módulo 8 Unidad 2, en la plataforma elearnig
Laboratorio: Buenas prácticas para desarrollar servicios web SOAP.
Desarrollar un proyecto Web Service y consumirlo desde un proyecto Java Application.
Podremos convertir entre diversas monedas a euros y viceversa, de euros a monedas.
Unidad 3: Manejando Excepciones en los Servicios
Objetivos
� Manejar excepciones en servicios web.
� Conocer las excepciones relacionada con los servicios web.
� Utilizar clases de excepciones predefinidas en servicios web.
Introducción
Una excepción es una condición que interrumpe el flujo normal de operaciones dentro de un
programa. Imagina una excepción como una condición de error, un error de programación inesperado,
como una división entre cero o un posible error que ocurra en tiempo
completo" mientras escribe un archivo. Cuando ocurre una excepción, el flujo normal de instrucciones
se rompe. En concreto, se lanza la excepción y el flujo continua en el punto en el que se capturó la
excepción. Al arrojarse la excepción se permite la eliminación del código controlador de excepciones
del flujo regular de operaciones. Si la condición anormal no se controla adecuadamente, pueden
aparecer resultados incorrectos u otras condiciones anormales.
La diferencia entre un buen desarrollo de
en que los errores y problemas se manejan. Es mucho más fácil tratar con los procesos en que todo está
funcionando adecuadamente de lo que es lidiar con los fracasos. Los
estructurados y orientado a objetos proporcionan
Java, los métodos que suelen producir una excepción que indica que
software se escribe para esperar ciertos tipos de errores, y está dispuesta a tomar las medidas oportunas.
En la terminología de SOAP, estos inusuales o
producen cada vez que un método de servicio no es
devuelven resultados correctamente. Hay infinitas razones por qué
comunes que resultan en fallos son
problemas de fondo, y con formato incorrecto mensajes de pet
mecanismos para la generación y el tratamiento de fallos en SOAP
Para uso exclusivo de los alumnos de CETICSA S.L.
Manejando Excepciones en los Servicios
Web
Manejar excepciones en servicios web.
Conocer las excepciones relacionada con los servicios web.
Utilizar clases de excepciones predefinidas en servicios web.
Una excepción es una condición que interrumpe el flujo normal de operaciones dentro de un
programa. Imagina una excepción como una condición de error, un error de programación inesperado,
como una división entre cero o un posible error que ocurra en tiempo de ejecución, como un "disco
completo" mientras escribe un archivo. Cuando ocurre una excepción, el flujo normal de instrucciones
se rompe. En concreto, se lanza la excepción y el flujo continua en el punto en el que se capturó la
la excepción se permite la eliminación del código controlador de excepciones
del flujo regular de operaciones. Si la condición anormal no se controla adecuadamente, pueden
aparecer resultados incorrectos u otras condiciones anormales.
desarrollo de software y un mal desarrollo desoftware e
problemas se manejan. Es mucho más fácil tratar con los procesos en que todo está
adecuadamente de lo que es lidiar con los fracasos. Los lenguajes de programación
y orientado a objetos proporcionan un montón de técnicas para el manejo de errores. En
Java, los métodos que suelen producir una excepción que indica que algo raro ha ocurrido. Un buen
r ciertos tipos de errores, y está dispuesta a tomar las medidas oportunas.
En la terminología de SOAP, estos inusuales o circunstancias excepcionales, se llaman
producen cada vez que un método de servicio no es capaz de procesar los parámetros de entrada y
devuelven resultados correctamente. Hay infinitas razones por qué esto puede ocurrir. Los problemas
comunes que resultan en fallos son el paso de parámetro
problemas de fondo, y con formato incorrecto mensajes de petición SOAP. En esta
mecanismos para la generación y el tratamiento de fallos en SOAP.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Manejando Excepciones en los Servicios
Una excepción es una condición que interrumpe el flujo normal de operaciones dentro de un
programa. Imagina una excepción como una condición de error, un error de programación inesperado,
de ejecución, como un "disco
completo" mientras escribe un archivo. Cuando ocurre una excepción, el flujo normal de instrucciones
se rompe. En concreto, se lanza la excepción y el flujo continua en el punto en el que se capturó la
la excepción se permite la eliminación del código controlador de excepciones
del flujo regular de operaciones. Si la condición anormal no se controla adecuadamente, pueden
y un mal desarrollo desoftware es a menudo la forma
problemas se manejan. Es mucho más fácil tratar con los procesos en que todo está
lenguajes de programación
un montón de técnicas para el manejo de errores. En
algo raro ha ocurrido. Un buen
r ciertos tipos de errores, y está dispuesta a tomar las medidas oportunas.
circunstancias excepcionales, se llaman fallos. Los fallos se
parámetros de entrada y
esto puede ocurrir. Los problemas
parámetros a los métodos,
SOAP. En esta unidad veremos los
Las excepciones podrían ser lanzad
de excepciones que puedan ser lanzados son RuntimeException, RemoteException, SOAPFaultException
y excepciones definidas por el usuario.
El desarrollador de servicios Web podrían intentar lanzar una RuntimeException como
NullPointerException o ArrayIndexOutOfBou
RuntimeException lanzar dentro del servicio Web se considera un ejercicio malo porque
RuntimeException siempre se convertirá en RemoteException en el lado del cliente. Mientras que el
cliente está esperando a coger el RuntimeException después de invocar un servicio Web, recibirá sólo el
RemoteException en lugar de RuntimeException. Finalmente, no puede realizar un correcto manejo de
RuntimeException.
El problema con el lanzamiento de RemoteException es que las
diferentes a interpretar esta excepción en formas diferentes. No es portátil.
SOAPFaultException
La excepción SOAPFaultException representa lo errores producidos
Un SOAPFaultException envuelve un
de errores.El método createFault de javax.xml.soap.SOAPFactory puede utilizarse para crear una
instancia de javax.xml.soap.SOAPFault para uso con el constructor. SOAPBinding contiene un descr
de acceso para los SOAPFactory utilizado por la instancia de enlace.
Tenga en cuenta que el valor de getFault es la única parte de la excepción que se utiliza cuando se
searializa un error de SOAP.
La excepción que proceda la aplicación de servicio Web podría lanzar es SOAPFaultException. El
SOAPFaultException consta de cuatro partes: faultcode, faultstring, el actor, y el detalle. Esta excepción
le puede dar la información completa acerca de la co
error que ha sucedido a causa de el servidor, cliente, o algo más. Por ejemplo, cuando un cliente no
proporciona la información de seguridad, tales como nombre de usuario y contraseña en el HTTP /
encabezado SOAP, pero los mandatos servicio de ellos, la lógica de tratamiento previo en la
implementación del servicio, obviamente, podría desencadenarse una excepción de autenticación.
Este tipo de error es considerado como un error del cliente. El faultstr
correspondiente de la condición de error que ha sucedido. Este mensaje de cadena es legible por
humanos y el desarrollador puede depurar el problema con la ayuda de la misma. El elemento de
detalle contiene el mensaje de excep
Para uso exclusivo de los alumnos de CETICSA S.L.
Tipos de excepciones con servicios web
Las excepciones podrían ser lanzadas dentro de un servicio Web por diversas razones. Los posibles tipos
epciones que puedan ser lanzados son RuntimeException, RemoteException, SOAPFaultException
y excepciones definidas por el usuario.
El desarrollador de servicios Web podrían intentar lanzar una RuntimeException como
NullPointerException o ArrayIndexOutOfBoundsException dentro del servicio Web. Pero,
RuntimeException lanzar dentro del servicio Web se considera un ejercicio malo porque
RuntimeException siempre se convertirá en RemoteException en el lado del cliente. Mientras que el
oger el RuntimeException después de invocar un servicio Web, recibirá sólo el
RemoteException en lugar de RuntimeException. Finalmente, no puede realizar un correcto manejo de
El problema con el lanzamiento de RemoteException es que las bibliotecas de cliente secundarios
diferentes a interpretar esta excepción en formas diferentes. No es portátil.
La excepción SOAPFaultException representa lo errores producidos por SOAP 1.1 o 1.2.
Un SOAPFaultException envuelve un SAAJ SOAPFault que administra la representación SOAP específica
de errores.El método createFault de javax.xml.soap.SOAPFactory puede utilizarse para crear una
instancia de javax.xml.soap.SOAPFault para uso con el constructor. SOAPBinding contiene un descr
de acceso para los SOAPFactory utilizado por la instancia de enlace.
Tenga en cuenta que el valor de getFault es la única parte de la excepción que se utiliza cuando se
La excepción que proceda la aplicación de servicio Web podría lanzar es SOAPFaultException. El
SOAPFaultException consta de cuatro partes: faultcode, faultstring, el actor, y el detalle. Esta excepción
le puede dar la información completa acerca de la condición de error. El faultcode le puede decir si el
error que ha sucedido a causa de el servidor, cliente, o algo más. Por ejemplo, cuando un cliente no
proporciona la información de seguridad, tales como nombre de usuario y contraseña en el HTTP /
ezado SOAP, pero los mandatos servicio de ellos, la lógica de tratamiento previo en la
implementación del servicio, obviamente, podría desencadenarse una excepción de autenticación.
Este tipo de error es considerado como un error del cliente. El faultstring contiene la descripción
correspondiente de la condición de error que ha sucedido. Este mensaje de cadena es legible por
humanos y el desarrollador puede depurar el problema con la ayuda de la misma. El elemento de
detalle contiene el mensaje de excepción real y su completo seguimiento de la pila. En realidad, el
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
con servicios web
s dentro de un servicio Web por diversas razones. Los posibles tipos
epciones que puedan ser lanzados son RuntimeException, RemoteException, SOAPFaultException
El desarrollador de servicios Web podrían intentar lanzar una RuntimeException como
ndsException dentro del servicio Web. Pero,
RuntimeException lanzar dentro del servicio Web se considera un ejercicio malo porque
RuntimeException siempre se convertirá en RemoteException en el lado del cliente. Mientras que el
oger el RuntimeException después de invocar un servicio Web, recibirá sólo el
RemoteException en lugar de RuntimeException. Finalmente, no puede realizar un correcto manejo de
bibliotecas de cliente secundarios
SOAP 1.1 o 1.2.
SAAJ SOAPFault que administra la representación SOAP específica
de errores.El método createFault de javax.xml.soap.SOAPFactory puede utilizarse para crear una
instancia de javax.xml.soap.SOAPFault para uso con el constructor. SOAPBinding contiene un descriptor
Tenga en cuenta que el valor de getFault es la única parte de la excepción que se utiliza cuando se
La excepción que proceda la aplicación de servicio Web podría lanzar es SOAPFaultException. El
SOAPFaultException consta de cuatro partes: faultcode, faultstring, el actor, y el detalle. Esta excepción
ndición de error. El faultcode le puede decir si el
error que ha sucedido a causa de el servidor, cliente, o algo más. Por ejemplo, cuando un cliente no
proporciona la información de seguridad, tales como nombre de usuario y contraseña en el HTTP /
ezado SOAP, pero los mandatos servicio de ellos, la lógica de tratamiento previo en la
implementación del servicio, obviamente, podría desencadenarse una excepción de autenticación.
ing contiene la descripción
correspondiente de la condición de error que ha sucedido. Este mensaje de cadena es legible por
humanos y el desarrollador puede depurar el problema con la ayuda de la misma. El elemento de
ción real y su completo seguimiento de la pila. En realidad, el
elemento de detalle es una instancia de la clase javax.xml.soap.Detail y se pueden crear utilizando el
API javax.xml.soap.SOAPFactory.createDetail ().
Ejemplo de control de Excepción
Creación del servicio
Abrir NetBeans y elegir un proyecto nuevo de tipo aplicación web.
Seleccionamos usar el proyecto con Apache Tomcat
Para uso exclusivo de los alumnos de CETICSA S.L.
elemento de detalle es una instancia de la clase javax.xml.soap.Detail y se pueden crear utilizando el
API javax.xml.soap.SOAPFactory.createDetail ().
Ejemplo de control de Excepción SOAPFaultException
Abrir NetBeans y elegir un proyecto nuevo de tipo aplicación web.
Seleccionamos usar el proyecto con Apache Tomcat
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
elemento de detalle es una instancia de la clase javax.xml.soap.Detail y se pueden crear utilizando el
Y por último, no seleccinamos nngún Framework.
Agregamos a nuestro proyecto un archivo de tipo Web
WSSumando y elegimos File, new y Web Service.
Para uso exclusivo de los alumnos de CETICSA S.L.
Y por último, no seleccinamos nngún Framework.
Agregamos a nuestro proyecto un archivo de tipo Web Service. Botón derecho sobre nuestro proyecto
WSSumando y elegimos File, new y Web Service.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Service. Botón derecho sobre nuestro proyecto
Indicamos que lo guarde en el paquete ControlExcepciones.
Añadimos tres operaciones al servicio como se muestra en el diseñadore de WebService:
El código que incluiremos en los tres métodos que compone nuestro WebService, serán operaciones
para sumar, restar y multiuplicar dos números introducidos como parámetros.
Para uso exclusivo de los alumnos de CETICSA S.L.
Indicamos que lo guarde en el paquete ControlExcepciones.
Añadimos tres operaciones al servicio como se muestra en el diseñadore de WebService:
código que incluiremos en los tres métodos que compone nuestro WebService, serán operaciones
para sumar, restar y multiuplicar dos números introducidos como parámetros.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadimos tres operaciones al servicio como se muestra en el diseñadore de WebService:
código que incluiremos en los tres métodos que compone nuestro WebService, serán operaciones
package ControlExcepciones;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService()
public class WSSumador {
@WebMethod(operationName = "sumar", action = "sumar")
public int sumar(@WebParam(name="a") int a, @WebParam(name="b") int b)
{
return a + b;
}
@WebMethod(operationName = "restar", action = "restar")
public int restar(@WebParam(name="a") int a, @WebParam(name="b") int b)
{
return a - b;
}
@WebMethod (operationName = "multiplicar")
public int multiplicar (@WebParam(name="x") int a, @WebParam(name="b") int b)
{
return a * b;
}
}
Consumir el servicio
Creamos un proyecto web con NetBeans y los llamamos ConsumirWsSumador.
Para uso exclusivo de los alumnos de CETICSA S.L.
@WebMethod(operationName = "sumar", action = "sumar")
public int sumar(@WebParam(name="a") int a, @WebParam(name="b") int b)
@WebMethod(operationName = "restar", action = "restar")
public int restar(@WebParam(name="a") int a, @WebParam(name="b") int b)
@WebMethod (operationName = "multiplicar")
c int multiplicar (@WebParam(name="x") int a, @WebParam(name="b") int b)
Creamos un proyecto web con NetBeans y los llamamos ConsumirWsSumador.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
public int sumar(@WebParam(name="a") int a, @WebParam(name="b") int b)
public int restar(@WebParam(name="a") int a, @WebParam(name="b") int b)
c int multiplicar (@WebParam(name="x") int a, @WebParam(name="b") int b)
Seleccionamos el servidor Apache Tomcat.
Dejamos sin seleccionar Framework.
Añadiremos a nuestro proyecto web un archivo de tipo Web Service Client, nos pedirá el Web Sevrvice
al que nos queremos conectar; pulsaremos sobre la opción proyect, examinaremos y seleccionaremos
el Web Service WSSumador.
Para uso exclusivo de los alumnos de CETICSA S.L.
Tomcat.
Dejamos sin seleccionar Framework.
Añadiremos a nuestro proyecto web un archivo de tipo Web Service Client, nos pedirá el Web Sevrvice
al que nos queremos conectar; pulsaremos sobre la opción proyect, examinaremos y seleccionaremos
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadiremos a nuestro proyecto web un archivo de tipo Web Service Client, nos pedirá el Web Sevrvice
al que nos queremos conectar; pulsaremos sobre la opción proyect, examinaremos y seleccionaremos
El archivo WSDL que generará:
<?xml version='1.0' encoding='UTF-8'?><!
version is JAX-WS _
RI 2.2-hudson-740-. --><!-- Generated by JAX
2.2-hudson-740-._
--><definitions xmlns:wsu="http://docs.oasis
1.0.xsd" xmlns:wsp_
="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/po
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://ControlExcepciones/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/" targetNam
name="WSSumadorService">
<types>
<xsd:schema>
<xsd:import namespace="http://ControlExcepciones/"
schemaLocation="http://localhost:8084/WSSumador/WSSumador?xsd=1" />
</xsd:schema>
</types>
<message name="sumar">
<part name="parameters" element="tns:sumar" />
</message>
<message name="sumarResponse">
<part name="parameters" element="tns:sumarResponse" />
</message>
<message name="restar">
<part name="parameters" element="tns:restar" />
</message>
<message name="restarResponse">
<part name="parameters" element="tns:restarResponse" />
</message>
<message name="multiplicar">
<part name="parameters" element="tns:multiplicar" />
Para uso exclusivo de los alumnos de CETICSA S.L.
8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's
Generated by JAX-WS RI at http://jax-ws.dev.java.net.
><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/po
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" _
xmlns:tns="http://ControlExcepciones/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ControlExcepciones/"
<xsd:import namespace="http://ControlExcepciones/"
schemaLocation="http://localhost:8084/WSSumador/WSSumador?xsd=1" />
ame="parameters" element="tns:sumar" />
<message name="sumarResponse">
<part name="parameters" element="tns:sumarResponse" />
<part name="parameters" element="tns:restar" />
<part name="parameters" element="tns:restarResponse" />
<part name="parameters" element="tns:multiplicar" />
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
ws.dev.java.net. RI's
RI's version is JAX-WS RI
-wss-wssecurity-utility-
policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" _
xmlns:tns="http://ControlExcepciones/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" _
espace="http://ControlExcepciones/" _
</message>
<message name="multiplicarResponse">
<part name="parameters" element="tns
</message>
<portType name="WSSumador">
<operation name="sumar">
<input wsam:Action="sumar" message="tns:sumar" />
<output wsam:Action="http://ControlExcepciones/WSSumador/sumarResponse"
message="tns:sumarResponse" />
</operation>
<operation name="restar">
<input wsam:Action="restar" message="tns:restar" />
<output wsam:Action="http://ControlExcepciones/WSSumador/restarResponse"
message="tns:restarResponse" />
</operation>
<operation name="multiplicar">
<input wsam:Action="http://ControlExcepciones/WSSumador/multiplicarRequest"
message="tns:multiplicar" />
<output wsam:Action="http://ControlExcepciones/WSSumador/multiplicarResponse"
message="tns:multiplicarResponse" />
</operation>
</portType>
<binding name="WSSumadorPortBinding" type
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<operation name="sumar">
<soap:operation soapAction="sumar" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="restar">
<soap:operation soapAction="restar" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="multiplicar">
<soap:operation soapAction="" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="WSSumadorService">
Para uso exclusivo de los alumnos de CETICSA S.L.
<message name="multiplicarResponse">
<part name="parameters" element="tns:multiplicarResponse" />
<input wsam:Action="sumar" message="tns:sumar" />
<output wsam:Action="http://ControlExcepciones/WSSumador/sumarResponse"
<input wsam:Action="restar" message="tns:restar" />
<output wsam:Action="http://ControlExcepciones/WSSumador/restarResponse"
trolExcepciones/WSSumador/multiplicarRequest"
<output wsam:Action="http://ControlExcepciones/WSSumador/multiplicarResponse"
message="tns:multiplicarResponse" />
<binding name="WSSumadorPortBinding" type="tns:WSSumador">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<soap:operation soapAction="sumar" />
<soap:operation soapAction="restar" />
<service name="WSSumadorService">
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
trolExcepciones/WSSumador/multiplicarRequest"
<output wsam:Action="http://ControlExcepciones/WSSumador/multiplicarResponse"
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<port name="WSSumadorPort" binding="tns:WSSumadorPortBinding">
<soap:address location="http://localhost:8084/WSSumador/WSSumador" />
</port>
</service>
</definitions>
Agregaremos una página html a nuestro proyecto para que el usuarko introduzca en dos cajas de texto
los parámetros a pasar a los métodos del WebService.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF
</head>
<body>
<h1>Control de excepciones en WebServices</h1>
<form name="form1" action="resultado.jsp">
<input type="text" name="caja1" size="3"/>+
<input type="text" name="caja2" size="3"/>=
<input type="submit" value="Enviar"/>
</form>
</body>
Al pulsar sobre el botón de submit, llamaremos una página jsp que será la encargada de recoger los
valores introducidos en las dos cajas de texto y consumir el método sumar de nuestro Web Service.
Al solicitar el Web Service, comprobaremos como estamos controlando la excepción
SOAPFaultException, ésta exception se puede producir habitualmente en el consumo de servicios web si
se produce un error al intentar autenticarnos, realizar solicitudes,…
Para uso exclusivo de los alumnos de CETICSA S.L.
<port name="WSSumadorPort" binding="tns:WSSumadorPortBinding">
location="http://localhost:8084/WSSumador/WSSumador" />
Agregaremos una página html a nuestro proyecto para que el usuarko introduzca en dos cajas de texto
los parámetros a pasar a los métodos del WebService.
//W3C//DTD HTML 4.01 Transitional//EN">
Type" content="text/html; charset=UTF-8">
<h1>Control de excepciones en WebServices</h1>
form1" action="resultado.jsp">
<input type="text" name="caja1" size="3"/>+
<input type="text" name="caja2" size="3"/>=
<input type="submit" value="Enviar"/>
submit, llamaremos una página jsp que será la encargada de recoger los
valores introducidos en las dos cajas de texto y consumir el método sumar de nuestro Web Service.
Al solicitar el Web Service, comprobaremos como estamos controlando la excepción
, ésta exception se puede producir habitualmente en el consumo de servicios web si
se produce un error al intentar autenticarnos, realizar solicitudes,…
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Agregaremos una página html a nuestro proyecto para que el usuarko introduzca en dos cajas de texto
submit, llamaremos una página jsp que será la encargada de recoger los
valores introducidos en las dos cajas de texto y consumir el método sumar de nuestro Web Service.
Al solicitar el Web Service, comprobaremos como estamos controlando la excepción
, ésta exception se puede producir habitualmente en el consumo de servicios web si
<%@page contentType="text/html" pageEncoding="UTF
import="javax.xml.rpc.soap.SOAPFaultException"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF
<title>JSP Page</title>
</head>
<body>
<h1>RESULTADO: </h1>
<%
try{
int a = Integer.parseInt(request.getParameter("caja1"));
int b = Integer.parseInt(request.getParameter("caja2"));
controlexcepciones.WSSumadorService service = new controlexcepciones.WSSumadorService();
controlexcepciones.WSSumador port = service.getWSSumadorPort();
out.println(port.sumar(a, b));
} catch (SOAPFaultException se) {out.println("Fallo de autenticación");
out.println(""); out.println(se); }%>
</body>
</html>
Para uso exclusivo de los alumnos de CETICSA S.L.
<%@page contentType="text/html" pageEncoding="UTF-8"
import="javax.xml.rpc.soap.SOAPFaultException"%>
//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Type" content="text/html; charset=UTF-8">
int a = Integer.parseInt(request.getParameter("caja1"));
int b = Integer.parseInt(request.getParameter("caja2"));
trolexcepciones.WSSumadorService service = new controlexcepciones.WSSumadorService();
controlexcepciones.WSSumador port = service.getWSSumadorPort();
} catch (SOAPFaultException se) {out.println("Fallo de autenticación");
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
trolexcepciones.WSSumadorService service = new controlexcepciones.WSSumadorService();
Aunque SOAPFaultException da la información necesaria que se necesita para depurar el problema, el
cliente de servicio Web puede que quiera realizar algo más con el error que se ha producido. La opción
que disponemos es tener tener una descripción de texto
produjo. La otra posibilidad podría ser la de contar con el apoyo de internacionalización de los
mensajes de error. Al proporcionar la descripción de texto en idiomas distintos del Inglés, se podría tratar
de responder a las necesidades de todos los grupos de personas.
Para lograr los objetivos podríamos recurrir a una excepción definida por el usuario con un formato
específico que fuera lanzado en el servicio. La excepción defi
servicio Web está mapeada en el elemento wsdl: fallo en el Web Services Description Language (WSDL)
del servicio web. Se podía ver el elemento de culpa como uno de los elementos secundarios del
elemento de operación de la portType. Los otros dos elementos secundarios de la operación son de
entrada y salida.
El elemento fault, define el formato de resumen del mensaje de error que pueden ser lanzados por el
servicio Web.
El elemento wsdl:messages relativos a WSDL:fau
del mensaje podría ser un XMLType complexType o simple.
En el siguiente ejemplo incluimos una excepción definida por el usuario, MyCustomException, se
dedicará a manejar mejor los mensajes de error.
apropiado que es como se define en la definición WSDL.
siguientes:
Código de error, que contiene una de cinco letras identificativo y un identificador de tres
Por ejemplo, GENEX001 podría significar un error genérico, mientras que AUTEX001 podría significar un
error de autenticación.
Texto descriptivo del error, incluyendo variables de sustitución (mencionado como {0}, {1}, y así
sucesivamente)
Por ejemplo, la descripción de texto correspondiente Código de error GENEX001 será algo así como "El
número que ha introducido es {0}."
Una lista de valores correspondientes a las variables de sustitución se define en el texto anterior.
Por ejemplo, para el caso anterior, la lista de variables que contienen un solo valor (por ejemplo 1)
porque la descripción del texto anterior contiene sólo una variable de sustitución.
Después de procesar el texto usando la lógica pertinentes, la descripción del texto fina
que ha introducido es 1."
Los fallos pueden ser identificados, utilizando el código de error, sin necesidad de aplicaciones, y
además se podrá comprender el independientemente del idioma.
La descripción del texto se puede definir en muc
colocar en consecuencia de manera independiente del lenguaje.
Los servicios web ofrecen soporte de internacionalización.
Las excepciones lanzadas deben usar la anotación javax.xml.ws.WebFault
name: nombre en wsdl.
targetNamespace. Espacio de nombres en wsdl.
Por la forma en la que JAX-WS define el mapping de Exceptions java a WSDL y viceversa, es
conveniente que las Excepciones utilizadas cumplan las siguientes reglas:
Para uso exclusivo de los alumnos de CETICSA S.L.
Excepciones predefinidas en servicios web
Aunque SOAPFaultException da la información necesaria que se necesita para depurar el problema, el
cliente de servicio Web puede que quiera realizar algo más con el error que se ha producido. La opción
que disponemos es tener tener una descripción de texto configurables y dinámica del error que se
produjo. La otra posibilidad podría ser la de contar con el apoyo de internacionalización de los
mensajes de error. Al proporcionar la descripción de texto en idiomas distintos del Inglés, se podría tratar
sponder a las necesidades de todos los grupos de personas. La lista puede crecer más y más.
Para lograr los objetivos podríamos recurrir a una excepción definida por el usuario con un formato
específico que fuera lanzado en el servicio. La excepción definida por el usuario lanzado dentro del
servicio Web está mapeada en el elemento wsdl: fallo en el Web Services Description Language (WSDL)
del servicio web. Se podía ver el elemento de culpa como uno de los elementos secundarios del
de la portType. Los otros dos elementos secundarios de la operación son de
El elemento fault, define el formato de resumen del mensaje de error que pueden ser lanzados por el
El elemento wsdl:messages relativos a WSDL:fault sólo puede contener una parte del mensaje, y la parte
del mensaje podría ser un XMLType complexType o simple.
En el siguiente ejemplo incluimos una excepción definida por el usuario, MyCustomException, se
dedicará a manejar mejor los mensajes de error. El MyCustomException contiene un mensaje de error
apropiado que es como se define en la definición WSDL. El mensaje de error contiene las tres partes
Código de error, que contiene una de cinco letras identificativo y un identificador de tres
Por ejemplo, GENEX001 podría significar un error genérico, mientras que AUTEX001 podría significar un
Texto descriptivo del error, incluyendo variables de sustitución (mencionado como {0}, {1}, y así
ejemplo, la descripción de texto correspondiente Código de error GENEX001 será algo así como "El
Una lista de valores correspondientes a las variables de sustitución se define en el texto anterior.
caso anterior, la lista de variables que contienen un solo valor (por ejemplo 1)
porque la descripción del texto anterior contiene sólo una variable de sustitución.
Después de procesar el texto usando la lógica pertinentes, la descripción del texto fina
Los fallos pueden ser identificados, utilizando el código de error, sin necesidad de aplicaciones, y
además se podrá comprender el independientemente del idioma.
La descripción del texto se puede definir en muchos idiomas, y las variables correspondientes se pueden
colocar en consecuencia de manera independiente del lenguaje.
Los servicios web ofrecen soporte de internacionalización.
Las excepciones lanzadas deben usar la anotación javax.xml.ws.WebFault
targetNamespace. Espacio de nombres en wsdl.
WS define el mapping de Exceptions java a WSDL y viceversa, es
conveniente que las Excepciones utilizadas cumplan las siguientes reglas:
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Excepciones predefinidas en servicios web
Aunque SOAPFaultException da la información necesaria que se necesita para depurar el problema, el
cliente de servicio Web puede que quiera realizar algo más con el error que se ha producido. La opción
configurables y dinámica del error que se
produjo. La otra posibilidad podría ser la de contar con el apoyo de internacionalización de los
mensajes de error. Al proporcionar la descripción de texto en idiomas distintos del Inglés, se podría tratar
La lista puede crecer más y más.
Para lograr los objetivos podríamos recurrir a una excepción definida por el usuario con un formato
nida por el usuario lanzado dentro del
servicio Web está mapeada en el elemento wsdl: fallo en el Web Services Description Language (WSDL)
del servicio web. Se podía ver el elemento de culpa como uno de los elementos secundarios del
de la portType. Los otros dos elementos secundarios de la operación son de
El elemento fault, define el formato de resumen del mensaje de error que pueden ser lanzados por el
lt sólo puede contener una parte del mensaje, y la parte
En el siguiente ejemplo incluimos una excepción definida por el usuario, MyCustomException, se
El MyCustomException contiene un mensaje de error
El mensaje de error contiene las tres partes
Código de error, que contiene una de cinco letras identificativo y un identificador de tres dígitos
Por ejemplo, GENEX001 podría significar un error genérico, mientras que AUTEX001 podría significar un
Texto descriptivo del error, incluyendo variables de sustitución (mencionado como {0}, {1}, y así
ejemplo, la descripción de texto correspondiente Código de error GENEX001 será algo así como "El
Una lista de valores correspondientes a las variables de sustitución se define en el texto anterior.
caso anterior, la lista de variables que contienen un solo valor (por ejemplo 1)
porque la descripción del texto anterior contiene sólo una variable de sustitución.
Después de procesar el texto usando la lógica pertinentes, la descripción del texto final sería "El número
Los fallos pueden ser identificados, utilizando el código de error, sin necesidad de aplicaciones, y
hos idiomas, y las variables correspondientes se pueden
WS define el mapping de Exceptions java a WSDL y viceversa, es
La información encapsulada en la Excepción debe ir en un objeto separado.
Este objeto debe ser obtenido a través del método getFaultInfo.
De esta forma, las excepciones lanzadas por los stubs del cliente serán iguales que las usadas en el
servicio.
Ejemplo de servicio web con manejo de
Este servicio tiene dos entradas: int numero y el mensaje de cadena. Si el número es 1,se lanzará un
SOAPFaultException. Si el número es 2, MyCustomException será lanzado, de lo contrario, el método
devolverá éxito.
package nuevo;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.Detail;
public class NewWebService{
public String echo(int number, String message)
throws MyCustomException{
System.out.println("Numero: "+number+",
switch(number){
case 2:
throw new MyCustomException(
"GENEX001",
"El número que ha introducido es {0}",
new String[]{String.valueOf(number)}
);
case 1:
Detail detail = null;
try{
detail = SOAPFactory.newInstance().createDetail();
//añadir mensajes de error
detail.addTextNode(
"Opción SOAPFaultException");
}catch(SOAPException ex){
throw new MyCustomException(
"SEREX001",
"Error al crear el elemento",
new String(){});
}
throw new javax.xml.rpc.soap.SOAPFaultException(
new javax.xml.namespace.QName("env.Server"),
"El número que ha introducido es "+number,
"NO ACTOR",
detail);
}
return "SUCCESS";
}
}
Para uso exclusivo de los alumnos de CETICSA S.L.
Excepción debe ir en un objeto separado.
Este objeto debe ser obtenido a través del método getFaultInfo.
De esta forma, las excepciones lanzadas por los stubs del cliente serán iguales que las usadas en el
Ejemplo de servicio web con manejo de excepciones
Este servicio tiene dos entradas: int numero y el mensaje de cadena. Si el número es 1,se lanzará un
SOAPFaultException. Si el número es 2, MyCustomException será lanzado, de lo contrario, el método
javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
public String echo(int number, String message)
System.out.println("Numero: "+number+", Mensaje: " + message);
throw new MyCustomException(
"El número que ha introducido es {0}",
new String[]{String.valueOf(number)}
detail = SOAPFactory.newInstance().createDetail();
"Opción SOAPFaultException");
throw new MyCustomException(
"Error al crear el elemento",
new javax.xml.rpc.soap.SOAPFaultException(
new javax.xml.namespace.QName("env.Server"),
"El número que ha introducido es "+number,
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
De esta forma, las excepciones lanzadas por los stubs del cliente serán iguales que las usadas en el
Este servicio tiene dos entradas: int numero y el mensaje de cadena. Si el número es 1,se lanzará un
SOAPFaultException. Si el número es 2, MyCustomException será lanzado, de lo contrario, el método
Excepciones personalizadas en Servicios Web
En Java podemos crear una excepción propia creanco una clase que extienda de la clase Exception.
En este ejemplo creamos una exception llama OpcionErroneaException que hereda de la clase
exception.
public class OpcionErroneaException extends Exception{
public OpcionErroneaException(){
}
public String mensaje(){
return("OPCION ERRONEA");
}
}
Podemos crear una clase en Java que lance la excepción creada por el programador.
public class LeerDatos3{
public static void main(String args[]) throws IOException{
BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in));
String numero="";
String continua="";
try{
do{
System.out.println("Introduzca un numero:");
if (num%2==0){
}else{
System.out.println("El numero: "+ num +" es impar");
}
System.out.println("¿Desea continuar (s/n)?");
continua= teclado.readLine();
if(!continua.equals("s") && !continua.equals("n")){
throw new OpcionErroneaException();
}
}while (continua.equals("s") || continua.equals("S"));
//Para compara se pone .equals
}catch (NumberFormatException e){
System.out.println("Debe introducir numeros");
}catch (OpcionErroneaException e){
Para uso exclusivo de los alumnos de CETICSA S.L.
cepciones personalizadas en Servicios Web
En Java podemos crear una excepción propia creanco una clase que extienda de la clase Exception.
En este ejemplo creamos una exception llama OpcionErroneaException que hereda de la clase
ionErroneaException extends Exception{
public OpcionErroneaException(){
return("OPCION ERRONEA");
Podemos crear una clase en Java que lance la excepción creada por el programador.
static void main(String args[]) throws IOException{
BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Introduzca un numero:");
numero=teclado.readLine();
int num=Integer.parseInt(numero);
System.out.println("El numero: "+ num +" es par");
System.out.println("El numero: "+ num +" es impar");
rintln("¿Desea continuar (s/n)?");
continua= teclado.readLine();
if(!continua.equals("s") && !continua.equals("n")){
throw new OpcionErroneaException();
}while (continua.equals("s") || continua.equals("S"));
//Para compara se pone .equals
}catch (NumberFormatException e){
System.out.println("Debe introducir numeros");
}catch (OpcionErroneaException e){
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
cepciones personalizadas en Servicios Web
En Java podemos crear una excepción propia creanco una clase que extienda de la clase Exception.
En este ejemplo creamos una exception llama OpcionErroneaException que hereda de la clase
Podemos crear una clase en Java que lance la excepción creada por el programador.
BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in));
System.out.println("El numero: "+ num +" es par");
System.out.println("Debe introducir numeros");
teclado.readLine();
}
}
}
Dentro de los Web Service también podemos hacer uso de
Podríamos crear una excepción propia con un esqueleto como el que mostramos a continuación:
public class ErrorWebService extends Exception {
public ErrorWebService (String code) { } public String getA() {...} public void setA() {..} public String getB() {...} public void setB() {..} }
Podemos lanzarlo desde el Web Service como en el siguiente ejemplo:
@WebService public class MyWS { public MyWS() { } public Response getSomething(String id) throws ErrorWebService {
throw new ErrorWebService (id); } }
Ver Video:
en el Módulo 8. Unidad 3, en la plataforma elearning
Para uso exclusivo de los alumnos de CETICSA S.L.
System.out.println(e.mensaje());
teclado.readLine();
Dentro de los Web Service también podemos hacer uso de la creación de excepciones propias.
Podríamos crear una excepción propia con un esqueleto como el que mostramos a continuación:
public class ErrorWebService extends Exception
public ErrorWebService (String code)
Podemos lanzarlo desde el Web Service como en el siguiente ejemplo:
Response getSomething(String id) throws ErrorWebService
throw new ErrorWebService (id);
Video: Excepciones WebServices,
en el Módulo 8. Unidad 3, en la plataforma elearning
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
System.out.println(e.mensaje());
la creación de excepciones propias.
Podríamos crear una excepción propia con un esqueleto como el que mostramos a continuación:
en el Módulo 8. Unidad 3, en la plataforma elearning
Objetivos
� Crear un proyecto Java Application que nos permita consumir el Web Service del Catastro.
� Controlaremos las posibles excepciones que se produzcan al consumir el servicio.
Enunciado:
Abrir un proyecto Java Application para poder consumir el servicio web
siguiente dirección:
https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?WSDL
1. Crear un proyecto Java Application y llamarlo ConsumirServicioWebCatastro.
Para uso exclusivo de los alumnos de CETICSA S.L.
Laboratorio: Excepciones WebServices
Crear un proyecto Java Application que nos permita consumir el Web Service del Catastro.
Controlaremos las posibles excepciones que se produzcan al consumir el servicio.
Abrir un proyecto Java Application para poder consumir el servicio web del catastro ubicado en la
https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?WSDL
Crear un proyecto Java Application y llamarlo ConsumirServicioWebCatastro.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Laboratorio: Excepciones WebServices
Crear un proyecto Java Application que nos permita consumir el Web Service del Catastro.
Controlaremos las posibles excepciones que se produzcan al consumir el servicio.
del catastro ubicado en la
https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?WSDL
Crear un proyecto Java Application y llamarlo ConsumirServicioWebCatastro.
2. Agregar un nuevo elemento de tipo Web Service
3. Añadir la dirección al servicio web del catastro.
Para uso exclusivo de los alumnos de CETICSA S.L.
Agregar un nuevo elemento de tipo Web Service Client.
Añadir la dirección al servicio web del catastro.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
4. Incluir la llamada a los métodos del servicio.
5. Selecccionar el método ObtenerProvincias que es el que quere mos invocar.
Para uso exclusivo de los alumnos de CETICSA S.L.
Incluir la llamada a los métodos del servicio.
Selecccionar el método ObtenerProvincias que es el que quere mos invocar.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Selecccionar el método ObtenerProvincias que es el que quere mos invocar.
6. Llamar al método obtenerProvincias que nos genera desde el
package consumirserviciowebcatastro;
public class Principal {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Provincias p=obtenerProvincias();
}
private static Provincias obtenerProvincias() {
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
tro service = new_
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
tro();
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
troSoap port =_
service.getCallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroSoap12();
return port.obtenerProvincias();
}
}
7. Si el servicio web está caído obtendremos el siguiente error.
8. Controlaremos el error para avisar al usuario.
package consumirserviciowebcatastro;
public class Principal {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try{
Provincias p=obtenerProvincias();
}catch(javax.xml.ws.WebServiceException e){
System.out.println("Web Service detenido");
Para uso exclusivo de los alumnos de CETICSA S.L.
Llamar al método obtenerProvincias que nos genera desde el main.
package consumirserviciowebcatastro;
* @param args the command line arguments
public static void main(String[] args) {
Provincias p=obtenerProvincias();
enerProvincias() {
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
service.getCallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroSoap12();
Si el servicio web está caído obtendremos el siguiente error.
Controlaremos el error para avisar al usuario.
package consumirserviciowebcatastro;
* @param args the command line arguments
atic void main(String[] args) {
Provincias p=obtenerProvincias();
}catch(javax.xml.ws.WebServiceException e){
System.out.println("Web Service detenido");
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
service.getCallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroSoap12();
}
}
private static Provincias obtenerProvincias() {
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
tro service = new _
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Cata
tro();
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
troSoap port = _
service.getCallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroSoap12();
return port.obtenerProvincias();
}
}
Para uso exclusivo de los alumnos de CETICSA S.L.
static Provincias obtenerProvincias() {
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Cata
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
service.getCallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroSoap12();
;
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
consumirserviciowebcatastro.CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catas
service.getCallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroSoap12();
Unidad 4: Seguridad en los Servicios Web
Objetivos
� Describir requerimientos y soluciones en seguridad de servicios web.
� Entender los tipos de protecciones de un servicio web.
Introducción
Hoy en día, considerar la tecnología de web
inconcebible, sobre todo si se trata de comunicación de información referida a lógica de negocios,
donde la información debe ser confiable y segura.
A su vez, varios aspectos surgidos desde el mismo
services deben ser mantenidos al momento de la incorporación de
como ser por ejemplo de su sencillez y de la
Con esto en mente surge WS-*. Parte importante de este conjunto de especificaciones
directamente vinculada a la seguridad en web services, siendo WS
de las demás, ya que las demás especificaciones o bien
mecanismos definidos en WS-Security.
WS-Security
WS-Security define extensiones a SOAP que permiten el pasaje de security tokens los
autentifican a los clientes de los servicios. De esta forma se puede
y la confidencialidad de los mismos;
enviados se mantengan inalterados durante la transmisión, y como confidencialidad al hecho de que
ningún agente externo a la comunicación pueda obt
(problema conocido como “man-in
WS-Security define y estandariza la forma de uso de mecanismos de seguridad
adaptándolos a su funcionamiento con los mensajes SOAP. Quizás lo más fu
Security es el elemento que se embebe en el encabezado del mensaje SOAP. La estructura de
un mensaje SOAP que incluye este elemento se muestra en el ejemplo 1, a continuación:
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<s:Header>
<wsse:Security>
•••
</wsse:Security>
</s:Header>
<s:Body>
•••
</s:Body>
</s:Envelope>
La especificación define asimismo como enviar
certificado X.509 o un ticket Kerberos, por nombrar los más conocidos y
Para uso exclusivo de los alumnos de CETICSA S.L.
Seguridad en los Servicios Web
Describir requerimientos y soluciones en seguridad de servicios web.
Entender los tipos de protecciones de un servicio web.
Hoy en día, considerar la tecnología de web services sin considerar los aspectos de seguridad es algo
inconcebible, sobre todo si se trata de comunicación de información referida a lógica de negocios,
donde la información debe ser confiable y segura.
A su vez, varios aspectos surgidos desde el mismo momento de la concepción de la
services deben ser mantenidos al momento de la incorporación de algún mecanismo de seguridad,
como ser por ejemplo de su sencillez y de la interoperabilidad entre plataformas y fabricantes.
*. Parte importante de este conjunto de especificaciones
directamente vinculada a la seguridad en web services, siendo WS-Security quizá
de las demás, ya que las demás especificaciones o bien complementan o bien extien
Security.
Security define extensiones a SOAP que permiten el pasaje de security tokens los
autentifican a los clientes de los servicios. De esta forma se puede asegurar la integridad d
y la confidencialidad de los mismos; entendiendo como integridad al hecho de que los mensajes
inalterados durante la transmisión, y como confidencialidad al hecho de que
agente externo a la comunicación pueda obtener de ninguna forma el contenido del
in-the-middle”).
Security define y estandariza la forma de uso de mecanismos de seguridad
adaptándolos a su funcionamiento con los mensajes SOAP. Quizás lo más fundamental que define WS
que se embebe en el encabezado del mensaje SOAP. La estructura de
un mensaje SOAP que incluye este elemento se muestra en el ejemplo 1, a continuación:
8"?>
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
La especificación define asimismo como enviar security tokens, ya sea un username token, un
certificado X.509 o un ticket Kerberos, por nombrar los más conocidos y utilizados actualmente.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Seguridad en los Servicios Web
services sin considerar los aspectos de seguridad es algo
inconcebible, sobre todo si se trata de comunicación de información referida a lógica de negocios,
momento de la concepción de la tecnología de web
algún mecanismo de seguridad,
interoperabilidad entre plataformas y fabricantes.
*. Parte importante de este conjunto de especificaciones está
Security quizá la piedra fundamental
complementan o bien extienden los
Security define extensiones a SOAP que permiten el pasaje de security tokens los cuales identifican y
asegurar la integridad de los mensajes
entendiendo como integridad al hecho de que los mensajes
inalterados durante la transmisión, y como confidencialidad al hecho de que
ener de ninguna forma el contenido del mensaje
Security define y estandariza la forma de uso de mecanismos de seguridad ya existentes,
ndamental que define WS-
que se embebe en el encabezado del mensaje SOAP. La estructura de
un mensaje SOAP que incluye este elemento se muestra en el ejemplo 1, a continuación:
security tokens, ya sea un username token, un
utilizados actualmente.
El principal problema que enfrenta el receptor de un mensaje es saber quien es
exactamente el que le está realizan
cliente: con un username token, se debe proveer una pareja
kerberos está encriptado, y el receptor del
WS-Security es extremadamente flexible en el hecho de no definir que tipo de security tokens utilizar; sin
embargo no lo es en lo siguiente: dos sistemas pueden conformar WS
incapaces de comunicarse entre sí. Un sistema por ejemplo p
Kerberos, mientras que el otro aceptar solamente certificados X.509, por ejemplo, por lo que solamente
WS-Security no alcanza. Este tipo de problemas son los que intentan atacar WS
WS-SecurityPolicy
Siempre que se utilicen mecanismos de seguridad, en cualquier ámbito, debe existir algún tipo de
políticas de seguridad; una cosa va de la mano con la otra. Estas políticas clarifican los requisitos de
seguridad específicos en una situación par
WS-Security, se deben definir claramente ciertos aspectos con el fin de que un cliente pueda
comunicarse efectivamente con el servicio. Aspectos como: que tipo de security tokens acepta, que
algoritmo de encriptación se utilizó para encriptar el mensaje, etc., deben estar
por el servicio. Para definir estos aspectos es que se utilizan las políticas.
La especificación WS-Policy define una aproximación general para la especificac
políticas para los servicios web. Basándose en esto, WS
especificar políticas relacionadas con la seguridad. Esta sintaxis define elementos denominados
assertions; que permiten a un servicio w
Las assertions definidas por WS-SecurityPolicy incluyen las siguientes:
Permiten a un web service especificar que tipos de security
quien permitirá que procedan.
Permite a un web service especificar varias opciones sobre las firmas digitales que aceptará.
Permite a un web service especificar opciones sobre como la encriptación se realizará, como por
ejemplo que algoritmo de encriptación se
Permite a un web service especificar que ciertas partes de un
cuales son esas partes.
La forma exacta de cómo las políticas son transportadas desde el servicio al cliente interesado no se
define en WS-SecurityPolicy. Las assertions pueden ser enviadas en un mensaje SOAP o entregado de
cualquier otra forma. WS-Policy define un elemento general,
assertions para las políticas.
El elemento puede contener políticas sobre security tokens, integri
confidencialidad y otras cosas.
A continuación se pasa a detallar la especificación de WS
documento.
Para uso exclusivo de los alumnos de CETICSA S.L.
El principal problema que enfrenta el receptor de un mensaje es saber quien es
exactamente el que le está realizando el pedido. Existen varias formas de verificar la identidad del
cliente: con un username token, se debe proveer una pareja usuario/contraseña correcta; un ticket
kerberos está encriptado, y el receptor del mensaje puede verificar que es correcto.
rity es extremadamente flexible en el hecho de no definir que tipo de security tokens utilizar; sin
embargo no lo es en lo siguiente: dos sistemas pueden conformar WS-Security, pero igualmente ser
incapaces de comunicarse entre sí. Un sistema por ejemplo podría llegar a aceptar solamente tickets
aceptar solamente certificados X.509, por ejemplo, por lo que solamente
Security no alcanza. Este tipo de problemas son los que intentan atacar WS-SecurityPolicy y WS
Siempre que se utilicen mecanismos de seguridad, en cualquier ámbito, debe existir algún tipo de
políticas de seguridad; una cosa va de la mano con la otra. Estas políticas clarifican los requisitos de
seguridad específicos en una situación particular. Supongamos por ejemplo un servicio web utilizando
claramente ciertos aspectos con el fin de que un cliente pueda
efectivamente con el servicio. Aspectos como: que tipo de security tokens acepta, que
tmo de encriptación se utilizó para encriptar el mensaje, etc., deben estar
por el servicio. Para definir estos aspectos es que se utilizan las políticas.
Policy define una aproximación general para la especificac
políticas para los servicios web. Basándose en esto, WS-SecurityPolicy define una sintaxis XML para
especificar políticas relacionadas con la seguridad. Esta sintaxis define elementos denominados
assertions; que permiten a un servicio web especificar sus políticas en una forma no ambigua.
SecurityPolicy incluyen las siguientes:
Permiten a un web service especificar que tipos de security tokens aceptará, y, opcionalmente, de
ermite a un web service especificar varias opciones sobre las firmas digitales que aceptará.
ermite a un web service especificar opciones sobre como la encriptación se realizará, como por
ejemplo que algoritmo de encriptación se utilizará.
a un web service especificar que ciertas partes de un mensaje no deben estar encriptadas, y
La forma exacta de cómo las políticas son transportadas desde el servicio al cliente interesado no se
assertions pueden ser enviadas en un mensaje SOAP o entregado de
Policy define un elemento general, , que puede contener una o más
puede contener políticas sobre security tokens, integridad,
A continuación se pasa a detallar la especificación de WS-Trust, objetivo principal del presente
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Existen varias formas de verificar la identidad del
usuario/contraseña correcta; un ticket
mensaje puede verificar que es correcto.
rity es extremadamente flexible en el hecho de no definir que tipo de security tokens utilizar; sin
Security, pero igualmente ser
odría llegar a aceptar solamente tickets
aceptar solamente certificados X.509, por ejemplo, por lo que solamente
SecurityPolicy y WS-Trust.
Siempre que se utilicen mecanismos de seguridad, en cualquier ámbito, debe existir algún tipo de
políticas de seguridad; una cosa va de la mano con la otra. Estas políticas clarifican los requisitos de
ticular. Supongamos por ejemplo un servicio web utilizando
claramente ciertos aspectos con el fin de que un cliente pueda
efectivamente con el servicio. Aspectos como: que tipo de security tokens acepta, que
tmo de encriptación se utilizó para encriptar el mensaje, etc., deben estar claramente definidos
Policy define una aproximación general para la especificación de todo tipo de
SecurityPolicy define una sintaxis XML para
especificar políticas relacionadas con la seguridad. Esta sintaxis define elementos denominados
eb especificar sus políticas en una forma no ambigua.
tokens aceptará, y, opcionalmente, de
ermite a un web service especificar varias opciones sobre las firmas digitales que aceptará.
ermite a un web service especificar opciones sobre como la encriptación se realizará, como por
mensaje no deben estar encriptadas, y
La forma exacta de cómo las políticas son transportadas desde el servicio al cliente interesado no se
assertions pueden ser enviadas en un mensaje SOAP o entregado de
, que puede contener una o más
Trust, objetivo principal del presente
WS-TRUST
WS-Security define las bases para proveer seguridad al intercambio de mensajes SOAP.
WS-Trust utiliza estas bases o mecanismos y define primitivas adicionales y
extensiones para el intercambio de security tokens para permitir la obtención y
diseminación de credenciales entre distintos dominios de confianza.
Para asegurar la comunicación entre dos partes,
seguridad, ya sea directa como indirectamente.
cada una de las partes debe poder determinar si pueden
El objetivo principal de WS-Trust es habilitar a las distintas aplicaciones a construir intercambios confiables
de mensajes. La confianza es representada a través del intercambio e intermediación de security tokens. La especificación provee una forma para solicitar, ren
WS-Security, WS-SecurityPolicy y WS-
de servicios, definido en WS-Federation, que queda fuera del
Web Services Trust Model
El modelo de seguridad en web services definido en WS
servicio puede requerir que todo pedido que se le haga cumpla
viene sin los claims requeridos, se debe rechazar o ig
indicar cuales son los claims requeridos es mediante políticas de seguridad definidas sobre el propio
servicio.
Si el cliente no tiene el(los) token(s) necesarios para cumplir los requisitos de seguridad
servicio en sus políticas, el mismo puede contactar a las autoridades
necesarios. Estas autoridades se indican en la política del servicio, y son llamadas Security Token
Services(STS).
Los STS a su vez tienen definidas sus propias políticas de seguridad, y el cliente debe cumplirlas para
realizar el pedido de security tokens.
La figura que se muestra a continuación muestra que cualquier servicio puede ser un cliente, y a su vez
que el STS es un Web Service. Las flechas muestran posibles vías de
puede obtener un token del STS o puede haberlo
Para uso exclusivo de los alumnos de CETICSA S.L.
Security define las bases para proveer seguridad al intercambio de mensajes SOAP.
estas bases o mecanismos y define primitivas adicionales y
extensiones para el intercambio de security tokens para permitir la obtención y
diseminación de credenciales entre distintos dominios de confianza.
Para asegurar la comunicación entre dos partes, las mismas deben intercambiar credenciales de
seguridad, ya sea directa como indirectamente. Para que el intercambio funcione correctamente,
cada una de las partes debe poder determinar si pueden confiar en las credenciales de la otra parte.
Trust es habilitar a las distintas aplicaciones a construir intercambios confiables
de mensajes. La confianza es representada a través del intercambio e intermediación de security tokens. La especificación provee una forma para solicitar, renovar y validar estos security tokens
-Trust son los cimientos fundamentales para el modelo de Federación
Federation, que queda fuera del alcance de este documento.
El modelo de seguridad en web services definido en WS-Trust está basado en un proceso en el cual un
servicio puede requerir que todo pedido que se le haga cumpla con un conjunto de claims. Si el pedido
viene sin los claims requeridos, se debe rechazar o ignorar el mismo. La manera que tiene un servicio de
indicar cuales son los claims requeridos es mediante políticas de seguridad definidas sobre el propio
Si el cliente no tiene el(los) token(s) necesarios para cumplir los requisitos de seguridad
servicio en sus políticas, el mismo puede contactar a las autoridades apropiadas y solicitar los tokens
Estas autoridades se indican en la política del servicio, y son llamadas Security Token
n definidas sus propias políticas de seguridad, y el cliente debe cumplirlas para
realizar el pedido de security tokens.
La figura que se muestra a continuación muestra que cualquier servicio puede ser un cliente, y a su vez
as flechas muestran posibles vías de comunicación; el cliente (requestor)
puede obtener un token del STS o puede haberlo obtenido por otro medio.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Security define las bases para proveer seguridad al intercambio de mensajes SOAP.
las mismas deben intercambiar credenciales de
funcione correctamente,
confiar en las credenciales de la otra parte.
Trust es habilitar a las distintas aplicaciones a construir intercambios confiables
de mensajes. La confianza es representada a través del intercambio e intermediación de security ovar y validar estos security tokens.
Trust son los cimientos fundamentales para el modelo de Federación
alcance de este documento.
Trust está basado en un proceso en el cual un
con un conjunto de claims. Si el pedido
norar el mismo. La manera que tiene un servicio de
indicar cuales son los claims requeridos es mediante políticas de seguridad definidas sobre el propio
Si el cliente no tiene el(los) token(s) necesarios para cumplir los requisitos de seguridad indicado por el
apropiadas y solicitar los tokens
Estas autoridades se indican en la política del servicio, y son llamadas Security Token
n definidas sus propias políticas de seguridad, y el cliente debe cumplirlas para
La figura que se muestra a continuación muestra que cualquier servicio puede ser un cliente, y a su vez
comunicación; el cliente (requestor)
Se tiene un servicio web, el cual tiene definida ciertas políticas de seguridad.
que para realizar un pedido al servicio, es necesario que en el
además este token esté firmado por un STS
confianza previamente establecida de alguna forma.
El cliente debe solicitar al STS indicado el o los security tokens indicados en la política del servicio. Para
esto, el cliente debe enviar las claims apropiadas al STS, el cual define cuales son en su propia política
de seguridad. El STS verifica que los
mensaje de respuesta.
Finalmente, el cliente envía el pedido al servicio, con el token recibido (firmado por el STS).
servicio confía en el STS, valida el pedido del cliente.
Relaciones de confianza
Existen varios mecanismos que pueden ser utilizados para verificar las relaciones de confianza de un
servicio. Estos mecanismos no son obligatorios y no son requeridos por WS
libres de verificar las relaciones de confianza y de establecer las mismas sobre un dominio o extender las
mismas hacia otros dominios mediante cualquier mecanismo.
WS-Trust define los siguientes mecanismos:
Fixed Trust Roots: El más simple de todos.
contiene una lista de todas sus relaciones de confianza. Si los tokens vienen de un servicio perteneciente
a esta lista, el servicio los utiliza.
Trust Hierarchies: El servicio confiará en los tokens siempre y cuando provengan
confianza que lleve a un “trusted root”.
Authentication Service: Este es un servicio especial con el cual el servicio mantiene una relación de
confianza. Cuando el servicio recibe un token, lo envía directamente a este servicio, que es
decidir si es de confianza o no.
Security Token Service
A continuación se explica el funcionamiento de los STS en un escenario WS
Un cliente realiza un pedido de un security token al STS; si la política y los
cumplen, el cliente recibe un security token response.
Este proceso utiliza los siguientes dos elementos:
token y
El elemento
tokens contenidos o referenciados en el propio pedido.
La sintaxis del elemento se muestra en el siguiente ejemplo:
<wst:RequestSecurityToken Context="...">
<wst:TokenType>
...
</wst:TokenType>
<wst:RequestType>
...
</wst:RequestType>
...
</wst:RequestSecurityToken>
Como ya se dijo, el elemento
Para uso exclusivo de los alumnos de CETICSA S.L.
Se tiene un servicio web, el cual tiene definida ciertas políticas de seguridad. Dichas políticas establecen
que para realizar un pedido al servicio, es necesario que en el pedido haya un security token, pero que
además este token esté firmado por un STS determinado, con el cuál el servicio tiene una relación de
establecida de alguna forma.
El cliente debe solicitar al STS indicado el o los security tokens indicados en la política del servicio. Para
esto, el cliente debe enviar las claims apropiadas al STS, el cual define cuales son en su propia política
de seguridad. El STS verifica que los claims sean validos, y de así serlo, envía el token solicitado en
Finalmente, el cliente envía el pedido al servicio, con el token recibido (firmado por el STS).
servicio confía en el STS, valida el pedido del cliente.
Existen varios mecanismos que pueden ser utilizados para verificar las relaciones de confianza de un
servicio. Estos mecanismos no son obligatorios y no son requeridos por WS-Trust. O sea, los servicios son
nes de confianza y de establecer las mismas sobre un dominio o extender las
mismas hacia otros dominios mediante cualquier mecanismo.
Trust define los siguientes mecanismos:
Fixed Trust Roots: El más simple de todos. El servicio (más específicamente la “trust engine” del servicio)
contiene una lista de todas sus relaciones de confianza. Si los tokens vienen de un servicio perteneciente
Trust Hierarchies: El servicio confiará en los tokens siempre y cuando provengan
confianza que lleve a un “trusted root”.
Authentication Service: Este es un servicio especial con el cual el servicio mantiene una relación de
confianza. Cuando el servicio recibe un token, lo envía directamente a este servicio, que es
A continuación se explica el funcionamiento de los STS en un escenario WS-Trust.
Un cliente realiza un pedido de un security token al STS; si la política y los requerimientos del STS se
mplen, el cliente recibe un security token response.
Este proceso utiliza los siguientes dos elementos: para
para la respuesta del STS al cliente.
(RST) debe estar firmado por el que realiza el pedido, utilizando
tokens contenidos o referenciados en el propio pedido.
La sintaxis del elemento se muestra en el siguiente ejemplo:
<wst:RequestSecurityToken Context="...">
es utilizado para
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Dichas políticas establecen
pedido haya un security token, pero que
determinado, con el cuál el servicio tiene una relación de
El cliente debe solicitar al STS indicado el o los security tokens indicados en la política del servicio. Para
esto, el cliente debe enviar las claims apropiadas al STS, el cual define cuales son en su propia política
claims sean validos, y de así serlo, envía el token solicitado en
Finalmente, el cliente envía el pedido al servicio, con el token recibido (firmado por el STS). Como el
Existen varios mecanismos que pueden ser utilizados para verificar las relaciones de confianza de un
Trust. O sea, los servicios son
nes de confianza y de establecer las mismas sobre un dominio o extender las
“trust engine” del servicio)
contiene una lista de todas sus relaciones de confianza. Si los tokens vienen de un servicio perteneciente
Trust Hierarchies: El servicio confiará en los tokens siempre y cuando provengan de una jerarquía de
Authentication Service: Este es un servicio especial con el cual el servicio mantiene una relación de
confianza. Cuando el servicio recibe un token, lo envía directamente a este servicio, que es el que va a
Trust.
requerimientos del STS se
solicitar al STS un security
(RST) debe estar firmado por el que realiza el pedido, utilizando
enviar una respuesta a un pedido de un security token.
En general, el token retornado por el STS al cliente que realizó el pedido
forma por el cliente. Si puede llegar a ser incluida otra información respecto al security token, como ser
el tiempo de vida, etc..
La sintaxis de este elemento se muestra a continuación:
<wst:RequestSecurityTokenResponse C
<wst:TokenType>
...
</wst:TokenType>
<wst:RequestedSecurityToken>
...
</wst:RequestedSecurityToken>
...
</wst:RequestSecurityTokenResponse>
Técnicas criptográficas y las firmas digitales
Firmas digitales
DSA y DSS
El DSA (Digital Signature Algorithm
incluido en el DSS (Digital Signature Standard
publicó en 1994.
El DSA está basado en el problema de los logaritmos d
digitales (a diferencia del RSA, que también puede emplearse para encriptar). La elección de este
algoritmo como estándar de firmado generó multitud de críticas: se pierde flexibilidad respecto al RSA
(que además, ya era un estándar de hecho
fue poco claro y la versión original empleaba claves que lo hacían poco seguro.
El algoritmo es más rápido para generar la firma que para validarla, al revés de
RSA. Emplea claves de 1024 bits (originalmente eran 512 bits, pero se aumento por falta de seguridad).
No se conocen ataques eficientes contra este algoritmo, sólo existen problemas con un conjunto de
números primos, pero son fácilmen
claves.
Certificados digitales
Los certificados digitales son el equivalente digital del DNI, en lo que a la autentificación de individuos se
refiere, ya que permiten que un individuo demues
posesión de la clave secreta asociada a su certificado.
Para los usuarios proporcionan un mecanismo para verificar la autenticidad de programas y
documentos obtenidos a través de la red, el envío de correo
control de acceso a recursos, etc.
En este apartado explicaremos qué son los certificados digitales, cuales son los formatos estándar, como
podemos controlar sus periodos de validez o anularlos si se ven comprometid
infraestructuras necesarias para soportarlos.
Un certificado de clave pública es un punto de unión entre la clave pública de una entidad y uno o
más atributos referidos a su identidad. El certificado garantiza que la clave públi
entidad identificada y que la entidad posee la correspondiente clave privada.
Para uso exclusivo de los alumnos de CETICSA S.L.
enviar una respuesta a un pedido de un security token.
En general, el token retornado por el STS al cliente que realizó el pedido, no será modificado de ninguna
forma por el cliente. Si puede llegar a ser incluida otra información respecto al security token, como ser
La sintaxis de este elemento se muestra a continuación:
<wst:RequestSecurityTokenResponse Context="...">
</wst:RequestSecurityTokenResponse>
Técnicas criptográficas y las firmas digitales
o Algoritmo Estándar de Firmado) es el algoritmo de firmado digital
Digital Signature Standard o Estándar de Firmas Digitales) del NIST Norteamericano. Se
El DSA está basado en el problema de los logaritmos discretos y sólo puede emplearse para las firmas
digitales (a diferencia del RSA, que también puede emplearse para encriptar). La elección de este
algoritmo como estándar de firmado generó multitud de críticas: se pierde flexibilidad respecto al RSA
de hecho), la verificación de firmas es lenta, el proceso de elección
fue poco claro y la versión original empleaba claves que lo hacían poco seguro.
El algoritmo es más rápido para generar la firma que para validarla, al revés de
RSA. Emplea claves de 1024 bits (originalmente eran 512 bits, pero se aumento por falta de seguridad).
No se conocen ataques eficientes contra este algoritmo, sólo existen problemas con un conjunto de
números primos, pero son fácilmente evitables si se siguen los sistemas adecuados de generación de
Los certificados digitales son el equivalente digital del DNI, en lo que a la autentificación de individuos se
refiere, ya que permiten que un individuo demuestre que es quien dice ser, es decir, que está en
posesión de la clave secreta asociada a su certificado.
Para los usuarios proporcionan un mecanismo para verificar la autenticidad de programas y
documentos obtenidos a través de la red, el envío de correo encriptado y/o firmado digitalmente, el
En este apartado explicaremos qué son los certificados digitales, cuales son los formatos estándar, como
podemos controlar sus periodos de validez o anularlos si se ven comprometidos, quien los genera y las
infraestructuras necesarias para soportarlos.
Un certificado de clave pública es un punto de unión entre la clave pública de una entidad y uno o
más atributos referidos a su identidad. El certificado garantiza que la clave públi
entidad identificada y que la entidad posee la correspondiente clave privada.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
, no será modificado de ninguna
forma por el cliente. Si puede llegar a ser incluida otra información respecto al security token, como ser
Técnicas criptográficas y las firmas digitales
) es el algoritmo de firmado digital
) del NIST Norteamericano. Se
iscretos y sólo puede emplearse para las firmas
digitales (a diferencia del RSA, que también puede emplearse para encriptar). La elección de este
algoritmo como estándar de firmado generó multitud de críticas: se pierde flexibilidad respecto al RSA
), la verificación de firmas es lenta, el proceso de elección
fue poco claro y la versión original empleaba claves que lo hacían poco seguro.
El algoritmo es más rápido para generar la firma que para validarla, al revés de lo que sucede con el
RSA. Emplea claves de 1024 bits (originalmente eran 512 bits, pero se aumento por falta de seguridad).
No se conocen ataques eficientes contra este algoritmo, sólo existen problemas con un conjunto de
te evitables si se siguen los sistemas adecuados de generación de
Los certificados digitales son el equivalente digital del DNI, en lo que a la autentificación de individuos se
tre que es quien dice ser, es decir, que está en
Para los usuarios proporcionan un mecanismo para verificar la autenticidad de programas y
encriptado y/o firmado digitalmente, el
En este apartado explicaremos qué son los certificados digitales, cuales son los formatos estándar, como
os, quien los genera y las
Un certificado de clave pública es un punto de unión entre la clave pública de una entidad y uno o
más atributos referidos a su identidad. El certificado garantiza que la clave pública pertenece a la
Los certificados de clave pública se denominan comúnmente Certificado Digital, ID Digital o
simplemente certificado. La entidad identificada se denomina sujeto
una entidad legal como, por ejemplo, una persona).
Los certificados digitales sólo son útiles si existe alguna Autoridad Certificadora (Certification Authority o
CA) que los valide, ya que si uno se certifica a sí mis
sea la que anuncia, y por lo tanto, no debe ser aceptada por un tercero que no lo conozca.
Es importante ser capaz de verificar que una autoridad certificadora ha emitido un certificado y
detectar si un certificado no es válido. Para evitar la falsificación de certificados, la entidad
certificadora después de autentificar la identidad de un sujeto, firma el certificado digitalmente.
Los certificados digitales proporcionan un mecanismo criptográfico para imple
también proporcionan un mecanismo seguro y escalable para distribuir claves públicas en
comunidades grandes.
Certificados X.509
El formato de certificados X.509 es un estándar del ITU
Telecommunication Standarization Sector) y el ISO/IEC (International Standards Organization /
International Electrotechnical Commission) que se publicó por primera vez en 1988. El formato de la
versión 1 fue extendido en 1993 para incluir dos nuevos campos qu
acceso a directorios. Después de emplear el X.509 v2 para intentar desarrollar un estándar de correo
electrónico seguro, el formato fue revisado para permitir la extensión con campos adicionales, dando
lugar al X.509 v3, publicado en 1996.
Los elementos del formato de un certificado X.509 v3 son:
Versión. El campo de versión contiene el número de versión del certificado codificado.
aceptables son 1, 2 y 3.
Número de serie del certificado. Este campo es un ent
Cada certificado emitido por una CA debe tener un número de serie único.
Identificador del algoritmo de firmadocertificado (como por ejemplo el RSA o
Nombre del emisor. Este campo identifica la CA que ha firmado y emitido el certificado.
Periodo de validez. Este campo indica el periodo de tiempo durante el cual el certificado es válido y la
CA está obligada a mantener información sobre el es
inicial, la fecha en la que el certificado empieza a ser válido y la fecha después de la cual el certificado
deja de serlo.
Nombre del sujeto. Este campo identifica la identidad cuya clave pública está certif
siguiente. El nombre debe ser único para cada entidad certificada por una CA dada, aunque puede
emitir más de un certificado con el mismo nombre si es para la misma entidad.
Información de clave pública del sujetoidentificador del algoritmo con el que se emplea la clave.
Identificador único del emisor. Este es un campo opcional que permite reutilizar nombres de emisor.
Identificador único del sujeto. Este es un campo opcional q
Extensiones.
Las extensiones del X.509 v3 proporcionan una manera de asociar información adicional a sujetos,
claves públicas, etc. Un campo de extensión tiene tres partes:
Tipo de extensión. Es un identificador de objeto que proporciona la semántica y el tipo de información
(cadena de texto, fecha u otra estructura de datos) para un valor de extensión.
Para uso exclusivo de los alumnos de CETICSA S.L.
Los certificados de clave pública se denominan comúnmente Certificado Digital, ID Digital o
simplemente certificado. La entidad identificada se denomina sujeto del certificado o subscriptor (si es
una entidad legal como, por ejemplo, una persona).
Los certificados digitales sólo son útiles si existe alguna Autoridad Certificadora (Certification Authority o
CA) que los valide, ya que si uno se certifica a sí mismo no hay ninguna garantía de que su identidad
sea la que anuncia, y por lo tanto, no debe ser aceptada por un tercero que no lo conozca.
Es importante ser capaz de verificar que una autoridad certificadora ha emitido un certificado y
ficado no es válido. Para evitar la falsificación de certificados, la entidad
certificadora después de autentificar la identidad de un sujeto, firma el certificado digitalmente.
Los certificados digitales proporcionan un mecanismo criptográfico para implementar la autentificación;
también proporcionan un mecanismo seguro y escalable para distribuir claves públicas en
El formato de certificados X.509 es un estándar del ITU-T (International Telecommunication Union
ecommunication Standarization Sector) y el ISO/IEC (International Standards Organization /
International Electrotechnical Commission) que se publicó por primera vez en 1988. El formato de la
versión 1 fue extendido en 1993 para incluir dos nuevos campos que permiten soportar el control de
acceso a directorios. Después de emplear el X.509 v2 para intentar desarrollar un estándar de correo
electrónico seguro, el formato fue revisado para permitir la extensión con campos adicionales, dando
ublicado en 1996.
Los elementos del formato de un certificado X.509 v3 son:
. El campo de versión contiene el número de versión del certificado codificado.
. Este campo es un entero asignado por la autoridad certificadora.
Cada certificado emitido por una CA debe tener un número de serie único.
Identificador del algoritmo de firmado. Este campo identifica el algoritmo empleado para firmar el
certificado (como por ejemplo el RSA o el DSA).
. Este campo identifica la CA que ha firmado y emitido el certificado.
. Este campo indica el periodo de tiempo durante el cual el certificado es válido y la
CA está obligada a mantener información sobre el estado del mismo. El campo consiste en una fecha
inicial, la fecha en la que el certificado empieza a ser válido y la fecha después de la cual el certificado
. Este campo identifica la identidad cuya clave pública está certif
siguiente. El nombre debe ser único para cada entidad certificada por una CA dada, aunque puede
emitir más de un certificado con el mismo nombre si es para la misma entidad.
Información de clave pública del sujeto. Este campo contiene la clave pública, sus parámetros y el
identificador del algoritmo con el que se emplea la clave.
. Este es un campo opcional que permite reutilizar nombres de emisor.
. Este es un campo opcional que permite reutilizar nombres de sujeto.
Las extensiones del X.509 v3 proporcionan una manera de asociar información adicional a sujetos,
claves públicas, etc. Un campo de extensión tiene tres partes:
. Es un identificador de objeto que proporciona la semántica y el tipo de información
(cadena de texto, fecha u otra estructura de datos) para un valor de extensión.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Los certificados de clave pública se denominan comúnmente Certificado Digital, ID Digital o
del certificado o subscriptor (si es
Los certificados digitales sólo son útiles si existe alguna Autoridad Certificadora (Certification Authority o
mo no hay ninguna garantía de que su identidad
sea la que anuncia, y por lo tanto, no debe ser aceptada por un tercero que no lo conozca.
Es importante ser capaz de verificar que una autoridad certificadora ha emitido un certificado y
ficado no es válido. Para evitar la falsificación de certificados, la entidad
certificadora después de autentificar la identidad de un sujeto, firma el certificado digitalmente.
mentar la autentificación;
también proporcionan un mecanismo seguro y escalable para distribuir claves públicas en
T (International Telecommunication Union-
ecommunication Standarization Sector) y el ISO/IEC (International Standards Organization /
International Electrotechnical Commission) que se publicó por primera vez en 1988. El formato de la
e permiten soportar el control de
acceso a directorios. Después de emplear el X.509 v2 para intentar desarrollar un estándar de correo
electrónico seguro, el formato fue revisado para permitir la extensión con campos adicionales, dando
. El campo de versión contiene el número de versión del certificado codificado. Los valores
ero asignado por la autoridad certificadora.
. Este campo identifica el algoritmo empleado para firmar el
. Este campo identifica la CA que ha firmado y emitido el certificado.
. Este campo indica el periodo de tiempo durante el cual el certificado es válido y la
tado del mismo. El campo consiste en una fecha
inicial, la fecha en la que el certificado empieza a ser válido y la fecha después de la cual el certificado
. Este campo identifica la identidad cuya clave pública está certificada en el campo
siguiente. El nombre debe ser único para cada entidad certificada por una CA dada, aunque puede
clave pública, sus parámetros y el
. Este es un campo opcional que permite reutilizar nombres de emisor.
ue permite reutilizar nombres de sujeto.
Las extensiones del X.509 v3 proporcionan una manera de asociar información adicional a sujetos,
. Es un identificador de objeto que proporciona la semántica y el tipo de información
(cadena de texto, fecha u otra estructura de datos) para un valor de extensión.
Valor de la extensión. Este subcampo contiene el valor actual del campo.
Indicador de importancia. Es un flag que indica a una aplicación si es seguro ignorar el campo de
extensión si no reconoce el tipo. El indicador proporciona una manera de implementar aplicaciones
que trabajan de modo seguro con certificados y evolucionan conforme se van
extensiones.
El ITU y el ISO/IEC han desarrollado y publicado un conjunto de extensiones estándar en un apéndice al
X.509 v3:
Limitaciones básicas. Este campo indica si el sujeto del certificado es una CA y el máximo nivel de
profundidad de un camino de certificación a través de esa CA.
Política de certificación. Este campo contiene las condiciones bajo las que la CA emitió el certificado y
el propósito del certificado.
Uso de la clave. Este campo restringe el propósito de la clave públ
ejemplo, que la clave sólo se debe usar para firmar, para la encriptación de claves, para la
encriptación de datos, etc. Este campo suele marcarse como importante, ya que la clave sólo está
certificada para un propósito y usarla para otro no estaría validado en el certificado.
El formato de certificados X.509 se especifica en un sistema de notación denominado sintaxis abstracta
uno (Abstract Sintax One o ASN-1). Para la transmisión de los datos se aplica el DER (Distinguishe
Encoding Rules o reglas de codificación distinguible), que transforma el certificado en formato ASN
una secuencia de octetos apropiada para la transmisión en redes reales.
Listas de Anulación de Certificados (CRLs)
Los certificados tienen un periodo de validez que va de unos meses a unos pocos años. Durante el
tiempo que el certificado es válido la entidad certificadora que lo generó mantiene información sobre
el estado de ese certificado.
La información más importante que guarda es el
validez del certificado ha terminado antes de tiempo y el sistema que lo emplee no debe confiar en él.
Las razones de anulación de un certificado son varias: la clave privada del sujeto se ha visto
comprometida, la clave privada de la CA se ha visto comprometida o se ha producido un cambio en la
afiliación del sujeto (por ejemplo cuando un empleado abandona una empresa).
Las listas de anulación de certificados
el cual la CA publica y distribuye información a cerca de los certificados anulados a las aplicaciones
que los emplean. Una CRL es una estructura de datos firmada por la CA que contiene su fecha y hora
de publicación, el nombre de la entidad certific
anulados que aun no han expirado. Cuando una aplicación trabaja con certificados debe obtener la
última CRL de la entidad que firma el certificado que está empleando y comprobar que su número de
serie no está incluido en él.
Existen varios métodos para la actualización de CRLs:
Muestreo de CRLs. Las aplicaciones acceden a la CA o a almacenes de archivos y copian el último CRL
a intervalos regulares. La pega de este esquema es que durante el periodo entre ac
CRL podemos aceptar un certificado ya anulado, por lo que el periodo debe ser corto.
Anuncio de CRLs. La entidad certificadora anuncia que ha habido un cambio en el CRL a las
aplicaciones. El problema de este enfoque es el anuncio puede ser muy costoso y no sabemos que
aplicaciones deben ser informadas.
Verificación en línea. Una aplicación hace una con
revocación de un certificado. Es el mejor método para las aplicaciones, pero es muy costoso para la
CA.
Para uso exclusivo de los alumnos de CETICSA S.L.
. Este subcampo contiene el valor actual del campo.
. Es un flag que indica a una aplicación si es seguro ignorar el campo de
extensión si no reconoce el tipo. El indicador proporciona una manera de implementar aplicaciones
que trabajan de modo seguro con certificados y evolucionan conforme se van
El ITU y el ISO/IEC han desarrollado y publicado un conjunto de extensiones estándar en un apéndice al
. Este campo indica si el sujeto del certificado es una CA y el máximo nivel de
de un camino de certificación a través de esa CA.
. Este campo contiene las condiciones bajo las que la CA emitió el certificado y
. Este campo restringe el propósito de la clave pública certificada, indicando, por
ejemplo, que la clave sólo se debe usar para firmar, para la encriptación de claves, para la
encriptación de datos, etc. Este campo suele marcarse como importante, ya que la clave sólo está
arla para otro no estaría validado en el certificado.
El formato de certificados X.509 se especifica en un sistema de notación denominado sintaxis abstracta
1). Para la transmisión de los datos se aplica el DER (Distinguishe
Encoding Rules o reglas de codificación distinguible), que transforma el certificado en formato ASN
una secuencia de octetos apropiada para la transmisión en redes reales.
Listas de Anulación de Certificados (CRLs)
o de validez que va de unos meses a unos pocos años. Durante el
tiempo que el certificado es válido la entidad certificadora que lo generó mantiene información sobre
La información más importante que guarda es el estado de anulación, que indica que el periodo de
validez del certificado ha terminado antes de tiempo y el sistema que lo emplee no debe confiar en él.
Las razones de anulación de un certificado son varias: la clave privada del sujeto se ha visto
ve privada de la CA se ha visto comprometida o se ha producido un cambio en la
afiliación del sujeto (por ejemplo cuando un empleado abandona una empresa).
listas de anulación de certificados (Certification Revocation Lists o CRL) son un mecanismo med
el cual la CA publica y distribuye información a cerca de los certificados anulados a las aplicaciones
que los emplean. Una CRL es una estructura de datos firmada por la CA que contiene su fecha y hora
de publicación, el nombre de la entidad certificadora y los números de serie de los certificados
anulados que aun no han expirado. Cuando una aplicación trabaja con certificados debe obtener la
última CRL de la entidad que firma el certificado que está empleando y comprobar que su número de
Existen varios métodos para la actualización de CRLs:
. Las aplicaciones acceden a la CA o a almacenes de archivos y copian el último CRL
a intervalos regulares. La pega de este esquema es que durante el periodo entre ac
CRL podemos aceptar un certificado ya anulado, por lo que el periodo debe ser corto.
. La entidad certificadora anuncia que ha habido un cambio en el CRL a las
aplicaciones. El problema de este enfoque es el anuncio puede ser muy costoso y no sabemos que
aplicaciones deben ser informadas.
. Una aplicación hace una consulta en línea a la CA para determinar el estado de
revocación de un certificado. Es el mejor método para las aplicaciones, pero es muy costoso para la
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
. Es un flag que indica a una aplicación si es seguro ignorar el campo de
extensión si no reconoce el tipo. El indicador proporciona una manera de implementar aplicaciones
que trabajan de modo seguro con certificados y evolucionan conforme se van añadiendo nuevas
El ITU y el ISO/IEC han desarrollado y publicado un conjunto de extensiones estándar en un apéndice al
. Este campo indica si el sujeto del certificado es una CA y el máximo nivel de
. Este campo contiene las condiciones bajo las que la CA emitió el certificado y
ica certificada, indicando, por
ejemplo, que la clave sólo se debe usar para firmar, para la encriptación de claves, para la
encriptación de datos, etc. Este campo suele marcarse como importante, ya que la clave sólo está
arla para otro no estaría validado en el certificado.
El formato de certificados X.509 se especifica en un sistema de notación denominado sintaxis abstracta
1). Para la transmisión de los datos se aplica el DER (Distinguished
Encoding Rules o reglas de codificación distinguible), que transforma el certificado en formato ASN-1 en
o de validez que va de unos meses a unos pocos años. Durante el
tiempo que el certificado es válido la entidad certificadora que lo generó mantiene información sobre
, que indica que el periodo de
validez del certificado ha terminado antes de tiempo y el sistema que lo emplee no debe confiar en él.
Las razones de anulación de un certificado son varias: la clave privada del sujeto se ha visto
ve privada de la CA se ha visto comprometida o se ha producido un cambio en la
afiliación del sujeto (por ejemplo cuando un empleado abandona una empresa).
o CRL) son un mecanismo mediante
el cual la CA publica y distribuye información a cerca de los certificados anulados a las aplicaciones
que los emplean. Una CRL es una estructura de datos firmada por la CA que contiene su fecha y hora
adora y los números de serie de los certificados
anulados que aun no han expirado. Cuando una aplicación trabaja con certificados debe obtener la
última CRL de la entidad que firma el certificado que está empleando y comprobar que su número de
. Las aplicaciones acceden a la CA o a almacenes de archivos y copian el último CRL
a intervalos regulares. La pega de este esquema es que durante el periodo entre actualizaciones del
CRL podemos aceptar un certificado ya anulado, por lo que el periodo debe ser corto.
. La entidad certificadora anuncia que ha habido un cambio en el CRL a las
aplicaciones. El problema de este enfoque es el anuncio puede ser muy costoso y no sabemos que
sulta en línea a la CA para determinar el estado de
revocación de un certificado. Es el mejor método para las aplicaciones, pero es muy costoso para la
Listas de Anulación de Certificados X.509
El formato de listas de anulación de certificados X.509 e
publicó por primera vez en 1988 como versión 1. El formato fue modificado para incluir campos de
extensión, dando origen al al formato X.509 v2 CRL.
Los campos básicos de un formato X.509 CRL (válidos para las v
Versión. Debe especificar la versión 2 si hay algún campo de extensión.
Firma. El campo contiene identificador del algoritmo empleado para firmar la CRL.
Nombre del generador. Este campo contiene el nombre de la entidad que ha gener
CRL.
Esta actualización. Fecha y hora de la generación de la CRL.
Próxima actualización. Indica la fecha y hora de la próxima actualización. El siguiente CRL puede ser
generado antes de la fecha indicada pero no después de ella.
Certificado del usuario. Contiene el número de serie de un certificado anulado.
Fecha de anulación. Indica la fecha efectiva de la anulación.
Existe también un conjunto de campos de entrada de extensión en las CRLs X.509 v2, como el
razón, que identifica la causa de la anulación: sin especificar, compromiso de clave, compromiso de la
CA, cambio de afiliación, superado (el certificado ha sido reemplazado), cese de operación (el
certificado ya no sirve para su propósito original), certificad
temporalmente) y elimina de la CRL (un certificado que aparecía en una CRL previa debe ser
eliminado).
Adicionalmente también se ha añadido un conjunto de extensiones para las X.509v2 CRL con los mismos
subcampos que en los certificados X.509v3. Estas extensiones permiten que una comunidad o entidad
se defina sus propios campos de extensión privados.
Autoridades Certificadoras
Una autoridad certificadora es una organización fiable que acepta solicitudes de certi
entidades, las valida, genera certificados y mantiene la información de su estado.
Una CA debe proporcionar una
Statement o CPS) que indique claramente sus políticas y prácticas
mantenimiento de los certificados, la responsabilidades de la CA respecto a los sistemas que emplean
sus certificados y las obligaciones de los subscriptores respecto de la misma.
Las labores de un CA son:
Admisión de solicitudes. Un usuario rellena un formulario y lo envía a la CA solicitando un certificado. La
generación de las claves pública y privada son responsabilidad del usuario o de un sistema asociado a
la CA.
Autentificación del sujeto. Antes de firmar la información
verificar su identidad. Dependiendo del nivel de seguridad deseado y el tipo de certificado se deberán
tomar las medidas oportunas para la validación.
Generación de certificados. Después de recibir una solicitud y va
certificado correspondiente y lo firma con su clave privada. Posteriormente lo manda al subscriptor y,
opcionalmente, lo envía a un almacén de certificados para su distribución.
Distribución de certificados. La entidad cert
certificados para que las aplicaciones tengan acceso y puedan obtener los certificados de sus
Para uso exclusivo de los alumnos de CETICSA S.L.
Listas de Anulación de Certificados X.509
El formato de listas de anulación de certificados X.509 es un estándar del ITU
publicó por primera vez en 1988 como versión 1. El formato fue modificado para incluir campos de
extensión, dando origen al al formato X.509 v2 CRL.
Los campos básicos de un formato X.509 CRL (válidos para las versiones 1 y 2) son:
. Debe especificar la versión 2 si hay algún campo de extensión.
. El campo contiene identificador del algoritmo empleado para firmar la CRL.
. Este campo contiene el nombre de la entidad que ha gener
. Fecha y hora de la generación de la CRL.
. Indica la fecha y hora de la próxima actualización. El siguiente CRL puede ser
generado antes de la fecha indicada pero no después de ella.
. Contiene el número de serie de un certificado anulado.
. Indica la fecha efectiva de la anulación.
Existe también un conjunto de campos de entrada de extensión en las CRLs X.509 v2, como el
, que identifica la causa de la anulación: sin especificar, compromiso de clave, compromiso de la
CA, cambio de afiliación, superado (el certificado ha sido reemplazado), cese de operación (el
certificado ya no sirve para su propósito original), certificado en espera (el certificado está suspendido
temporalmente) y elimina de la CRL (un certificado que aparecía en una CRL previa debe ser
Adicionalmente también se ha añadido un conjunto de extensiones para las X.509v2 CRL con los mismos
s que en los certificados X.509v3. Estas extensiones permiten que una comunidad o entidad
se defina sus propios campos de extensión privados.
es una organización fiable que acepta solicitudes de certi
entidades, las valida, genera certificados y mantiene la información de su estado.
Declaración de Prácticas de Certificación
) que indique claramente sus políticas y prácticas relativas a la seguridad y
mantenimiento de los certificados, la responsabilidades de la CA respecto a los sistemas que emplean
sus certificados y las obligaciones de los subscriptores respecto de la misma.
. Un usuario rellena un formulario y lo envía a la CA solicitando un certificado. La
generación de las claves pública y privada son responsabilidad del usuario o de un sistema asociado a
. Antes de firmar la información proporcionada por el sujeto la CA debe
verificar su identidad. Dependiendo del nivel de seguridad deseado y el tipo de certificado se deberán
tomar las medidas oportunas para la validación.
. Después de recibir una solicitud y validar los datos la CA genera el
certificado correspondiente y lo firma con su clave privada. Posteriormente lo manda al subscriptor y,
opcionalmente, lo envía a un almacén de certificados para su distribución.
. La entidad certificadora puede proporcionar un servicio de distribución de
certificados para que las aplicaciones tengan acceso y puedan obtener los certificados de sus
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
s un estándar del ITU-T y la ISO/IEC que se
publicó por primera vez en 1988 como versión 1. El formato fue modificado para incluir campos de
ersiones 1 y 2) son:
. El campo contiene identificador del algoritmo empleado para firmar la CRL.
. Este campo contiene el nombre de la entidad que ha generado y firmado la
. Indica la fecha y hora de la próxima actualización. El siguiente CRL puede ser
Existe también un conjunto de campos de entrada de extensión en las CRLs X.509 v2, como el código de , que identifica la causa de la anulación: sin especificar, compromiso de clave, compromiso de la
CA, cambio de afiliación, superado (el certificado ha sido reemplazado), cese de operación (el
o en espera (el certificado está suspendido
temporalmente) y elimina de la CRL (un certificado que aparecía en una CRL previa debe ser
Adicionalmente también se ha añadido un conjunto de extensiones para las X.509v2 CRL con los mismos
s que en los certificados X.509v3. Estas extensiones permiten que una comunidad o entidad
es una organización fiable que acepta solicitudes de certificados de
entidades, las valida, genera certificados y mantiene la información de su estado.
Declaración de Prácticas de Certificación (Certification Practice
relativas a la seguridad y
mantenimiento de los certificados, la responsabilidades de la CA respecto a los sistemas que emplean
. Un usuario rellena un formulario y lo envía a la CA solicitando un certificado. La
generación de las claves pública y privada son responsabilidad del usuario o de un sistema asociado a
proporcionada por el sujeto la CA debe
verificar su identidad. Dependiendo del nivel de seguridad deseado y el tipo de certificado se deberán
lidar los datos la CA genera el
certificado correspondiente y lo firma con su clave privada. Posteriormente lo manda al subscriptor y,
ificadora puede proporcionar un servicio de distribución de
certificados para que las aplicaciones tengan acceso y puedan obtener los certificados de sus
subscriptores. Los métodos de distribución pueden ser: correo electrónico, servicios de directorio com
X.500 o el LDAP, etc.
Anulación de certificados. Al igual que sucede con las solicitudes de certificados, la CA debe validar el
origen y autenticidad de una solicitud de anulación. La CA debe mantener información sobre una
anulación durante todo el tiempo de validez del certificado original.
Almacenes de datos. Hoy en día existe una noción formal de
certificados y la información de las anulaciones. La designación oficial de una base de datos como
almacén tiene por objeto señalar que el trabajo con los certificados es fiable y de confianza.
Infraestructuras de Clave Pública
La difusión de las técnicas de clave pública requiere una
estándares, autoridades de certificación, estructura
validar rutas de certificación, protocolos operacionales, protocolos de gestión, herramientas que
pueden operar entre sí y un marco legislativo.
Los protocolos operacionales se dirigen al problema del envío
emplean certificados. Los protocolos de gestión tratan de los requisitos para la interacción de dos
componentes de la infraestructura: registro, inicialización, certificación, anulación y recuperación de
claves.
Una estructura entre múltiples CAs proporciona una o más rutas de certificación entre un subscriptor y
una aplicación. Una ruta de certificación
puntos conectados entre el subscriptor y una CA raíz.
aplicación, ya que tiene almacenada de forma segura su clave pública.
Un sistema que emplea certificados necesita obtener una ruta de certificación entre un subscriptor y un
CA raíz antes de evaluar el nive
determinar una ruta de certificación entre dos subscriptores arbitrarios en una estructura de
interconexiones entre diferentes CAs se denomina
de verificar la asociación entre el nombre del subscriptor y su clave pública en una ruta de certificación
se denomina validación de la ruta de certificación
Implementar la seguridad en los servicios web
En la siguiente unidad veremos la forma que
con el IDE NetBeans.
Abrir un proyecto de tipo Java Web, Web Application.
Para uso exclusivo de los alumnos de CETICSA S.L.
subscriptores. Los métodos de distribución pueden ser: correo electrónico, servicios de directorio com
. Al igual que sucede con las solicitudes de certificados, la CA debe validar el
origen y autenticidad de una solicitud de anulación. La CA debe mantener información sobre una
iempo de validez del certificado original.
. Hoy en día existe una noción formal de almacén
certificados y la información de las anulaciones. La designación oficial de una base de datos como
señalar que el trabajo con los certificados es fiable y de confianza.
Infraestructuras de Clave Pública
La difusión de las técnicas de clave pública requiere una infraestructura que defina un conjunto de
estándares, autoridades de certificación, estructuras entre múltiples CAs, métodos para descubrir y
validar rutas de certificación, protocolos operacionales, protocolos de gestión, herramientas que
pueden operar entre sí y un marco legislativo.
Los protocolos operacionales se dirigen al problema del envío de certificados y CRLs a los sistemas que
emplean certificados. Los protocolos de gestión tratan de los requisitos para la interacción de dos
componentes de la infraestructura: registro, inicialización, certificación, anulación y recuperación de
na estructura entre múltiples CAs proporciona una o más rutas de certificación entre un subscriptor y
ruta de certificación (o cadena de certificación) es una secuencia de uno o más
puntos conectados entre el subscriptor y una CA raíz. Una CA raíz es una autoridad en la que confía la
aplicación, ya que tiene almacenada de forma segura su clave pública.
Un sistema que emplea certificados necesita obtener una ruta de certificación entre un subscriptor y un
CA raíz antes de evaluar el nivel de confianza en el certificado del subscriptor. El problema de
determinar una ruta de certificación entre dos subscriptores arbitrarios en una estructura de
interconexiones entre diferentes CAs se denomina descubrimiento de rutas de certificación
de verificar la asociación entre el nombre del subscriptor y su clave pública en una ruta de certificación
validación de la ruta de certificación.
Implementar la seguridad en los servicios web
En la siguiente unidad veremos la forma que tenemos de implementar seguridad en un proyecto creado
Abrir un proyecto de tipo Java Web, Web Application.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
subscriptores. Los métodos de distribución pueden ser: correo electrónico, servicios de directorio como el
. Al igual que sucede con las solicitudes de certificados, la CA debe validar el
origen y autenticidad de una solicitud de anulación. La CA debe mantener información sobre una
donde se guardan los
certificados y la información de las anulaciones. La designación oficial de una base de datos como
señalar que el trabajo con los certificados es fiable y de confianza.
que defina un conjunto de
s entre múltiples CAs, métodos para descubrir y
validar rutas de certificación, protocolos operacionales, protocolos de gestión, herramientas que
de certificados y CRLs a los sistemas que
emplean certificados. Los protocolos de gestión tratan de los requisitos para la interacción de dos
componentes de la infraestructura: registro, inicialización, certificación, anulación y recuperación de
na estructura entre múltiples CAs proporciona una o más rutas de certificación entre un subscriptor y
(o cadena de certificación) es una secuencia de uno o más
es una autoridad en la que confía la
Un sistema que emplea certificados necesita obtener una ruta de certificación entre un subscriptor y un
l de confianza en el certificado del subscriptor. El problema de
determinar una ruta de certificación entre dos subscriptores arbitrarios en una estructura de
descubrimiento de rutas de certificación. El problema
de verificar la asociación entre el nombre del subscriptor y su clave pública en una ruta de certificación
Implementar la seguridad en los servicios web
tenemos de implementar seguridad en un proyecto creado
Llamaremos al proyecto WS_Seguridad.
Para uso exclusivo de los alumnos de CETICSA S.L.
Llamaremos al proyecto WS_Seguridad.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Seleccionamos como servidor GlassFish.
No seleccionaremos ningún Framework, y por
Para uso exclusivo de los alumnos de CETICSA S.L.
Seleccionamos como servidor GlassFish.
No seleccionaremos ningún Framework, y por último le daremos a finalizar.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadiremos a nuestro proyecto web un archivo de tipo Web Service.
En la caja de texto para introducir el nombre del servicio introduciremos ServicioSeguridad. Guardar el
servicio en el paquete Servicios.
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadiremos a nuestro proyecto web un archivo de tipo Web Service.
En la caja de texto para introducir el nombre del servicio introduciremos ServicioSeguridad. Guardar el
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
En la caja de texto para introducir el nombre del servicio introduciremos ServicioSeguridad. Guardar el
Añadimos una nueva operación para crear un método llamado mensaje, devolverá un string con un
nombre.
Veremos el código que generado, e introducimos un string con el nombre que devolverá el método.
package Servicios;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService()
public class ServicioSeguridad {
@WebMethod(operationName = "mensaje")
public String mensaje(@WebParam(name = "nombre")
String nombre) {
return "Hola: "+ nombre;
}
}
Anotaciones creadas:
@WebService identifica a la clase como un servicio Web.
Al incluir este descriptor en la clase el editor del netbeans nos avisa que debemos importa la clase
javax.jws.Webservice.
@WebMethod identifica a una operación como parte del s
Al igual que con WebService se debe importar la clase WebMethod de mismo paquete.
Para uso exclusivo de los alumnos de CETICSA S.L.
na nueva operación para crear un método llamado mensaje, devolverá un string con un
Veremos el código que generado, e introducimos un string con el nombre que devolverá el método.
@WebMethod(operationName = "mensaje")
public String mensaje(@WebParam(name = "nombre")
@WebService identifica a la clase como un servicio Web.
Al incluir este descriptor en la clase el editor del netbeans nos avisa que debemos importa la clase
@WebMethod identifica a una operación como parte del servicio web.
Al igual que con WebService se debe importar la clase WebMethod de mismo paquete.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
na nueva operación para crear un método llamado mensaje, devolverá un string con un
Veremos el código que generado, e introducimos un string con el nombre que devolverá el método.
Al incluir este descriptor en la clase el editor del netbeans nos avisa que debemos importa la clase
Al igual que con WebService se debe importar la clase WebMethod de mismo paquete.
@WebParam asigna un nombre a los parametros de una operación.
Probaremos el servicio antes de implementar seguridad.
Sobre la carpeta Web Services, seleccionaremos la opción Test Web Service.
Cuando comprobemos que el servicio web desplega bien, comenzaremos con la implementación de
seguridad.
WSDL generado.
<?xml version='1.0' encoding='UTF-8'?><!
version is _
JAX-WS RI 2.2-hudson-740-. --><!-- Generated by JAX
JAX-WS _
RI 2.2-hudson-740-. --><definitions xmlns:wsu="http://docs.oasis
wssecurity-utility-1.0.xsd" _
Para uso exclusivo de los alumnos de CETICSA S.L.
asigna un nombre a los parametros de una operación.
Probaremos el servicio antes de implementar seguridad.
seleccionaremos la opción Test Web Service.
Cuando comprobemos que el servicio web desplega bien, comenzaremos con la implementación de
8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.
Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Cuando comprobemos que el servicio web desplega bien, comenzaremos con la implementación de
ws.dev.java.net. RI's
ws.dev.java.net. RI's version is
open.org/wss/2004/01/oasis-200401-wss-
xmlns:wsp="http://www.w3.org/ns/ws
xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" _
xmlns:wsam="http://www.w3.org/2007/05/addressing/metad
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://Servicios/" _
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://Servicios/" _
name="ServicioSeguridadService">
<types>
<xsd:schema>
<xsd:import namespace="http://Servicios/"
schemaLocation="http://localhost:8084/WS_Seguridad/ServicioSeguridad?xsd=1" />
</xsd:schema>
</types>
<message name="mensaje">
<part name="parameters" element="tns:mensaje" />
</message>
<message name="mensajeResponse">
<part name="parameters" element="tns:mensajeResponse" />
</message>
<portType name="ServicioSeguridad">
<operation name="mensaje">
<input wsam:Action="http://Servicios/ServicioSeguridad/mensajeRequest" message="tns:mensaje" />
<output wsam:Action="http://Servicios/ServicioSeguridad/mensajeResponse"
message="tns:mensajeResponse" />
</operation>
</portType>
<binding name="ServicioSeguridadPortBinding" type="tns:ServicioSeguridad">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
<operation name="mensaje">
<soap:operation soapAction="" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="ServicioSeguridadService">
<port name="ServicioSeguridadPort" binding="tns:ServicioSeguridadPortBinding">
<soap:address location="http://localhost:8084/WS_Seguridad/ServicioSeguridad" />
</port>
</service>
</definitions>
Para uso exclusivo de los alumnos de CETICSA S.L.
xmlns:wsp="http://www.w3.org/ns/ws-policy"
xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" _
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://Servicios/" _
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://Servicios/" _
<xsd:import namespace="http://Servicios/"
schemaLocation="http://localhost:8084/WS_Seguridad/ServicioSeguridad?xsd=1" />
<part name="parameters" element="tns:mensaje" />
nsajeResponse">
<part name="parameters" element="tns:mensajeResponse" />
<portType name="ServicioSeguridad">
<input wsam:Action="http://Servicios/ServicioSeguridad/mensajeRequest" message="tns:mensaje" />
Action="http://Servicios/ServicioSeguridad/mensajeResponse"
<binding name="ServicioSeguridadPortBinding" type="tns:ServicioSeguridad">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<service name="ServicioSeguridadService">
name="ServicioSeguridadPort" binding="tns:ServicioSeguridadPortBinding">
<soap:address location="http://localhost:8084/WS_Seguridad/ServicioSeguridad" />
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://Servicios/" _
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"
schemaLocation="http://localhost:8084/WS_Seguridad/ServicioSeguridad?xsd=1" />
<input wsam:Action="http://Servicios/ServicioSeguridad/mensajeRequest" message="tns:mensaje" />
style="document" />
name="ServicioSeguridadPort" binding="tns:ServicioSeguridadPortBinding">
<soap:address location="http://localhost:8084/WS_Seguridad/ServicioSeguridad" />
Marcamos la opción de Secure Service en la consola de nuestro serv
Seleccionamos la opción avanzadas, para abrir el editor de atributos.
t
Para uso exclusivo de los alumnos de CETICSA S.L.
Marcamos la opción de Secure Service en la consola de nuestro servicio.
Seleccionamos la opción avanzadas, para abrir el editor de atributos.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
En la sección de seguridad del servicio, se puede ver que la han seleccionado los siguientes opciones:
Compatibilidad de la versión. NET 1.0 o 3.0/Metro. 3.5/Metro NET 1.3.
coincide con la versión de Metro o. NET
Mecanismo de seguridad. Especifica el método utilizado para asegurar el s
autenticación de usuario con claves simétricas se selecciona. La autenticación de usuario con claves
simétricas protege a la aplicación de la integridad y confidencialidad. la criptografía de clave simétrica
se basa en una sola tecla, el secreto compartido que se utiliza para firmar y cifrar un mensaje. Las
claves simétricas son generalmente más rápido que la criptografía de clave pública.
Por este mecanismo, el cliente no posee ningún tipo de certificado / clave de su cue
su nombre de usuario / contraseña para la autenticación. El cliente comparte una clave secreta con el
servidor. La clave compartida, se genera en tiempo de ejecución y cifrados con el certificado del
servicio. El cliente debe especificar el alias en el almacén de confianza mediante la identificación de
alias del servidor de certificados.
Usar valores predeterminados para el Desarrollo.almacén de claves del servidor y almacén de confianza, para que puedan ser utilizados
inmediatamente para el desarrollo. Debido a que los certificados por defecto no se encuentran en un
formato adecuado para ser utilizado en este contexto, esta importación se hace para usted, de modo
que usted no tiene que hacerlo manualmente. Además de importar
defecto se crea con nombre de usuario "wsitUser". En un entorno de producci
desee ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de
desarrollo es posible encontrar estos valores predeterminados.
Como mecanismo de seguridad elegiremos
simétricas.
Para uso exclusivo de los alumnos de CETICSA S.L.
En la sección de seguridad del servicio, se puede ver que la han seleccionado los siguientes opciones:
NET 1.0 o 3.0/Metro. 3.5/Metro NET 1.3. Seleccione la última versión que
coincide con la versión de Metro o. NET que tenemos instalado.
Especifica el método utilizado para asegurar el servicio web. En este caso, la
autenticación de usuario con claves simétricas se selecciona. La autenticación de usuario con claves
simétricas protege a la aplicación de la integridad y confidencialidad. la criptografía de clave simétrica
sola tecla, el secreto compartido que se utiliza para firmar y cifrar un mensaje. Las
claves simétricas son generalmente más rápido que la criptografía de clave pública.
Por este mecanismo, el cliente no posee ningún tipo de certificado / clave de su cue
su nombre de usuario / contraseña para la autenticación. El cliente comparte una clave secreta con el
servidor. La clave compartida, se genera en tiempo de ejecución y cifrados con el certificado del
icar el alias en el almacén de confianza mediante la identificación de
predeterminados para el Desarrollo. Seleccione esta opción para importar certificados en el
almacén de claves del servidor y almacén de confianza, para que puedan ser utilizados
inmediatamente para el desarrollo. Debido a que los certificados por defecto no se encuentran en un
uado para ser utilizado en este contexto, esta importación se hace para usted, de modo
que usted no tiene que hacerlo manualmente. Además de importar certificados
defecto se crea con nombre de usuario "wsitUser". En un entorno de producci
desee ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de
desarrollo es posible encontrar estos valores predeterminados.
Como mecanismo de seguridad elegiremos autenticación de usuario con el meca
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
En la sección de seguridad del servicio, se puede ver que la han seleccionado los siguientes opciones:
Seleccione la última versión que
ervicio web. En este caso, la
autenticación de usuario con claves simétricas se selecciona. La autenticación de usuario con claves
simétricas protege a la aplicación de la integridad y confidencialidad. la criptografía de clave simétrica
sola tecla, el secreto compartido que se utiliza para firmar y cifrar un mensaje. Las
claves simétricas son generalmente más rápido que la criptografía de clave pública.
Por este mecanismo, el cliente no posee ningún tipo de certificado / clave de su cuenta, sino que envía
su nombre de usuario / contraseña para la autenticación. El cliente comparte una clave secreta con el
servidor. La clave compartida, se genera en tiempo de ejecución y cifrados con el certificado del
icar el alias en el almacén de confianza mediante la identificación de
Seleccione esta opción para importar certificados en el
almacén de claves del servidor y almacén de confianza, para que puedan ser utilizados
inmediatamente para el desarrollo. Debido a que los certificados por defecto no se encuentran en un
uado para ser utilizado en este contexto, esta importación se hace para usted, de modo
certificados, un usuario por
defecto se crea con nombre de usuario "wsitUser". En un entorno de producción, es probable que
desee ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de
autenticación de usuario con el mecanismo de claves
En nuestro ejemplo elegiremos autenticación de usuario con el mecanismo de claves simétricas
podríamos seleccionar cualquiera de las siguientes opciones:
Mutual Certificates Security: El mecanismo mutuo
través de mensaje de protección de autenticación que garantiza la integridad y confidencialidad.
Cuando use certificados mutuos, el archivo de almacén de confianza debe ser configurado tanto para
el lado del cliente y el servidor de la aplicación.
Transport Security (SSL): El mecanismo de seguridad de transporte protege su aplicación durante el uso
de SSL de transporte para la autenticación y confidencialidad. La seguridad de transporte de la capa
es proporcionada por los mecanismos de transporte utilizados para transmitir información sobre el
alambre entre los clientes y proveedores, por lo tanto la seguridad de capa de transporte se basa en
garantizar el transporte HTTP (HTTPS) usando Secure Sockets Layer (SSL).
Message Authentication over SSL: La autenticación de mensajes a través de SSL mecanismo otorga un
seguro de identidad criptográficamente o token de autenticación con el mensaje y el uso de SSL para
la protección de la confidencialidad.
SAML Authorization over SSL: El mecanismo de autorización SAML sobre SSL concede una autorización
simbólica con el mensaje y utiliza SSL para la protección de la confidencialidad
Endorsing Certificate: Este mecanismo utiliza mensajes seguros con la clave simétrica para protección de
la integridad y la confidencialidad, y utiliza un certificado de cliente para aumentar respaldar las
reivindicaciones proporcionada por el símbolo asociado a la firma del mensaje.
SAML Sender Vouches with Certificates:
de la integridad y la confidencialidad y con un remitente da fe de la autorización SAML token.
SAML Holder of Key: Este mecanismo protege a los mensajes con una aserción de SAML firmada
(expedido por una autoridad de confianza) c
autorización y confidencialidad protección de la integridad mediante certificados mutuo.
Podemos seleccionar las casillas de verificación de la derecha para el elemento que le gustaría firmar,
cifrar o requierir.Para ello, pulsaremos sobre el botón Message Parts de la sección Input Message.
Para uso exclusivo de los alumnos de CETICSA S.L.
autenticación de usuario con el mecanismo de claves simétricas
podríamos seleccionar cualquiera de las siguientes opciones:
El mecanismo mutuo de certificados de seguridad
través de mensaje de protección de autenticación que garantiza la integridad y confidencialidad.
, el archivo de almacén de confianza debe ser configurado tanto para
dor de la aplicación.
El mecanismo de seguridad de transporte protege su aplicación durante el uso
de SSL de transporte para la autenticación y confidencialidad. La seguridad de transporte de la capa
ismos de transporte utilizados para transmitir información sobre el
alambre entre los clientes y proveedores, por lo tanto la seguridad de capa de transporte se basa en
garantizar el transporte HTTP (HTTPS) usando Secure Sockets Layer (SSL).
La autenticación de mensajes a través de SSL mecanismo otorga un
seguro de identidad criptográficamente o token de autenticación con el mensaje y el uso de SSL para
la protección de la confidencialidad.
El mecanismo de autorización SAML sobre SSL concede una autorización
simbólica con el mensaje y utiliza SSL para la protección de la confidencialidad.
Este mecanismo utiliza mensajes seguros con la clave simétrica para protección de
la integridad y la confidencialidad, y utiliza un certificado de cliente para aumentar respaldar las
reivindicaciones proporcionada por el símbolo asociado a la firma del mensaje.
SAML Sender Vouches with Certificates: Este mecanismo protege los mensajes con los certificados mutuo
de la integridad y la confidencialidad y con un remitente da fe de la autorización SAML token.
Este mecanismo protege a los mensajes con una aserción de SAML firmada
(expedido por una autoridad de confianza) cliente de llevar a la clave pública y la información con la
autorización y confidencialidad protección de la integridad mediante certificados mutuo.
Podemos seleccionar las casillas de verificación de la derecha para el elemento que le gustaría firmar,
Para ello, pulsaremos sobre el botón Message Parts de la sección Input Message.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
autenticación de usuario con el mecanismo de claves simétricas, pero
e seguridad añade seguridad a
través de mensaje de protección de autenticación que garantiza la integridad y confidencialidad.
, el archivo de almacén de confianza debe ser configurado tanto para
El mecanismo de seguridad de transporte protege su aplicación durante el uso
de SSL de transporte para la autenticación y confidencialidad. La seguridad de transporte de la capa
ismos de transporte utilizados para transmitir información sobre el
alambre entre los clientes y proveedores, por lo tanto la seguridad de capa de transporte se basa en
La autenticación de mensajes a través de SSL mecanismo otorga un
seguro de identidad criptográficamente o token de autenticación con el mensaje y el uso de SSL para
El mecanismo de autorización SAML sobre SSL concede una autorización
.
Este mecanismo utiliza mensajes seguros con la clave simétrica para protección de
la integridad y la confidencialidad, y utiliza un certificado de cliente para aumentar respaldar las
con los certificados mutuo
de la integridad y la confidencialidad y con un remitente da fe de la autorización SAML token.
Este mecanismo protege a los mensajes con una aserción de SAML firmada
liente de llevar a la clave pública y la información con la
autorización y confidencialidad protección de la integridad mediante certificados mutuo.
Podemos seleccionar las casillas de verificación de la derecha para el elemento que le gustaría firmar,
Para ello, pulsaremos sobre el botón Message Parts de la sección Input Message.
Después dejar configurado el Web Service, crearemos el cliente que consuma el servicio.
Crear un proyecto aplicación java.
Llamamos al proyecto ConsumoWS_
Para uso exclusivo de los alumnos de CETICSA S.L.
Después dejar configurado el Web Service, crearemos el cliente que consuma el servicio.
Llamamos al proyecto ConsumoWS_Seguridad.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Después dejar configurado el Web Service, crearemos el cliente que consuma el servicio.
Añadir un elemento de tipo Web Service Client.
Seleccionamos el Web Service que queremos consumir y pulsamos sobre finalizar.
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadir un elemento de tipo Web Service Client.
Seleccionamos el Web Service que queremos consumir y pulsamos sobre finalizar.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Seleccionamos el Web Service que queremos consumir y pulsamos sobre finalizar.
Dentro de nuestra clase, pulsaremos botón derecho para que nos genere el código de llmada al
método mensaje de nuestro Web Service. Seleccionar Insert code, como se muestra en en la imagen.
Posteriormente, pulsamos sobre la opción Call Web Service Operation.
Para uso exclusivo de los alumnos de CETICSA S.L.
Dentro de nuestra clase, pulsaremos botón derecho para que nos genere el código de llmada al
e nuestro Web Service. Seleccionar Insert code, como se muestra en en la imagen.
Posteriormente, pulsamos sobre la opción Call Web Service Operation.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Dentro de nuestra clase, pulsaremos botón derecho para que nos genere el código de llmada al
e nuestro Web Service. Seleccionar Insert code, como se muestra en en la imagen.
Elegiremos el método mensaje del servicio web que queremos consumir.
Realizaremos en el main la llamada al método mensaje que nos acaba de generar. Pasaremos como
parámetro un string que es lo que espera nuestro método mensaje.
package consumows_seguridad;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println(mensaje("Rosa"));
}
private static String mensaje(java.lang.String nombre) {
aa.NewWebServiceService service = new aa.NewWebServiceService();
aa.NewWebService port = service.getNewWebServicePort();
return port.mensaje(nombre);
}
}
Para uso exclusivo de los alumnos de CETICSA S.L.
Elegiremos el método mensaje del servicio web que queremos consumir.
la llamada al método mensaje que nos acaba de generar. Pasaremos como
parámetro un string que es lo que espera nuestro método mensaje.
* @param args the command line arguments
lic static void main(String[] args) {
System.out.println(mensaje("Rosa"));
private static String mensaje(java.lang.String nombre) {
aa.NewWebServiceService service = new aa.NewWebServiceService();
service.getNewWebServicePort();
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
la llamada al método mensaje que nos acaba de generar. Pasaremos como
Pulsamos sobre edit web Service Attributes para poder incluir validación al conectarnos al web Service.
Marcamos la opción Use development default, de esta manera nos
defecto que tiene GlassFish.
Debido a que los certificados por defecto no se encuentran en un formato adecuado para ser utilizado
en este contexto, se importan unos por defecto.
created in the "file" realm, with username "wsitUser".
utilizarlos validándose con el nombre de usuario "wsitUser".
probably want to provide your own certifica
environment you may find these defaults useful.
ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de desarrollo es
posible encontrar estos valores predeterminados
Para uso exclusivo de los alumnos de CETICSA S.L.
Pulsamos sobre edit web Service Attributes para poder incluir validación al conectarnos al web Service.
Marcamos la opción Use development default, de esta manera nos validaremos con el usuario por
Debido a que los certificados por defecto no se encuentran en un formato adecuado para ser utilizado
, se importan unos por defecto. In addition to importing certificats, a default
created in the "file" realm, with username "wsitUser". Además de importar certificados
nombre de usuario "wsitUser". In a production environment, you will
probably want to provide your own certificates and user settings, however, in a development
environment you may find these defaults useful. En un entorno de producción, es probable que desee
ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de desarrollo es
ar estos valores predeterminados.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Pulsamos sobre edit web Service Attributes para poder incluir validación al conectarnos al web Service.
validaremos con el usuario por
Debido a que los certificados por defecto no se encuentran en un formato adecuado para ser utilizado
In addition to importing certificats, a default user is
certificados, un usuario puede
In a production environment, you will
tes and user settings, however, in a development
En un entorno de producción, es probable que desee
ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de desarrollo es
Salida del Consumidor del Servicio:
Ver
en el Módulo 8. Unidad 4, en la plataforma elearning
Para uso exclusivo de los alumnos de CETICSA S.L.
Video: Seguridad Servicios,
en el Módulo 8. Unidad 4, en la plataforma elearning
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
en el Módulo 8. Unidad 4, en la plataforma elearning
Objetivo
Implementar seguridad a nuestro servicio web de monedas.
Enunciado
Abriremos un proyecto Web Application para crear el servicio web.
Llamaremos al proyecto WS_Seguridad.
Para uso exclusivo de los alumnos de CETICSA S.L.
Laboratorio: Seguridad Servicios
servicio web de monedas.
Abriremos un proyecto Web Application para crear el servicio web.
Llamaremos al proyecto WS_Seguridad.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Laboratorio: Seguridad Servicios
Seleccionamos como servidor GlassFish.
No seleccionaremos ningún Framework, y por último le daremos a
Para uso exclusivo de los alumnos de CETICSA S.L.
Seleccionamos como servidor GlassFish.
No seleccionaremos ningún Framework, y por último le daremos a finalizar.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadiremos a nuestro proyecto web un archivo de tipo Web Service.
En la caja de texto para introducir el nombre del servicio introduciremos ServicioSeguridad. Guardar el
servicio en el paquete Servicios.
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadiremos a nuestro proyecto web un archivo de tipo Web Service.
En la caja de texto para introducir el nombre del servicio introduciremos ServicioSeguridad. Guardar el
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
En la caja de texto para introducir el nombre del servicio introduciremos ServicioSeguridad. Guardar el
Añadimos las operaciones del servicio web de monedas.
//Declaramos un array con el valor de cada una de las monedas
public double[] valores=new double[] {1.26201, 14.4762, 75.6061, 135.861, 166.386};
@WebMethod(operationName = "convertirMonedaEuro")
public Double convertirMonedaEuro(@WebParam(name = "valor")
double valor, @WebParam(name = "indice")
int indice) {
return (valor * valores[indice]);
}
@WebMethod(operationName = "convertirEuroMoneda")
public Double convertirEuroMoneda(@WebParam(name = "valor")
double valor, @WebParam(name = "indice")
int indice) {
return (valor / valores[indice]);
}
Marcamos la opción de Secure Service en la consola de nuestro servicio.
Para uso exclusivo de los alumnos de CETICSA S.L.
servicio web de monedas.
//Declaramos un array con el valor de cada una de las monedas.
public double[] valores=new double[] {1.26201, 14.4762, 75.6061, 135.861, 166.386};
@WebMethod(operationName = "convertirMonedaEuro")
Double convertirMonedaEuro(@WebParam(name = "valor")
double valor, @WebParam(name = "indice")
@WebMethod(operationName = "convertirEuroMoneda")
Double convertirEuroMoneda(@WebParam(name = "valor")
double valor, @WebParam(name = "indice")
Marcamos la opción de Secure Service en la consola de nuestro servicio.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
public double[] valores=new double[] {1.26201, 14.4762, 75.6061, 135.861, 166.386};
Seleccionamos la opción avanzadas, para abrir el editor de atributos.
Para uso exclusivo de los alumnos de CETICSA S.L.
la opción avanzadas, para abrir el editor de atributos.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Como mecanismo de seguridad elegiremos
simétricas.
Después dejar configurado el Web Service, crearemos el cliente que consuma el servicio.
Para uso exclusivo de los alumnos de CETICSA S.L.
Como mecanismo de seguridad elegiremos autenticación de usuario con el mecanismo de claves
Después dejar configurado el Web Service, crearemos el cliente que consuma el servicio.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
autenticación de usuario con el mecanismo de claves
Después dejar configurado el Web Service, crearemos el cliente que consuma el servicio.
Crear un proyecto aplicación java.
Llamamos al proyecto ConsumoWS_Seguridad.
Para uso exclusivo de los alumnos de CETICSA S.L.
Llamamos al proyecto ConsumoWS_Seguridad.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadir un elemento de tipo Web Service Client.
Seleccionamos el Web Service que queremos consumir y pulsamos sobre finalizar.
Para uso exclusivo de los alumnos de CETICSA S.L.
Añadir un elemento de tipo Web Service Client.
Seleccionamos el Web Service que queremos consumir y pulsamos sobre finalizar.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Seleccionamos el Web Service que queremos consumir y pulsamos sobre finalizar.
Dentro de nuestra clase, pulsaremos
método mensaje de nuestro Web Service. Seleccionar Insert code, como se muestra en en la imagen.
Posteriormente, pulsamos sobre la opción Call Web Service Operation.
Realizaremos en el main la llamada al método mensaje que nos acaba de generar. Pasaremos como
parámetro un string que es lo que espera nuestro método mensaje.
public static void main(String[] args)
{
double resultado = convertirMonedaEuro(121,2);
System.out.println(resultado);
}
private static Double convertirMonedaEuro(double valor, int indice) {
ConsumirWS.NewWebServiceService service = new ConsumirWS.NewWebServiceService();
Para uso exclusivo de los alumnos de CETICSA S.L.
Dentro de nuestra clase, pulsaremos botón derecho para que nos genere el código de llmada al
método mensaje de nuestro Web Service. Seleccionar Insert code, como se muestra en en la imagen.
Posteriormente, pulsamos sobre la opción Call Web Service Operation.
a llamada al método mensaje que nos acaba de generar. Pasaremos como
parámetro un string que es lo que espera nuestro método mensaje.
public static void main(String[] args)
double resultado = convertirMonedaEuro(121,2);
private static Double convertirMonedaEuro(double valor, int indice) {
ConsumirWS.NewWebServiceService service = new ConsumirWS.NewWebServiceService();
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
botón derecho para que nos genere el código de llmada al
método mensaje de nuestro Web Service. Seleccionar Insert code, como se muestra en en la imagen.
a llamada al método mensaje que nos acaba de generar. Pasaremos como
ConsumirWS.NewWebServiceService service = new ConsumirWS.NewWebServiceService();
ConsumirWS.NewWebService port = service.getNewWebServicePort();
return port.convertirMonedaEuro(valor, indice);
}
Pulsamos sobre edit web Service Attributes para poder incluir validación al conectarnos al web Service.
Marcamos la opción Use development default, de esta manera nos validaremos con el usuario por
defecto que tiene GlassFish.
Debido a que los certificados por defecto no se encuentran en un formato adecuado para ser utilizado
en este contexto, se importan unos por defecto.
created in the "file" realm, with username "wsitUser".
utilizarlos validándose con el nombre de usuario "wsitUser".
probably want to provide your own certificates and user settings, however, in a dev
environment you may find these defaults useful.
ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de desarrollo es
posible encontrar estos valores predetermi
Para uso exclusivo de los alumnos de CETICSA S.L.
ConsumirWS.NewWebService port = service.getNewWebServicePort();
port.convertirMonedaEuro(valor, indice);
Pulsamos sobre edit web Service Attributes para poder incluir validación al conectarnos al web Service.
Marcamos la opción Use development default, de esta manera nos validaremos con el usuario por
Debido a que los certificados por defecto no se encuentran en un formato adecuado para ser utilizado
, se importan unos por defecto. In addition to importing certificats, a default user is
th username "wsitUser". Además de importar certificados
nombre de usuario "wsitUser". In a production environment, you will
probably want to provide your own certificates and user settings, however, in a dev
environment you may find these defaults useful. En un entorno de producción, es probable que desee
ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de desarrollo es
ar estos valores predeterminados.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
Pulsamos sobre edit web Service Attributes para poder incluir validación al conectarnos al web Service.
Marcamos la opción Use development default, de esta manera nos validaremos con el usuario por
Debido a que los certificados por defecto no se encuentran en un formato adecuado para ser utilizado
In addition to importing certificats, a default user is
certificados, un usuario puede
In a production environment, you will
probably want to provide your own certificates and user settings, however, in a development
En un entorno de producción, es probable que desee
ofrecer sus propios certificados y configuración del usuario, sin embargo, en un entorno de desarrollo es
Para uso exclusivo de los alumnos de CETICSA S.L.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
top related