Generación de servicios web con seguridad de nivel de transporte a través de Rational Application Developer V7, parte 1: Generación de servicios web y de clientes de servicios web

Genere servicios web seguros con seguridad de nivel de transporte usando IBM® Rational® Application Developer V7 e IBM WebSphere® Application Server V6.1. En esta serie de tres partes encontrará instrucciones paso a paso para desarrollar servicios y clientes Web, configurar una autenticación básica HTTP y configurar HTTP con SSL (HTTPS). En esta primera parte, aprenderá a generar un servicio web para una aplicación de calculadora simple. Generará y probará dos tipos diferentes de clientes de servicios web: un cliente Java™ Platform, Enterprise Edition (Java EE) y un cliente Java independiente. Además, controlará excepciones definidas por el usuario en los servicios web.

Henry Cui, Software Engineer, IBM

Henry Cui photoHenry Cui trabaja en el equipo de servicio al cliente y soporte técnico del IBM Toronto Lab. Como experto en el área de servicios web del equipo de soporte técnico, ha ayudado a numerosos clientes a resolver problemas de diseño, desarrollo y migración de servicios web. Es coautor del popular Redbook de IBM "Rational Application Developer V7 Programming Guide". Para contactar a Henry, escríbale a henrycui@ca.ibm.com.



08-08-2011

Antes de comenzar

Acerca de esta serie

En esta primera parte de la serie de tutoriales, usted aprenderá a:

  • Configurar los servidores.
  • Crear un Java bean.
  • Crear servicios web.
  • Crear un cliente Java EE para servicios web.
  • Crear un cliente Java independiente para servicios web.

Una vez preparado el terreno, la parte 2 de esta serie de tutoriales le mostrará cómo configurar una autenticación básica HTTP. Concretamente, aprenderá a:

  • Habilitar la seguridad de IBM WebSphere Application Server.
  • Configurar la autenticación básica HTTP del proveedor de servicios web.
  • Configurar la autenticación básica HTTP del cliente de servicios web usando un descriptor de implementación.
  • Configurar la autenticación básica HTTP del cliente de servicios web programáticamente.
  • Supervisar la información de autenticación básica HTTP usando el monitor TCP/IP.

La tercera parte de esta serie le mostrará cómo configurar HTTPS. En la parte 3, aprenderá a:

  • Crear el almacén de claves, el almacén de confianza y el certificado del proveedor de servicios web.
  • Crear una configuración de Capa de sockets seguros (SSL) para el proveedor de servicios web.
  • Crear una nueva cadena de transporte del contenedor Web para usar la nueva configuración SSL del proveedor de servicios web.
  • Configurar HTTPS para el cliente de servicios web.
  • Probar los servicios web HTTPS desde el cliente Java EE.
  • Probar los servicios web HTTPS desde el cliente Java independiente.

Objetivos

Aprender a generar y probar dos tipos de clientes de servicios web: un cliente Java EE y un cliente Java independiente. Practicar el control de excepciones definidas por el usuario en los servicios web.

Requisitos previos

A efectos de una mejor comprensión de este tutorial, es necesario tener un conocimiento básico de la tecnología Java y de los servicios web.

Requisitos del sistema

Es necesario instalar IBM Rational Application Developer V7 con las últimas correcciones. (Si todavía no adquirió la licencia, puede descargar una copia de prueba de Rational Application Developer en developerWorks). Si no sabe si la instancia Rational Application Developer V7 está actualizada, vaya a IBM Installation Manager y seleccione Update Packages (Paquetes de actualización) para ver si existen nuevas actualizaciones disponibles. Al momento de redacción de este artículo, la última versión de Rational Application Developer era 7.0.0.5.

Nota: IBM lanza un paquete de correcciones aproximadamente cada tres meses. Es posible que al momento de la instalación ya exista una nueva versión de Rational Application Developer. Cada nueva versión de Rational Application Developer contiene una gran cantidad de correcciones. Se recomienda instalar la última versión para evitar problemas que ya tienen corrección.


Introducción a la seguridad de nivel de transporte

