BigAdmin System Administration Portal
Community-Submitted Article
Print-friendly VersionPrint-friendly Version
Este contenido ha sido escrito por un miembro de la comunidad de BigAdmin. Nadie dentro de Sun Microsystems lo ha revisado. Si Ud encuentra un error o quiere comentar sobre el contenido del articulo, mandenos un email a "multilingual [at] sun.com."
 
 

Desarrollo y Deploy de Web Services con Sun Java System Application Server 9

Branko Fiorilo Drakic, octubre 2008

Web Services

Un Web Service (servicio web) es una aplicación que puede ser accedida por diversos clientes utilizando protocolos basados en XML, por ejemplo SOAP, sobre protocolos de internet, como HTTP. Los clientes acceden al Web Service mediante una interfaz definida a través de artefactos XML como los WSDL. La principal fortaleza es que provee servicios exactos y precisos orientado a los clientes finales (con las consideraciones de seguridad pertinentes). El web service contenido en nuestro app server puede ser consumido aparte de otro Sun Java System Application Server, por un servidor Tomcat, Microsoft IIS, IBM WebSphere, BEA WebLogic, etc., y el lado cliente estara escrito en Java, Microsoft .NET, PHP, etc.

XML (eXtensible Markup Language) es un estándar sencillo y flexible desarrollado por la W3C (World Wide Web Consortium), y entre sus utilidades se encuentra la de servir de lenguaje común entre clientes heterogéneos. Normalmente, aunque no obligatorio, para cada XML existe un documento DTD (Document Type Definition) o un XSL (XML Schema Language) que define su estructura; estos documentos contienen información sobre los componentes que puede contener el XML, los tipos de datos, etc. XSLT (eXtensible Stylesheet Language Transformation) es usada para transformar documentos XML de un formato a otro.

Estándares para servicios web

SOAP es un protocolo para el intercambio de mensajes sobre redes de computadoras, generalmente usando HTTP. Está basado en XML, a diferencia de DCOM y CORBA que son binarios; esto facilita la lectura por parte de los humanos. Su principal ventaja esta en la portabilidad de las terminales (no necesitan ningún software adicional).

UDDI (Universal Description Discovery and Integration) es un estándar para registrar y recuperar ("look-up's") servicios web. Es un catálogo independiente, basado en XML, que lista los negocios de internet de todo el mundo, consumibles de igual manera, desde cualquier locación, siempre y cuando se tenga los catálogos y datos de flujo requeridos.

El registro de un negocio en el UDDI debe tener en consideración las siguientes etapas:

  • Definir una entrada para el UDDI
  • Registrar la entrada ya definida del UDDI
  • Buscar la entrada en UDDI

De igual manera y dependiendo del listado y ti´pos de servicio, puede ser listado en distintos lugares.

WSDL (Web Service Definition Language) es un estándar para especificar los detalles de los web services. WSDL describe la interfaz pública a los servicios web.

El Sun Java System Application Server 9 permite realizar deployments, probar y administrar servicios web, desde la consola administrativa web y mediante la herramienta asadmin.

Nota: La herramienta "asadmin" y la consola administrativa "web" tienen la misma finalidad y funcionalidad, administrar las instancias o nodos de una instalación de Application Server (uno o varios dominios).

Desde la consola web se puede visualizar y monitorear los servicios web, por ejemplo ver tiempos de respuesta numero de llamadas al web service. Adicionalmente, el Sun Java System Application Server permite definir alertas para condiciones de extremas (número máximo de fallas tiempos de respuesta muertos).

Desarrollo y deploy de servicios web

Autodeploy

Utilizando la técnica sencilla de autoload del Application Server basta posicionar el web service al directorio autodeploy, y el Application Server generará automáticamente el XML una vez generado este se encuentra como web service. Esta técnica es aconsejable solamente en ambientes de desarrollo ya que en producción esta característica se la debe deshabilitar para volver mas eficiente el uso de recursos por parte del Application Server.

