Manual de Arquetipo WebService Proyecto: Desarrollo Framework ATLAS 2.0 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Hoja de Control Título Configuración del Componente de Auditoria Documento de Referencia Responsable Entel Versión 1.1 Fecha Versión 12/06/2009 Fecha 1 Revisado/Validado por: Revisión/Validación 2 Aprobado por: Fecha Aprobación 1 El Responsable de Mantenimiento realizará la revisión y validación del documento. 2 La aprobación del documento será realizada por el Director del Proyecto. Registro de Cambios Versión Causa del Cambio Responsable del Cambio Fecha del Cambio 1.0 Versión inicial del documento 1.1 Revisión ICM Manuel Pereira 12/06/2009 1.2 Revisión ICM David Rico 23/03/2010 28/01/2009 Participantes / Elaboración: Colaboradores Manuel Pereira Configuración del Componente de Auditoria 04/05/2010 Área/Departamento Arquitectura Nº Copias de Aplicaciones - ICM Página 2 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Índice 1. INTRODUCCIÓN ................................................................................................................................................................ 4 2. AUDIENCIA OBJETIVO.................................................................................................................................................... 4 3. CONOCIMIENTOS PREVIOS........................................................................................................................................... 4 4. INFORMACIÓN SOBRE EL ARQUETIPO..................................................................................................................... 5 4.1. CREACIÓN DE UNA APLICACIÓN PARTIENDO DEL ARQUETIPO .......................................................................................... 5 4.2. ESTRUCTURA DEL ARQUETIPO ......................................................................................................................................... 5 4.3. ESTRUCTURA DE DIRECTORIOS Y ARCHIVOS .................................................................................................................... 6 4.4. CONFIGURACIÓN DEL DESCRIPTOR DE SERVICIOS SERVICES.XML .................................................................................... 9 4.4.1. Configuración básica.............................................................................................................................................. 9 4.4.2. Configuración para seguridad.............................................................................................................................. 10 4.5. DESPLIEGUE Y EJECUCIÓN DE LA APLICACIÓN ............................................................................................................... 17 5. VALIDACIÓN DE LA NORMATIVA Y GENERACIÓN DE LA DOCUMENTACIÓN.......................................... 20 6. FUNCIONALIDADES NO INCLUIDAS EN EL ARQUETIPO ................................................................................... 21 7. PREGUNTAS MAS FRECUENTES ................................................................................................................................ 22 8. ENLACES RELACIONADOS .......................................................................................................................................... 23 Configuración del Componente de Auditoria 04/05/2010 Página 3 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 1. INTRODUCCIÓN Los arquetipos son la plantilla para la generación de los distintos proyectos dentro del Framework Atlas 2.0. Estos arquetipos utilizan el plugin archetype de maven para generar la estructura de ficheros y directorios necesarios para nuestro proyecto gestionando las librerías que le indiquemos así como las dependencias entre ellas y las dependencias transitivas que se generen con otras librerías. Todas las librerías serán incluidas durante el empaquetado del proyecto, por lo que debe estar conectado al repositorio de artefactos de la Comunidad de Madrid (Artifactory). El framework Atlas versión 2.0 consta de cinco tipos de arquetipos - Arquetipo para proyectos de tipo web - Arquetipo para proyectos de tipo jar. - Arquetipo para proyectos de tipo webservice o servicios web - Arquetipo para proyectos de tipo batch - Arquetipo para proyectos de gestión documental (documentum) El Arquetipo para proyectos WebService genera un proyecto maven de tipo war listo para ser desplegado. Está preparado para publicar un servicio de Spring a través de Axis2 sin generación de código intermedio. El proyecto viene preconfigurado para acceder a base de datos a través de Hibernate y publicando un servicio de negocio mediante WebService. Además dicho servicio cumple con las especificaciones de la WS-I, con respecto a la interoperabilidad del servicio. 2. AUDIENCIA OBJETIVO Este documento está dirigido a desarrolladores de proyectos java para ICM en los que se deseen crear una aplicación que publique un Servicio Web utilizando el framework de desarrollo Atlas 2.0. 3. CONOCIMIENTOS PREVIOS Para un completo entendimiento del documento, el lector deberá tener conocimientos previos sobre las siguientes tecnologías: - Spring Framework. - Axis2 Además, es necesario haber leído y seguido los pasos del “Manual Configuración Entorno Desarrollo Maven” disponible para proveedores. Configuración del Componente de Auditoria 04/05/2010 Página 4 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 4. INFORMACIÓN SOBRE EL ARQUETIPO 4.1. Creación de una aplicación partiendo del arquetipo Crear un proyecto de Servicios Web a partir de un arquetipo es similar a la creación de un proyecto Web, lo único que cambia es el nombre del arquetipo a utilizar. Para crear un proyecto a partir de un arquetipo maven puede consultar la guía paso a paso que se indica en el documento “Manual Configuración Entorno Desarrollo Maven”, según se indica en el apartado “Creación de una aplicación Web desde cero”, sustituyendo “atlasmodular-web” por “atlas-service”. Desde eclipse, seleccionamos el arquetipo correspondiente: 4.2. Estructura del arquetipo Este arquetipo genera un proyecto de tipo web service en el que se incluyen la configuración general de ejemplo de uso de hibernate, daos, servicios y la configuración adicional para publicar dichos servicios como servicios web. Esta aplicación además viene preconfigurada para utilizar los módulos de trazas y monitorización. Configuración del Componente de Auditoria 04/05/2010 Página 5 de 23 4.3. Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Estructura de directorios y archivos Una vez generado el proyecto nos generara una serie de directorios a estilo maven, donde ubicaremos los fuentes y recursos de las partes de java, test y aplicación web. Se generará la siguiente estructura de directorios y ficheros: Fichero de configuración de maven del módulo core. De esta ruta cuelga la estructura de paquetes con el código fuente de la aplicación El paquete raíz va a llamarse igual que el nombre del módulo que se está desarrollando. Inicialmente el paquete raíz se llama xxxx, Dicho paquete se debe eliminar o renombrar a la ruta normal de paquetes de nuestro proyecto. Adicionalmente, para cada bloque funcional de nuestra aplicación debe crearse un subpaquete. En el arquetipo se genera un único bloque funcional cuyo paquete se denomina bloquefuncionaln. Este nombre deberá ser modificado según la naturaleza del bloque funcional. Interfaces de las clases de acceso a datos y sus implementaciones Entidades anotadas de hibernate Interfaces de los servicios de negocio y sus implementaciones Clases de propósito general relacionadas con los servicios Interfaz de la fachada de acceso a los servicios y Configuración del Componente de Auditoria 04/05/2010 Página 6 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 su correspondiente implementación. Ruta donde se generarán los recursos del proyecto, normalmente son ficheros de configuración y ficheros de propiedades. En nuestro caso contiene los siguientes ficheros: Fichero de configuración de log4j; lleva además configuración de los módulos de trazas y propiedades que monitorización. Fichero de contiene mediante clave y valor todos los valores susceptibles de ser modificados o configurados entre diferentes entornos de configuración de ejecución. conf/applicationContext-*.xml Ficheros de Spring que contienen un sufijo que indica que parte de la aplicación están configurando. Carga en el contexto de Spring todos los DAOs (clases de acceso a datos). Lleva la dataSource, configuración del sessionManager transactionManager que y integra hibernate con Spring. Inicialmente el datasource será configurado mediante las ubicadas en propiedades el fichero conf/jdbc.properties (se generan de forma automática con maven) aunque para el paso a integración deben configurarse localizando por jndi al datasource del servidor de Configuración del Componente de Auditoria 04/05/2010 Página 7 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 aplicaciones. Carga en el contexto de Spring las propiedades ubicadas en application.properties y resto de archivos de propiedades necesarios. Carga en el contexto de Spring todos las clases de Servicios. Contiene las propiedades para la configuración inicial de la base de datos. Este fichero se puede utilizar durante el desarrollo, en el entorno de integración/producción la configuración que debe llevar es la del servidor de aplicaciones. Ruta donde se generarán el código fuente para los test de nuestro proyecto. Este código nunca deberá estar incluido en el jar final. Ruta donde se generarán los recursos para realizar las pruebas de test, normalmente son ficheros de configuración y ficheros de propiedades. En nuestro caso contiene los siguientes ficheros: Lleva la dataSource, configuración sessionManager del y transactionManager que integra Hibernate con Spring. Este fichero debe ser un espejo del fichero conf/applicationContextdatabase.xml excepto que no debe localizar el datasource por JNDI del servidor de aplicaciones, puesto que en la fase de test no tenemos acceso a dicho servidor. Hibernate está configurado en este contexto de Spring para Configuración del Componente de Auditoria 04/05/2010 Página 8 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 trabajar contra una base de datos que se carga en memoria (HSQLDB). Ruta donde se generarán los recursos necesarios para la parte web de la aplicación. Página de entrada que muestra un listado de servicios y un enlace a sus documentos WSDL. Lstado de módulos de Axis2 (.mar) que se deben cargar durante el despliegue de Axis2 Descriptor de despliegue de servicios de Axis2. Descriptor web de la aplicación Descriptor adicional para el servidor de aplicaciones Weblogic. 4.4. Configuración del descriptor de servicios services.xml Toda la configuración que se muestra a continuación se realiza según marca la documentación de Axis2, por lo que para cualquier consulta adicional puede consultarlo en la web http://ws.apache.org/axis2/0_94/axis2config.html. 4.4.1. Configuración básica El arquetipo genera el fichero services.xml con una configuración válida que despliega un bean del contexto de Spring como WebService. Si necesitamos editar dicho fichero lo podremos hacer de la siguiente manera: • service: etiqueta que especifica un servicio, podemos publicar tantos servicios como deseemos siempre que tengan un nombre diferente (parámetro name). Inicialmente se pone como nombre de servicio el nombre de la aplicación. • ServiceObjectSupplier: especifica que clase nos proporciona los objetos que vamos a publicar, en nuestro caso Spring. Este parámetro no se debe modificar. Configuración del Componente de Auditoria 04/05/2010 Página 9 de 23 • Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 SpringBeanName: Nombre del bean que vamos a publicar ubicado en el contexto de Spring (applicationContext-services.xml.) • ServiceClass: Interfaz de la clase que se va a publicar. Se debe especificar la interfaz del servicio que queremos publicar para que Axis2 sepa como generar el WSDL correspondiente, de lo contrario podemos tener problemas por que las clases estén interceptadas por Spring-AOP y esto falsee su interfaz en ejecución. A continuación se muestra un ejemplo de configuración del fichero services.xml que publica un servicio. <?xml version="1.0" encoding="UTF-8"?> <serviceGroup> <service name="Service12062009"> <parameter name="ServiceObjectSupplier" locked="false">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSuppl <parameter name="SpringBeanName" locked="false">facade</parameter> <parameter name="ServiceClass" locked="false">xxxx.bloquefuncionaln.services.facade.FacadeService</parameter> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageR </messageReceivers> </service> <!-- añadir aquí mas servicios si se desea <service name="nuevoServicio"> ... </service> </serviceGroup> 4.4.2. Configuración para seguridad Para securizar nuestro servicio utilizaremos el módulo de Rampart que permite configurar desde el fichero services.xml la seguridad a traves WSS4J. Podemos ver dicha configuración en http://ws.apache.org/axis2/modules/rampart/1_0/security-module.html Nota: Se recomienda no securizar el servicio hasta que no este comprobado el correcto funcionamiento del servicio sin seguridad. 4.4.2.1. Cryptography Extension(JCE) Configuración del Componente de Auditoria 04/05/2010 Página 10 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Al utilizar la encriptación podemos encontrarnos con algún problema de Java Criptografía Extensión (JCE) que es el framework para criptografía que forma parte de la distribución estándar de la VM y define APIS para algunos algoritmos de encriptación. Para que funcione el encriptado y nos reconozca algunos algoritmos tales como el algoritmo RSA (http://www.w3.org/2001/04/xmlenc # rsa-1_5, que es el utilizado por defecto) nos deberemos descargar e instalar Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 5.0 para eliminar dichas restricciones. Las implementaciones de los algoritmos de cifrado, generación de claves, etc son ofertadas por paquetes externos llamados providers. En caso de tener la versión ilimitada deberemos descargar e instalar la librería BouncyCastle (Bouncy Castle es un proyecto de software libre que pretende desarrollar una serie de librerías criptográficas libres y, entre otros, ofrece un provider para el JCE de java)en el PATH de nuestro servidor de aplicaciones para que sea registrado por WSS4j como proveedor de seguridad ya que el proveedor por defecto de Sun no es compatible con todos los algoritmos. En caso de utilizar Weblogic como servidor de aplicaciones la incluiremos en el directorio $BEA_HOME/jrockit_150_12/jre/lib/ext también deberemos editar el archivo java.security en la ruta $BEA_HOME/jrockit_150_12/jre/lib/security y añadirle la linea: security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider Con esto quedará registrado como proveedor de seguridad y tendremos la implementación del algoritmo de cifrado con lo que podremos utilizar la encriptación del mensaje sin problemas. 4.4.2.2. Parametros Rampart Para securizar nuestro servicio necesitamos configurar al manejador (tanto de recepción como de envío) una serie de parámetros que mostramos a continuación: Configuración del Componente de Auditoria 04/05/2010 Página 11 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Parámetros posibles de la etiqueta OutflowSecurity que configura la seguridad de mensajes SOAP que enviamos: Parámetro items user passwordCallbackClass signaturePropFile signatureKeyIdentifier encryptionKeyIdentifier encryptionUser encryptionSymAlgorith m encryptionKeyTransport Algorithm signatureParts Descripción Ejemplo Añade Timestamp, firma el cuerpo del mensaje y luego Posibles acciones de lo encripta seguridad para el envío <items> Timestamp Signature Encrypt</items> Indica el alias de la clave para firma Nombre de usuario <user> bob</user> Clase que provee la contraseña para ser <passwordCallbackClass> usada como org.apache.axis2.security.PWCallback</passwordCallb UsernameToken o para ackClass> firmar el mensaje Fichero de propiedades donde se configure el <signaturePropFile> proveedor de firma.properties</signaturePropFile> encriptación, keystore y su contraseña. Usa el número de serie del certificado Identificador de la clave <signatureKeyIdentifier> que se usará para firmar IssuerSerial</signatureKeyIdentifier> Usa el número de serie del certificado Identificador de la clave <encryptionKeyIdentifier>IssuerSerial</encryptionKey para encriptación Identifier> Nombre de usuario para encriptación <encryptionUser>alice</encryptionUser> Usa AES-128 Algoritmo simetrico <encryptionSymAlgorithm> para encriptación http://www.w3.org/2001/04/xmlenc#aes128cbc</encryptionSymAlgorithm> Usa RSA-OAEP Algoritmo de <parameter name="encryptionSymAlgorithm"> encriptación de la clave http://www.w3.org/2001/04/xmlenc#rsa-oaepmgf1p</parameter> Firma los elementos Producto y Tienda "http://app.ns/ns" Firmar diferentes partes <signatureParts> del mensaje SOAP {Element}{http://app.ns/ns}Producto;{Element}{http:/ /app.ns/ns}Tienda </signatureParts> Configuración del Componente de Auditoria 04/05/2010 Página 12 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Parámetros posibles para configurar la etiqueta InflowSecurity que configura como se realiza la validación de mensajes de llegada. Parámetro Ejemplo Primero desencripta el body del mensaje SOAP, Posibles acciones de luego verifica la firma sobre este campo y finalmente items validación de llegada verifica la viabilidad del Timestamp. <items> Timestamp Signature Encrypt</items> Clase que prove la <passwordCallbackClass> contraseña para ser usada passwordCallbackClass org.apache.axis2.security.PWCallback</passwordCa como UsernameToken o llbackClass> para firmar el mensaje Fichero de propiedades donde se configure el signaturePropFile <signaturePropFile> proveedor de encriptación, sig.properties</signaturePropFile> keystore y su contraseña. Fichero con las decryptionPropFile propiedades utilizadas para <decryptionPropFile> desencriptar dec.properties</decryptionPropFile> 4.4.2.3. Descripción Valores posibles para el parámetro ítems Ítem NoSecurity UsernameToken Timestamp Signature Configuración del Componente de Auditoria 04/05/2010 Descripción Parámetros a completar No valida ni envía ninguna cabecera de seguridad. No se puede combinar con ningún otro ítem. passwordCallbackClass – clase que manejadora de contraseñas Valida/Enviá el token de passwordType=PasswordText/PasswordDigest – autenticación contraseña en claro / encriptada (SHA) user (solo envío) – Nombre de usuario que manda el mensaje precisionInMilliseconds – La marca de tiempo debe tener precisión en milisegundos Valida/Envía un token de timestampStrict – Comprueba que la marca de marca de tiempo tiempo sea anterior a la fecha del receptor passwordCallbackClass – clase que manejadora de contraseñas signaturePropFile – fichero de configuración de Valida/Envía token de proveedor criptográfico firma respecto a algún signatureKeyIdentifier - identificador del alias campo del mensaje. del certificado con el que firmar signatureParts – partes del mensaje a firmar signatureAlgorithm – algoritmo de firma Página 13 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Encrypt Encripta/desencripta partes del mensaje signatureDigestAlgorithm user – si no se especifia signatureKeyIdentifier dicho valor se recogerá de este parámetro passwordCallbackClass – clase que manejadora de contraseñas decryptionPropFile (sólo recepción) – fichero de configuración de proveedor criptográfico encryptionPropFile (sólo envío) – fichero de configuración de proveedor criptográfico encryptionUser – Las funciones de encriptación utilizan la clave pública del certificado de dicho usuario para encriptar la clave simétrica generada. encryptionKeyIdentifier – Define el tipo de clave a utilizar, valores posibles: DirectReference, IssuerSerial, X509KeyIdentifier, SKIKeyIdentifier, EmbeddedKeyName, Thumbprint. encryptionSymAlgorithm – define el algoritmo de encriptación simétrica encryptionKeyTransportAlgorithm – define que algoritmo encripta la clave simétrica generada encryptionParts – partes del mensaje a encriptar user – si no se especifia encryptionUser dicho valor se recogerá de este parámetro Evita la fase de serialización del mensaje Uso específico para intercomunicación con dicho mecanismo en .Net. Este mecanismo de firma UsernameTokenSignature utiliza los datos de UsernameToken y una constante predefinida para construir la clave de la firma Valida/Envía token de autenticación/autorización samlPropFile – fichero de configuración SAML SAMLTokenUnsigned SAML SamlPropFile – fichero de configuración SAML passwordCallbackClass – clase que manejadora de contraseñas Valida/Envía token de signaturePropFile – fichero de configuración de autenticación/autorización proveedor criptográfico SAMLTokenSigned SAML firmados signatureKeyIdentifier - identificador del alias del certificado con el que firmar user – si no se especifia signatureKeyIdentifier dicho valor se recogerá de este parámetro NoSerialization Configuración del Componente de Auditoria 04/05/2010 Página 14 de 23 4.4.2.4. El proveedor de Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Fichero de propiedades de criptografía criptografía se configura en el fichero de propiedades bajo el parámetro org.apache.ws.security.crypto.provider. La implementación de WSS4J provee por defecto un proveedor de seguridad org.apache.ws.security.components.crypto.Merlin. Este proveedor necesita lo siguientes parámetros: • org.apache.ws.security.crypto.merlin.keystore.type – Tipo de almacén de claves (jks, pkcs12, …). Si no se pone este parámetro toma por defecto jks. • org.apache.ws.security.crypto.merlin.keystore.password – Contraseña del almacén de claves. • org.apache.ws.security.crypto.merlin.keystore.alias - Alias del certificado (dentro del almancén). Sólo es necesario para firmar, no para validar la firma. • org.apache.ws.security.crypto.merlin.alias.password - Contraseña del certificado. Si no se especifica se recoge la contraseña del almacén de claves. • org.apache.ws.security.crypto.merlin.file – Ruta del almacén de claves. Configuración del Componente de Auditoria 04/05/2010 Página 15 de 23 4.4.2.5. Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 Ejemplos de seguridad Servicio que envía los mensajes sin ningún tipo de seguridad pero al recibirlos verifica usuario,contraseña y el timestamp. <service name="InteropTestB"> <parameter name="ServiceObjectSupplier" locked="false">org.apache.axis2.extensions.spring.receivers.SpringServletContextObj ectSupplier</parameter> <parameter name="SpringBeanName" locked="false">InteropTestBService</parameter> <parameter name="ServiceClass" locked="xsd:false">atlas.service.interopB.InteropTestBService</parameter> <description>Servicio para los test de interoperabilidad (TEST B)</description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> </messageReceivers> <module ref="rampart" /> <parameter name="InflowSecurity"> <action> <items>UsernameToken Timestamp</items> <passwordCallbackClass>atlas.service.inerop.security.PWCallback</passwordCallbackCl ass> </action> </parameter> </service> Para utilizar usuario y contraseña tanto en recepción como envío tendría la siguiente configuración: <module ref="rampart" /> <parameter name="InflowSecurity"> <action> <items>UsernameToken</items> <passwordCallbackClass>atlas.ws.test.PWCallback</passwordCallbackClass> </action> </parameter> <parameter name="OutflowSecurity"> <action> <items>UsernameToken</items> <passwordCallbackClass>atlas.ws.test.PWCallback</passwordCallbackClass> <user>jonathan</user> </action> </parameter> Servicio que realiza la firma para envío, además verifica en la recepción Configuración del Componente de Auditoria 04/05/2010 Página 16 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 <module ref="rampart" /> <parameter name="InflowSecurity"> <action> <items>Signature</items> <passwordCallbackClass>account.services.security.PWCallbackSign</passwordCallbackCla ss> <signaturePropFile>conf/client.properties</signaturePropFile> </action> </parameter> <parameter name="OutflowSecurity"> <action> <items>Signature</items> <passwordCallbackClass>atlas.service.inerop.security.PWCallbackSign</passwordCallbac kClass> <signaturePropFile>conf/service.properties</signaturePropFile> <user>service</user> <signatureParts>Body</signatureParts> <mustUnderstand>false</mustUnderstand> </action> </parameter> A continuación se muestra el contenido de los ficheros de propiedades de criptografía a los que se hace referencia client.properties y service.properties: org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merl in org.apache.ws.security.crypto.merlin.keystore.type=jks org.apache.ws.security.crypto.merlin.keystore.password=almacen org.apache.ws.security.crypto.merlin.keystore.alias=client org.apache.ws.security.crypto.merlin.alias.password=password org.apache.ws.security.crypto.merlin.file=${basedir}/src/main/resources/mykeystore.j ks org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merl in org.apache.ws.security.crypto.merlin.keystore.type=jks org.apache.ws.security.crypto.merlin.keystore.password=almacen org.apache.ws.security.crypto.merlin.keystore.alias=service org.apache.ws.security.crypto.merlin.alias.password=password org.apache.ws.security.crypto.merlin.file=${basedir}/src/main/resources/mykeystore.j ks 4.5. Despliegue y Ejecución de la aplicación El archetipo service es una aplicación web preparada para la publicación de alguno de sus servicios mapeados en spring como servicio web axis2. Para construir el proyecto debe ejecutarse el siguiente comando desde el POM padre del proyecto generado: Configuración del Componente de Auditoria 04/05/2010 Página 17 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 mvn clean install Por defecto, al ejecutar Maven con los parámetros “clean install” se genera el war correspondiente a la aplicación. Para desplegar el war en nuestro servidor de aplicaciones podemos coger el fichero de la carpeta en la que se ha generado (web/target/nombreFichero.war), o podemos utilizar un servidor Jetty local que viene preconfigurado en el arquetipo, ejecutando desde el directorio web la siguiente línea de comandos: mvn clean jetty:run Esto arranca un servidor jetty en el puerto 9080 de nuestra máquina, en el que se encuentra desplegado el war de nuestra aplicación. Si en lugar de un servidor jetty queremos construir y desplegar en un servidor WebLogic definido por el usuario, es necesario primero configurar en el fichero pom.xml del módulo web del proyecto los parámetros del servidor weblogic: <profile> <id>weblogic-local</id> <activation> <property> <name>environment</name> <value>local</value> </property> </activation> <properties> <!-- Weblogic Settings --> <weblogic.adminServer.hostName>localhost</weblogic.adminServer.hostName> <weblogic.hostName>localhost</weblogic.hostName> <weblogic.adminServer.protocol>t3</weblogic.adminServer.protocol> <weblogic.adminServer.port>7001</weblogic.adminServer.port> <weblogic.port>7001</weblogic.port> <weblogic.servlet.port>7001</weblogic.servlet.port> <weblogic.user>weblogic</weblogic.user> <weblogic.password>weblogic</weblogic.password> <weblogic.serverName>AdminServer</weblogic.serverName> <weblogic.targetNames>AdminServer</weblogic.targetNames> <weblogic.remote>false</weblogic.remote> Configuración del Componente de Auditoria 04/05/2010 Página 18 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 <weblogic.upload>false</weblogic.upload> <seguridad.ruta.politicas>/conf</seguridad.ruta.politicas> </properties> Posteriormente puede ejecutarse la siguiente sentencia de maven, desde el directorio raiz de la aplicación: mvn clean install weblogic:deploy –Denvironment=local Para la ejecución de los tests JMeter, desde el módulo test: mvn clean install –Denvironment=jmeter Para la generación y despliegue de los artefactos adicionales con los javadocs y el código fuente del proyecto: mvn clean install –Dadditional_artifacts=true Para probar la ejecución de este arquetipo puede comprobar en la URL donde se listan los servicios desplegados y sus documentos WSDL: http://<host>:<puerto>/<contexto>/services/listServices Configuración del Componente de Auditoria 04/05/2010 Página 19 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 5. VALIDACIÓN DE LA NORMATIVA Y GENERACIÓN DE LA DOCUMENTACIÓN Los arquetipos vienen preparados para automáticamente generar un web-site con la información de la aplicación, incluyendo lava javadoc, información de dependencias, etc. También se ejecuta una herramienta automática que valida el cumplimiento de la normativa de Atlas 2.0, que genera un informe sobre los posibles incumplimientos de dicha normativa. Para más información sobre dicha herramienta consultar el documento “Manual de Configuración del Entorno de Desarrollo Maven”. Configuración del Componente de Auditoria 04/05/2010 Página 20 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 6. FUNCIONALIDADES NO INCLUIDAS EN EL ARQUETIPO Este arquetipo solo contiene los componentes imprescindibles para realizar un proyecto con web services. Si desea configuraciones adicionales puede consultar la siguiente documentación: • Manual Usuario Auditoría – Si su aplicación almacena datos susceptibles de ser auditados por la LOPD (Ley Oficial de Protección de Datos). Configuración del Componente de Auditoria 04/05/2010 Página 21 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 7. PREGUNTAS MAS FRECUENTES Pregunta: Saltan excepciones al generar el código cliente Respuesta: A la hora de crear nuestro código cliente con axis1.4, cuando el wsdl contiene tipos de excepciones tales como Exception, RuntimeException se generan errores en la creación. Para solucionarlo evite que los métodos de la interfaz que se configura en el services.xml contengan ese tipo de excepciones. Pregunta: No consigo firmar o encriptar Respuesta: Si al encriptar o firmar obtenemos la siguientes excepción exception unwrapping private key - java.security.InvalidKeyException: Illegal key size esto es debido a que la instalación de la jdk necesita un parche sobre la ruta jre/lib/security denominado Java(TM) Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 5.0 Vease solución al bug en la siguiente dirección: http://mlblog.osdir.com/java.javamail.crypto-api.devel/200603/index.shtml Si el error esta relacionado con Cripto Merlin (ClassNotFound) debe revisar el punto Cryptography Extension(JCE) Pregunta: No consigo que Axis despliegue mi servicio Respuesta: Si aparece el error: org.apache.axis2.deployment.DeploymentException: The following error occurred during schema generation: Unable to load bytecode for class $Proxy1 o algún otro relacionado con clases interceptadas por Spring AOP o AspectJ significa que no hemos indicado el parametro ServiceClass correctamente y esta intentando obtener la definición del objeto a partir de un objeto instrumentado por AOP Configuración del Componente de Auditoria 04/05/2010 Página 22 de 23 Manual de Arquetipo WebService Fecha: Proyecto: Desarrollo Framework Atlas 2.0 25-mar-10 8. ENLACES RELACIONADOS Producto URL Axis2 http://ws.apache.org/axis2/ Configuración http://ws.apache.org/axis2/0_94/axis2config.html Versión Services.xml Configuración Rampart http://ws.apache.org/axis2/modules/rampart/1_0/security-module.html Ejemplos de seguridad con http://blog.sweetxml.org/2007/12/rampart-basic-examples-how-you-addws.html Rampart Apache Maven http://maven.apache.org/ 2.0.9 Ajax4JSF http://www.jboss.org/jbossrichfaces/ 3.1.4.GA Barbecue http://barbecue.sourceforge.net/ 1.0.6d Commons BeanUtils commons.apache.org/beanutils/ 1.7.0 Commons Configurations http://commons.apache.org/configuration/ 1.3 Facelets https://facelets.dev.java.net/ 1.1.11 Hibernate http://www.hibernate.org/ 3.2.6.ga Hibernate Annotations http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/ 3.3.0.ga JAXB http://java.sun.com/webservices/jaxb/ 2.1 Jcaptcha jcaptcha.sourceforge.net/ 1.0-RC5 JPA http://java.sun.com/developer/technicalArticles/J2EE/jpa/ 1.0 JSF http://java.sun.com/javaee/javaserverfaces/ 1.1 JSFUnit http://www.jboss.org/jsfunit/ 1.0.GA Log4J http://logging.apache.org/log4j/ 1.2.14 MyFaces Core http://myfaces.apache.org/ 1.1.6 RichFaces http://www.jboss.org/jbossrichfaces/ 3.1.4.GA Spring http://www.springframework.org/ 2.5.5 Spring Security http://www.springframework.org/ 2.0.4 Tomahawk http://myfaces.apache.org/tomahawk/ 1.1.8 Velocity http://velocity.apache.org/ 1.5 WS-I http://www.ws-i.org/ Configuración del Componente de Auditoria 04/05/2010 Página 23 de 23