La seguridad de los servicios web cuenta con dos niveles distintos: seguridad de nivel de transporte y seguridad de nivel de mensaje. Analicemos estos niveles más detenidamente:

  • Seguridad de nivel de transporte: La seguridad de nivel de transporte es un mecanismo de seguridad punto a punto que se puede usar a efectos de identificación y autenticación de partes, integridad del mensaje y confidencialidad. HTTP, el protocolo de comunicación de Internet más usado, es también en la actualidad el protocolo más popular para servicios web. HTTP es un protocolo intrínsecamente inseguro ya que toda la información es enviada en texto no cifrado entre pares no autenticados a través de una red insegura. Con la seguridad de nivel de transporte, la conexión entre un cliente y un servidor de aplicaciones suele estar asegurada con una Capa de sockets seguros (SSL), por medio de la cual el cliente y el servidor autentican la identidad del otro y se comunican con mensajes cifrados. Si se aplica la seguridad de nivel de transporte, toda la comunicación estará cifrada.
  • Seguridad de nivel de mensaje: La seguridad de nivel de mensaje representa un enfoque según el cual toda la información relacionada con la seguridad está encapsulada en el mensaje SOAP. La seguridad de nivel de mensaje implica protección con token de nombre de usuario, cifrado XML y firmas digitales. La especificación WS-Security establece una seguridad de nivel de mensaje. Por lo general, este tipo de seguridad se aplica en combinación con la seguridad de nivel de transporte.

Este tutorial le mostrará cómo asegurar servicios web a nivel transporte usando dos técnicas: HTTPS y autenticación básica HTTP.

HTTPS

HTTPS permite la autenticación del cliente y del servidor mediante certificados. SSL es un protocolo que transmite las comunicaciones por Internet en formato cifrado. De esta manera se garantiza que la información se envíe sin cambios al servidor deseado. Es posible aplicar servicios web HTTPS a todos los tipos de clientes, incluidos los clientes Java EE y los clientes Java independientes.

En la actualidad, HTTPS con certificados del cliente constituye la configuración más habitual de la Web. En esta configuración, el servidor debe presentar su certificado al cliente para determinar la identidad del servidor. El cliente no necesita presentar su certificado al servidor para que este determine la identidad de aquel. En otras palabras, el cliente puede autenticar al servidor, pero el servidor no puede autenticar al cliente. Sin embargo, también es posible usar HTTPS junto con la autenticación básica, que permite al servidor autenticar al cliente.

Autenticación básica HTTP

Una manera simple de proporcionar datos de autenticación al cliente del servicio web consiste en autenticarse en el extremo de servicio protegido con una autenticación básica HTTP. La información de la autenticación básica está en el encabezado HTTP que contiene la solicitud SOAP. Cuando el servidor de aplicaciones recibe la solicitud HTTP, el nombre de usuario y la contraseña son recuperados y verificados usando el mecanismo de autenticación específico del servidor. Para evitar que el nombre de usuario y la contraseña puedan ser leídos de manera directa, son codificados como una secuencia de caracteres base 64 antes de la transmisión.

La autenticación básica HTTP es diferente de la autenticación básica proporcionada por WS-Security. La información de autenticación básica proporcionada por WS-Security está en el encabezado SOAP, mientras que la información de autenticación básica HTTP está en el encabezado HTTP.

La autenticación básica tiene una vulnerabilidad de seguridad: envía credenciales con una codificación base 64, que es fácil de decodificar. El envío de credenciales en una codificación base 64 es casi tan inseguro como su envío en texto no cifrado. Por eso se recomienda enviar datos con HTTPS.

En la actualidad, la combinación de la autenticación básica HTTP y de HTTPS está muy extendida porque aborda las siguientes áreas de seguridad:

  • Autenticación: El cliente del servicio web se autentica enviando un nombre de usuario y una contraseña codificados en base 64 en un encabezado de autorización HTTP. El servicio web se autentica ante el cliente mediante la presentación de su certificado.
  • Autorización: Una vez que el cliente se autentica correctamente usando la autenticación básica HTTP, la identidad del usuario se asocia con la solicitud. Las decisiones de autorización se toman en función de la identidad del usuario. Esta tarea es realizada por el servidor Java EE sobre la base del modelo de seguridad de Java EE de manera de permitir un acceso autorizado a los métodos de servlets, JavaServer Pages (JSP) y Enterprise JavaBeans (EJB).
  • Confidencialidad: HTTPS proporciona un cifrado, que garantiza que los terceros no puedan descifrar los datos cuando pasan entre el cliente y el servidor a través de una red. Además, la información de autenticación básica HTTP está codificada por SSL.
  • Integridad: HTTPS garantiza que los datos no se modifiquen cuando pasan entre el cliente y el servidor a través de una red.