#/rutaaldominio/autodeploy (Solaris OS)

:>\rutaaldominio\autodeploy (Windows)

Deploy Manual

Los web services se pueden desplegar (deploy) como archivos WAR o EAR normales, de la misma que se haría con una aplicación web o empresarial o como POJO (Plain Old Java Object).

  • Consola Web: Posicionarse en aplicaciones y luego, dependiendo del tipo, en la que corresponda (Empresarial [EAR] o Web [WAR]), hacer clic en Deploy y seleccionar la ruta del compilado.

Fig. 1

(Haga clic para agrandar)

  • Mediante asadmin, ejecutando el siguiente comando:

/RutaalAppserv/bin/asadmin deploy --user admin
      --host (nombre o Ip de Host)  --port (Puerto administrative)
/rutaalwebservice
Please enter the admin password> (contraseña Administrativa)
Command deploy executed successfully.
Consola Web

En la consola web se puede ver una lista de los web services desplegados, posicionándonos en Web Services. Al hacer clic sobre uno de los web services se podrá ver información sobre el mismo por ejemplo la dependencia de aplicación (a cual pertenece) y el WSDL que lo define. Existe adicionalmente una herramienta que permite probar el web service haciendo clic sobre el botón Test.

Fig. 2

Otra información que se puede ver en las diferentes pestañas de la página corresponde a las estadísticas (tiempo de respuesta mínimo, máximo y promedio, cantidad de fallas, throughput) tanto para el servidor standalone como para cada nodo del cluster en forma individual.

Tester

El Sun Java System Application Server 9 provee una manera sencilla para probar web services. Haciendo clic sobre el botón Test en la página principal de información de un web service, se abre una nueva ventana en la cual se pueden ver todas las operaciones disponibles, con un cuadro de texto por cada parámetro de entrada y un botón con el nombre de la operación. Al hacer clic sobre uno de los botones se está invocando a la operación que tiene asignada, pudiendo ver el resultado de esta ejecución en la misma página; de esta forma se puede depurar fácilmente debido al despliegue del resultado devuelto por la operación.

Fig. 3

(Haga clic para agrandar)

Registro de web services

El Sun Java System Application Server 9 no incluye un registro. Para publicar web services a un registro interno, es necesario descargar e instalar un registro en el servidor de aplicaciones. Para usar un registro externo se debe especificar la dirección del mismo.

Para agregar un registro usando la consola de administración, se debe ir a Web Services y hacer clic en la pestaña Registry. El Application Server muestra la pantalla de configuración de un registro, en la cual se debe ingresar un nombre, seleccionar el tipo, y especificar la URL para publicar web services y el URL para consultarlos; adicionalmente, según el tipo de registro, se debe ingresar nombre de usuario y contraseña.

Fig. 4

Los tipos disponibles de registros son ebXML (Electronic Business XML) y UDDI. UDDI está diseñado especialmente para servicios web, ebXML puede ser usado para registrar y localizar todo tipo de contenidos y metadatos. Para usar ebXML primero hay que agregar un conector tipo com.sun.appserv.registry.ebxml, motivo por el cual, y para realizar pruebas, es mas sencillo utilizar UDDI. Las URL que se deben especificar corresponden a las direcciones de publicación y consulta de web service. El formato es http://<hostname>/<path of registry installation>. Hay que tener cuidado al crear los registros porque una vez que han sido creados no pueden modificarse, pero si eliminarse y volver a crear sin ningún límite.

Fig. 5

(Haga clic para agrandar)

Una vez que creado el registro, se pueden publicar los web services contendios. Para ello, dentro de la página de información de cada uno de ellos, se debe hacer clic en la pestaña Publish. En la nueva ventana, se deben seleccionar todos los registros en los que se desea publicar el servicio web, e ingresar una lista de categorías (separadas por comas) bajo las cuales se quiere publicar (las categorías las define el registro). Si se está usando algún tipo de balanceador de carga, se debe especificar el host y el puerto del mismo; esta información remplazará a la información especificada en el WSDL.