Configuración de los servidores

En este tutorial se usan dos instancias de WebSphere Application Server: el primer servidor aloja los servicios web y el segundo servidor aloja el cliente de servicios web. El motivo por el cual se crean dos servidores para alojar el servicio web y el cliente por separado consiste en brindar una imagen clara de las configuraciones SSL para el servicio web y para el cliente con los que se trabajará en la parte 3 de esta serie.

En WebSphere Application Server V6 o versiones posteriores, la información del entorno de tiempo de ejecución se crea dentro de un perfil. Si desea crear una nueva configuración de servidor, es necesario crear un nuevo perfil. Rational Application Developer permite ejecutar múltiples configuraciones de servidor y entornos de prueba en el mismo nodo de desarrollo.

De manera predeterminada, la instalación de Rational Application Developer crea un servidor WebSphere Application Server que utiliza el perfil AppSrv01. Use la herramienta de gestión de perfiles para crear un nuevo perfil y luego cree el segundo servidor de manera que señale el nuevo perfil.

Configuración del servidor para el proveedor de servicios web

  1. Inicie Rational Application Developer.
  2. Cuando aparezca el cuadro de diálogo Workspace Launcher (Selector de áreas de trabajo), especifique la ruta de acceso completa de la ubicación del área de trabajo, tal como se muestra en la figura 1: C:\workspace\WebService.
    Figura 1. Selector de áreas de trabajo
    Selector de áreas de trabajo
  3. Cuando se abra la página de bienvenida, ciérrela. Ahora usted se encuentra en la perspectiva J2EE.
  4. Haga clic en la pestaña Servers (Servidores) del panel inferior.
  5. Debería haber un servidor WebSphere Application Server V6.1, como se puede ver en la figura 2. Este servidor se crea con la instalación predeterminada de Rational Application Developer.
    Figura 2. Vista Servers
    Vista Servers
  6. Haga doble clic en WebSphere Application Server v6.1 para abrir el editor de servidores.
  7. En la sección General, cambie el nombre del servidor de WebSphere Application Server v6.1 a WAS v6.1 for Web service provider.
  8. Guarde y cierre el editor de servidores.

Creación del servidor para el consumidor de servicios web

  1. Para crear un nuevo perfil de WebSphere Application Server V6.1 usando la herramienta de gestión de perfiles, seleccione Window (Ventana) > Preferences (Preferencia) en el banco de trabajo.
  2. En la ventana Preferences (Preferencias), expanda Server (Servidor)> WebSphere.
  3. En la lista WebSphere v6.0 and v6.1 local server profile management (gestión de perfiles del servidor local WebSphere v6.0 y v6.1), seleccione WebSphere Application Server v6.1. En la lista WebSphere profiles defined in the runtime selected above (perfiles de WebSphere definidos en el tiempo de ejecución seleccionado anteriormente), AppSrv01 debería aparecer en la lista, como se puede ver en la figura 3. AppSrv01 es usado por el servidor WebSphere Application Server V6.1 para el proveedor de servicios web recién configurado.
    Figura 3. Herramienta de creación de perfiles de WebSphere
    Herramienta de creación de perfiles de WebSphere
  4. Haga clic en el botón Create (Crear) de al lado de la lista WebSphere profiles defined in the runtime selected above (perfiles de WebSphere definidos en el tiempo de ejecución seleccionado anteriormente), que enumera todos los perfiles definidos para el entorno de tiempo de ejecución seleccionado.
  5. En la página Welcome to the Profile Management Tool (Bienvenido a la herramienta de gestión de perfiles), haga clic en Next (Siguiente).
  6. En la página de selección Environment (Entorno), haga clic en Next (Siguiente).
  7. En la página Profile Creation Options (Opciones de creación de perfil), seleccione Typical profile creation (Creación de perfil típica) y haga clic en Next (Siguiente).
  8. En la página Administrative Security (Seguridad administrativa), desactive Enable administrative security (Habilitar seguridad administrativa) y haga clic en Next (Siguiente).
  9. En la página Profile Creation Summary (Resumen de creación de perfil), revise la configuración del perfil. Podrá observar que los puertos sufren un incremento de uno respecto del nuevo perfil creado para que este no entre en conflicto con un perfil existente.
  10. Haga clic en Create (Crear).
  11. En la página Profile Creation Complete (Creación de perfil completada), desactive Launch the First steps console (Iniciar la consola Primeros Pasos) y haga clic en Finish (Finalizar). En la página Preferences (Preferencias) se puede ver que el nuevo perfil, AppSrv02, figura en la lista WebSphere profiles defined in the runtime selected above (perfiles de WebSphere definidos en el tiempo de ejecución seleccionado anteriormente).
  12. Haga clic con el botón derecho en la vista Servers (Servidores) y seleccione New (Nuevo) > Server (Servidor).
  13. En el cuadro de diálogo Define a New Server (Definir un nuevo servidor), seleccione WebSphere v6.1 Server y haga clic en Next (Siguiente).
  14. En el cuadro de diálogo WebSphere Server Settings (Configuración del servidor WebSphere), seleccione AppSrv02 como nombre de perfil de WebSphere. Deje los campos restantes con sus valores predeterminados y haga clic en Finish (Finalizar).
  15. El servidor se creará y aparecerá en la vista Servers (Servidores) como WebSphere v6.1 @ localhost.
  16. Haga doble clic en WebSphere v6.1 @ localhost para abrir el editor de servidores.
  17. En la sección General, cambie en nombre del servidor de WebSphere v6.1 @ localhost a WAS v6.1 for Web service consumer.
  18. Guarde y cierre el editor de servidores. Ahora debería haber dos servidores en la vista Servers (Servidores), como se puede ver en la figura 4.
    Figura 4. Lista de servidores
    Lista de servidores

Creación de un Java bean

Ahora es momento de crear una aplicación llamada Calculator que realice operaciones matemáticas sencillas, tales como suma, resta, multiplicación y división. Si el divisor de la operación de división es 0, el método captura la excepción ArithmeticException e inicia DivideByZeroException, una excepción definida por el usuario. De esta manera, el cliente de servicios web se deberá enfrentar a la posibilidad de una excepción de división por cero.

Configuración del servidor para el proveedor de servicios web

  1. Seleccione File (Archivo) > New (Nuevo) > Project (Proyecto) > Dynamic Web Project (Proyecto Web dinámico) y escriba Calculator como nombre del proyecto, como se puede ver en la figura 5.
    Figura 5. Creación de un proyecto Web dinámico
    Creación de un proyecto Web dinámico
  2. Haga clic en Finish (Finalizar). Si se le pregunta si desea pasar a la perspectiva Web, haga clic en No y quédese en la perspectiva J2EE.
  3. En Project Explorer (Explorador de proyectos), haga clic con el botón derecho en el proyecto Calculator y seleccione New (Nuevo) > Class (Clase).
  4. Escribacom.ibm como nombre del paquete y Calculator como nombre de la clase Java, como se puede ver en la figura 6.
  5. Haga clic en Finish.
    Figura 6. Creación de una nueva clase de Java
    Creación de una nueva clase de Java
  6. Copie Calculator.java del listado 1 y péguelo en el editor de Java.
  7. Guarde el archivo.
    Listado 1. Calculator.java
    package com.ibm;
    
    public class Calculator {
    	public Calculator() {
    	}
    
    	public int add(int i, int j) {
    		return i + j;
    	}
    
    	public int subtract(int i, int j) {
    		return i - j;
    	}
    
    	public int multiply(int i, int j) {
    		return i * j;
    	}
    
    	/*
    	 * In Java, the result of the integer division is always an integer, with
    	 * the remainder discarded.
    	 */
    	public int divide(int a, int b) throws DivideByZeroException {
    		try {
    			return a / b;
    		} catch (ArithmeticException e) {
    			throw new DivideByZeroException();
    		}
    	}
    }

    Como todavía no se creó DivideByZeroException.java, deberían aparecer ciertos errores de compilación.

  8. En Package Explorer (Explorador de paquetes), haga clic con el botón derecho en el paquete com.ibm > New (Nuevo) > Class (Clase).
  9. Escriba DivideByZeroException como nombre de la clase y luego haga clic en Finish.
  10. Copie DivideByZeroException.java del listado 2 en el editor de Java y guarde el archivo.
    Listado 2. DivideByZeroException.java
    package com.ibm;
    
    public class DivideByZeroException extends Exception {
    	public DivideByZeroException() {
    		super();
    	}
    }

    El error de compilación debería desaparecer.