Para remover el web service simplemente se debe marcarlo y presionar el botón Unpublish.

Nota: por convención el nombre empieza por jdbc/ nombre, por ejemplo: jdbc/prueba. No olvidarse agregar el "/".

Monitoreo de Web Services

El Sun Java System Application Server 9 provee una visualización gráfica de las estadísticas de los web services que se encuentran deployed. Sin embargo, por defecto, el monitoreo está desactivado. Para activarlo (o desactivarlo) se debe ir a Web Services, hacer clic sobre el web service deseado, ir a la pestaña Monitor y luego a la pestaña Configuration. Allí se puede elegir el tipo de monitoreo: OFF (no se realiza ningún tipo de monitoreo), LOW (registra tiempos de respuesta, solicitudes y fallos a nivel del web service) y HIGH (registra tiempos de respuesta, solicitudes y fallos a nivel del web service y de las operaciones del mismo). En la misma página existe un botón Reset para borrar las estadísticas y comenzar nuevamente. El campo Message History Size corresponde a la cantidad máxima de mensajes que se desea almacenar para ser visualizados por el administrador; el valor por defecto es 25.

Fig. 6

(Haga clic para agrandar)

Dentro de la página correspondiente a la pestaña Monitor, la pestaña Statistics permite observar datos estadísticos (si está activado el monitoreo del web service).

Seguridad en servicios web

La seguridad en Web Service puede configurase de las siguientes formas:

  • Nivel de transporte
  • Nivel de mensajes

Seguridad a nivel de transporte

La conexión entre los clientes y el servidor se mantiene segura con SSL; si hay intermediarios, deben configurarse para que todos funcionen bajo SSL.

Seguridad a nivel de mensajes

La seguridad consiste en la protección encriptando los XML intercambiados y del uso de firmas digitales, los mensajes intercambiados son firmados digitalmente y encriptados. Por defecto, esta funcionalidad está deshabilitada; para habilitarla, se debe ir a Nodo (o instancia) / Configuration / Security / Message Security y seleccionar SOAP. En la página que se muestra se debe seleccionar un proveedor de seguridad tanto para el servidor como para el cliente. (Típicamente se selecciona ServerProvider para el campo Default Provider y ClientProvider para Default Client Provider.)

Fig. 7

(Haga clic para agrandar)

Luego editar el archivo de configuración del Client Container config/sun-acc.xml dentro del directorio del dominio y agregar el atributo DEFAULT-CLIENT-PROVIDER al elemento MESSAGE-SECURITY-CONFIG, de la siguiente manera:

<message-security-config auth-layer="SOAP" 
default-clientprovider="ClientProvider">

Finalmente, el desarrollador debe modificar la aplicación cliente para que al iniciar utilice los siguientes dos parámetros Java:

-Djavax.net.ssl.keyStore=<rutaaldominio>/config/keystore.jks
-Djavax.net.ssl.trustStore=<rutaaldominio>/config/cacerts.jks

Bibliografía

Para desarrollar este documento me apoyé en documentación de Sun Microsystems y su ayuda en línea, de la versión Sun Java System Application Server 9.1 (build b58g-fcs). Las imágenes contenidas pertenecen al Sun Java System Application Server 9.1 Enterprise Edition de Sun Microsystems.

The information and links on this page have been provided by a BigAdmin user. The submitter is solely responsible for such information and links. Sun is not responsible for the availability of external sites or resources, and does not endorse and is not responsible or liable for any content, advertising, products, or other materials on or available from such sites or resources. Sun will not be responsible or liable, directly or indirectly, for any actual or alleged damage or loss caused by or in connection with use of or reliance on the information posted here, or goods or services available on or through any external site or resource.
 
 

Comments (latest comments first)

Discuss and comment on this resource in the BigAdmin Wiki

Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin
  
 
BigAdmin Upgrade Hub