Creación de servicios web

Creación de servicios web mediante el asistente para servicios web

Ahora es posible usar el asistente para servicios web para exponer la aplicación Calculator existente como servicio web. Mediante este enfoque, denominado enfoque ascendente, se crea un servicio web sobre la base de la lógica de negocios existente en Java beans o EJB.

  1. En la vista Servers (Servidores), haga clic con el botón derecho en WAS v6.1 for Web services provider y seleccione Start (Iniciar). Se podría tardar unos minutos en iniciar el servidor.
  2. En Package Explorer (Explorador de paquetes), haga clic con el botón derecho en la clase de Java Calculator y seleccione Web Services (servicios web) > Create Web service (Crear servicio web), como se puede ver en la figura 7.
    Figura 7. Asistente para servicios web
    Asistente para servicios web
  3. Haga clic en el hipervínculo Server: WebSphere v6.1 Server (Servidor: WebSphere v6.1 Server) para mostrar el cuadro de diálogo Service Deployment Configuration (Configuración de implementación de servicios).
  4. Expanda la carpeta Existing Servers (Servidores existentes).
  5. Seleccione WAS v6.1 for Web service provider como el servidor e IBM WebSphere JAX-RPC como el tiempo de ejecución de los servicios web, como se puede ver en la figura 8.
  6. Haga clic en OK (Aceptar).
    Figura 8. Selección del servidor y del tiempo de ejecución del servicio web
    Selección del servidor y del tiempo de ejecución del servicio web
  7. Haga clic en Next (Siguiente).
  8. En el cuadro de diálogo Service Endpoint Interface Selection (Selección de interfaz de extremo de servicio), acepte la configuración predeterminada y haga clic en Next.
  9. En el cuadro de diálogo Web Service Java Bean Identity (Identidad del Java Bean del servicio web), acepte la configuración predeterminada y haga clic en Next.
  10. Haga clic en Finish.

Prueba de servicios web con Web Services Explorer

Una manera rápida de probar los servicios web consiste en usar Web Services Explorer, una aplicación Web de JSP alojada en el motor de servlets Apache Tomcat dentro de Eclipse. Web Services Explorer usa el Lenguaje de descripción de servicios web (WSDL, por sus siglas en inglés) para representar una solicitud SOAP. El parámetro de devolución se elimina, y los valores se muestran en un formato predefinido. Este proceso no implica serializar ni deserializar datos.

Para probar los servicios web:

  1. En Project Explorer (Explorador de proyectos), expanda la carpeta JSR-109 Web Services y luego Services.
  2. Haga clic derecho en CalculatorService y seleccione Test with Web Services Explorer (Probar con Web Services Explorer), como se puede ver en la figura 9.
    Figura 9. Inicio de Web Services Explorer
    Inicio de Web Services Explorer
  3. Cuando se abra Web Services Explorer, seleccione uno de los métodos (por ejemplo, add (sumar)).
  4. El panel Actions (Acciones) de la derecha muestra una interfaz simple que permite especificar valores para los parámetros del método. Escriba los valores del parámetro i y j, y luego haga clic en Go (Ir).
  5. El resultado de la invocación del servicio web aparece en el panel Status (Estado), ubicado en el sector inferior derecho de Web Services Explorer, como se puede ver en la figura 10.
    Figura 10. Prueba con Web Services Explorer
    Prueba con Web Services Explorer
  6. Haga doble clic en el panel Status (Estado) para maximizarlo.
  7. Haga clic en Source (Origen) para ver los mensajes SOAP como XML sin procesar, como se puede ver en la figura 11.
    Figura 11. Solicitud y respuesta SOAP
    Solicitud y respuesta SOAP
  8. Cierre Web Services Explorer.

Creación de cliente Java EE para servicios web

Rational Application Developer permite generar un cliente de servicios web como cliente Java EE (ya sea como cliente Web, EJB o de aplicación) y como cliente Java independiente. En esta sección usted podrá generar un cliente Web de servicios web.

Generación de un cliente de servicios web en un proyecto Web

Es posible usar el asistente para la generación de clientes de servicios web para generar los artefactos del cliente de servicios web, tales como el proxy de servicios web, el localizador de servicios, la interfaz de servicios y el stub. El asistente también permite generar una aplicación Web de ejemplo que muestra cómo invocar el proxy de servicios web.

  1. En la vista Servers (Servidores), haga clic derecho en WAS v6.1 for Web services consumer y seleccione Start (Iniciar). Se podría tardar unos minutos en iniciar el servidor.
  2. En Project Explorer (Explorador de proyectos), expanda la carpeta JSR-109 Web Services y luego Services.
  3. Haga clic derecho en CalculatorService y elija Generate Client (Generar cliente).
  4. Haga clic en el hipervínculo Server: WebSphere v6.1 Server (Servidor: WebSphere v6.1 Server) para mostrar el cuadro de diálogo Service Deployment Configuration (Configuración de implementación de servicios).
  5. Expanda la carpeta Existing Servers y seleccione WAS v6.1 for Web services consumer como el servidor y IBM WebSphere JAX-RPC como el tiempo de ejecución de los servicios web, como se puede ver en la figura 12.
  6. Haga clic en OK.
    Figura 12. Configuración de entorno del cliente
    Configuración de entorno del cliente
  7. Haga clic en el hipervínculo Client project: Calculator (Proyecto del cliente: Calculator) para traer el cuadro de diálogo Specify Client Project Settings (Especificar configuración del proyecto del cliente).
  8. Escriba CalculatorWebClient como nombre de proyecto del cliente. Asegúrese de que Dynamic Web Project (Proyecto Web dinámico) esté seleccionado como tipo de proyecto de cliente y que CalculatorWebClientEAR esté seleccionado como nombre de proyecto EAR del cliente, tal como se puede ver en la figura 13.
  9. Haga clic en OK.
    Figura 13. Especificación de la configuración del proyecto del cliente
    Especificación de la configuración del proyecto del cliente
  10. En el cuadro de diálogo Web Service Client (Cliente de servicios web), mueva el control deslizante hacia arriba, hasta llegar a la posición Test (Probar), como se puede ver en la figura 14. Esta opción permite probar el servicio usando una aplicación de muestra basada en JSP.
  11. Haga clic en Next.
    Figura 14. Cuadro de diálogo Web Service Client
    Cuadro de diálogo Web Service Client
  12. En el cuadro de diálogo Web Service Proxy Page (Página del proxy de servicios web), acepte el valor predeterminado (sin seguridad) y haga clic en Next.
  13. En el cuadro de diálogo Web Service Client Test (Prueba del cliente de servicios web), acepte el valor predeterminado (sin seguridad) y haga clic en Finish. Aparecerá el cliente JSP de muestra.
  14. Pruebe los métodos add, substract, multiply y divide para asegurarse de que los servicios web funcionen correctamente, como se puede ver en la figura 15.
    Figura 15. Web Services Test Client
    Web Services Test Client
  15. Haga clic en divide. Escriba 2 en el campo a y 0 en el campo b.
  16. Haga clic en Invoke (Invocar). Debería aparecer el siguiente resultado:

    exception: com.ibm.DivideByZeroException

    El cliente JSP se usa con fines demostrativos, pero no sirve para controlar la excepción. Es necesario escribir un código personalizado para controlar las excepciones.

Control de excepciones en servicios web

Cuando el servicio web inicia una excepción para indicar que ha ocurrido un error, el motor de servicios web de WebSphere convierte la excepción en un error SOAP y devuelve el error en la respuesta SOAP. Del lado cliente, el motor de servicios web de WebSphere convierte el error SOAP en una excepción de Java.

Si el cliente especifica 0como divisor de la operación de división, el servicio web inicia DivideByZeroException, una excepción definida por el usuario. Del lado cliente, el servicio web generado transmite la excepción al cliente para que este pueda capturar la excepción definida por el usuario y mostrar un mensaje descriptivo en la página JSP.

Para escribir un código personalizado a fin de controlar una excepción definida por el usuario, siga estos pasos:

  1. En Package Explorer (Explorador de paquetes), expanda CalculatorWebClient, seleccione WebContent > sampleCalculatorProxy y abra Result.jsp.
  2. Examine el código. Podrá observar que el proxy de servicios web (com.ibm.CalculatorProxy) se invoca desde esta página JSP.
  3. Haga clic en la pestaña Source y agregue la siguiente línea en la parte superior de Result.jsp:

    <%@page import="com.ibm.DivideByZeroException"%>

  4. Ubique estas dos líneas:

    int divide39mtemp = sampleCalculatorProxyid.divide(a_8idTemp,b_9idTemp);
    String tempResultreturnp40 = org.eclipse.jst.ws.util.JspUtils.markup(String.valueOf(divide39mtemp));

    Reemplácelas con el código del listado 4.
    Listado 4. Agregación de código de control de excepciones
    String tempResultreturnp40;
    try {
    int divide39mtemp = sampleCalculatorProxyid.divide(a_8idTemp, b_9idTemp);
    tempResultreturnp40 = 
    org.eclipse.jst.ws.util.JspUtils.markup(String.valueOf(divide39mtemp));
    } catch (DivideByZeroException e) {
    		tempResultreturnp40 = "Can't divide by zero!";
    }
  5. Guarde el archivo. Se debería ver una operación de publicación en el sector inferior derecho del banco de trabajo. Si realiza cambios en un archivo JSP y guarda el archivo mientras el servidor se está ejecutando, se puede esperar a que transcurra el intervalo de publicación automático para que los cambios queden reflejados en el servidor. No hay necesidad de reiniciar el servidor.
  6. Una vez finalizada la publicación, vuelva a probar el método divide(). Escriba 2 en el campo a y 0 en el campo b.
  7. Haga clic en Invoke. Debería aparecer el siguiente mensaje descriptivo:
    Can't divide by zero!

Creación de un cliente Java independiente para servicios web

WebSphere Application Server V6.1 proporciona una implementación de cliente no administrado basada en la especificación API Java para RPC basada en XML (JAX-RPC) 1.1. El cliente ligero para JAX-RPC con WebSphere Application Server es un cliente Java independiente y no administrado que permite ejecutar las aplicaciones de cliente de servicios web JAX-RPC para invocar servicios web alojados en el servidor de aplicaciones. El cliente ligero del archivo .jar JAX-RPC, com.ibm.ws.webservices.thinclient_6.1.0.jar, está ubicado en el directorio %RAD installation root%\runtimes\base_v61\runtimes.

  1. En Project Explorer (Explorador de proyectos), expanda la carpeta JSR-109 Web Services y luego Services. Haga clic con el botón derecho en CalculatorService y elija Generate Client (Generar cliente).
  2. Haga clic en el hipervínculo Client project: Calculator (Proyecto del cliente: Calculator) para mostrar el cuadro de diálogo Specify Client Project Settings (Especificar configuración del proyecto del cliente).
  3. Escriba CalculatorJavaClient como nombre del proyecto del cliente y seleccione Java Utility Project (Proyecto de utilidades Java) como tipo de proyecto del cliente (ver figura 16).
  4. Haga clic en OK. El cliente de servicios web se genera en un proyecto Java.
    Figura 16. Especificación de la configuración del proyecto del cliente
    Especificación de la configuración del proyecto del cliente
  5. Haga clic en Next.
  6. En la página Web Service Proxy (Proxy de servicios web), haga clic en Finish.

Ahora cree una clase Java para invocar el proxy de servicios web generado:

  1. En Package Explorer (Explorador de paquetes), expanda el proyecto CalculatorJavaClient y seleccione src.
  2. Haga clic con el botón derecho en el paquete com.ibm y seleccione New (Nuevo) > Class (Clase).
  3. Escriba TestCalculator como nombre de la clase, active public static void main(String[] args) y luego haga clic en Finish (Finalizar).
  4. Copie el código del listado 5 y péguelo en el editor de Java.
    Listado 5. TestCalculator.java
    package com.ibm;
    
    import java.rmi.RemoteException;
    
    public class TestCalculator {
    	public static void main(String[] args) {
    		try {
    			CalculatorProxy proxy = new CalculatorProxy();
    			System.out.println("2 + 2 = " + proxy.add(2, 2));
    			System.out.println("2 - 2 = " + proxy.subtract(2, 2));
    			System.out.println("4 * 2 = " + proxy.multiply(4, 2));
    			System.out.println("4 / 2 = " + proxy.divide(4, 2));
    			System.out.print("4 / 0 = ");
    			System.out.print(proxy.divide(4, 0));
    		} catch (DivideByZeroException e) {
    			System.out.println("Error: can't divide by zero!");
    		} catch (RemoteException e) {
    			e.printStackTrace();
    		}
    	}
    }
  5. Haga clic con el botón derecho en el proyecto CalculatorJavaClient y seleccione Properties (Propiedades).
  6. Haga clic en Java Build Path (Ruta de acceso de compilación Java) y luego en la pestaña Libraries (Bibliotecas).
  7. Seleccione la entrada WebSphere Application Server v6.1 [WebSphere Application Server v6.1] y luego haga clic en Remove (Quitar), ya que el cliente Java independiente no tiene acceso a todas las librerías de tiempo de ejecución de WebSphere.
  8. Haga clic en Add External JARs (Agregar archivos JAR externos) y agregue com.ibm.ws.webservices.thinclient_6.1.0.jar, que está ubicado en el directorio %RAD installation root%\runtimes\base_v61\runtimes. La ruta de acceso de compilación Java debería ser como la figura 17.
  9. Haga clic en OK.
    Figura 17. Ruta de acceso de compilación Java del proyecto
    Ruta de acceso de compilación Java del proyecto
  10. En Package Explorer (Explorador de paquetes), expanda el proyecto CalculatorJavaClient y elija src > com.ibm.
  11. Abra CalculatorProxy.java y ubique esta línea:
    private boolean _useJNDI = true;
  12. Cambie el valor _useJNDI a false, ya que el cliente Java independiente se ejecuta fuera del contenedor Java EE y no puede usar Java Naming and Directory Interface (JNDI):
    private boolean _useJNDI = false;
  13. Haga clic con el botón derecho en TestCalculator.java y elija Run As (Ejecutar como) > Java Application (Aplicación Java). Los resultados de consola deberían tener una apariencia similar a:
    12-Nov-2007 10:31:10 PM com.ibm.ws.ssl.config.SSLConfigManager
    INFO: ssl.disable.url.hostname.verification.CWPKI0027I
    2 + 2 = 4
    2 - 2 = 0
    4 * 2 = 8
    4 / 2 = 2
    4 / 0 = Error: can't divide by zero!

¡Bien hecho! Completó la creación de servicios web y de un cliente de servicios web usando Rational Application Developer.


Conclusión

Rational Application Developer simplifica y automatiza mucho el proceso de generación de aplicaciones de servicios web interoperables y compatibles con WS-I, además de aumentar la productividad. En esta parte de la serie, usted aprendió a crear, implementar y probar aplicaciones de servicios web con Rational Application Developer V7 y WebSphere Application Server V6.1. La parte 2 de esta serie proporciona instrucciones paso a paso para configurar una autenticación básica HTTP.


Descargar

DescripciónNombretamaño
Solution in project interchange format1Part1Solution.zip58KB

Nota

  1. Para importar la solución, seleccione File (Archivo) > Import (Importar) > Other (Más) > Project Interchange (Intercambio de proyectos).

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=SOA y servicios web , Rational
ArticleID=680299
ArticleTitle=Generación de servicios web con seguridad de nivel de transporte a través de Rational Application Developer V7, parte 1: Generación de servicios web y de clientes de servicios web
publish-date=08082011