miércoles, 9 de junio de 2010

Consumir desde BPEL un Web Service con seguridad habilitada

Con frecuencia es necesario consumir servicios Web, con seguridad habilitada, desde Oracle BPEL, aquí tienes la manera de realizarlo utilziando JDeveloper:

Lo primero es crear un PartnerLink para comsumir el servicio, esto lo hacemos dando click derecho en el área de trabajo de BPEL o arrastrando el ícono correspondiente desde "BPEL Services" en la "Component Pallete".


En la ventana "Create PartnerLink" damos click sobre el botón "Define Service":


Seleccionamos "Web Service" y damos clic en OK.


En la pagina de configuración introducimos la dirección de WSDL del servicio web y le damos un nombre al mismo. Damos clic en OK.


Ahora hay que agregar una actividad "Invoke" al flujo BPEL para justamente invocar al PartnerLink recién creado. Para hacer esto debemos dar clic sobre la flecha que apunta hacia el PartnerLink y arrastrarla hasta el mismo.

Una vez incluida en el flujo, damos doble clic sobre la actividad "Invoke" para configurarla. Le damos un nombre y generamos las variables de entrada y salida dando clic sobre el signo "+" correspondiente a cada una y aceptando el nombre por defecto.


Ahora es justamente cuando vamos a editar nuestro PartnerLink para incorporarle las características de seguridad:


abrimos el archivo "Composite"


jueves, 3 de junio de 2010

BAM-00404: Authentication Failed

A propósito del Post anterior "Tip: Excepción BAM-00404 Authentication failed. User is marked inactive" hay varios puntos que comentar:
  1. La solución recomendada por la documentación de BAM para el ya mencionado error, es entrar al administrador de BAM (Lo que implica crear un usuario nuevo con privilegios de administrador) y eliminar el usuario inactivo, cerrar la sesión y volver a autenticarse con el usuario recien eliminado. Esto resuelve el problema de la inactivación.
  2. La solución anterior es parcial, ya que depués de algunos minutos el usuario se vuelve a inactivar, inclusi si estas en una sesión activa en ese momento. Esto es por que BAM checa periodicamente al usuario utilizando la API user/role y no la esta encontrando en el Security Provider en el que JPS/OPSS busca.
  3. La solución correcta para este problema es (que a mi me funcionó) fue desactivar este chequeo periódico por medio del archivo de configuración de BAM. Esto s hace agregando la siguiente etiqueta al archivo.


El archivo de configuración del servidor de BAM se encuentra ubicado en:

\...\ORA_HOME\user_projects\domains\\servers\\tmp\_WL_user\oracle-bam_11.1.1\1o1igs\APP-INF\classes\config\BAMServerConfig.xml

*La versión de BAM que utilizo es la 11.1.1.2.0

Quiero agradecer a Sanjay Baldwa (usuario de los oracle forums) por su valiosa inforamción para resolver este problema.


WaLeX

lunes, 31 de mayo de 2010

Tip: Excepción BAM-00404 Authentication failed. User is marked inactive


Hace unos días surgió la necesidad de importar los usuarios de un Active Directory (AD) hacia el Security Provider de Weblogic. Actividad que resulto relativamente fácil.
El problema surgió cuando traté de iniciar sesión como administrador en Oracle BAM, ya que me enviaba la excepción BAM-00404 Authentication failed. User is marked inactive. La solución es sencilla, pero ay ciertos aspectos de weblogic que hay que considerar:
  1. La ventana de generalidades del realm "my realm" muestra solamente 1000 usuarios (sin importar si los muestras 10, 100 o 1000 por pantalla) de modo que el resto de usuario quedan "ocultos", aunque de primera instancia da la impresión de que fueron sobreescritos, es suficiente con hacer una busqueda del usuario para darnos cuenta que sigue ahí.
  2. Cosa curiosa fue descrubrir que la única herramienta para la que quedó "inactivo" mi usuario administrador fue para BAM, a pesar de tratarse de exactamente el mismo usuario para el resto de consolas (EM, SOA). Y al probar los demas usuarios con otros roles para BAM, resulta que también quedarón inactivos, lo que me hizó pensar que este problema es solamente para BAM.

Para resolver este problema fue suficiente con crear un nuevo usuario administrador para BAM (también funciona si eliminas el actual usuario administrador y lo vuelves a crear con el mismo nombre. Yo no hice eso, ya que mi usuario administrador era común entre el resto de herramientas y en las demás estaba funcionandco correctamente). Hay que asignar este usuario recien creado a los grupos Administrators y OracleSystemUser. Y por último en el Enterprise Manager debemos asignar este usuario al rol de Administrator. No es necesario reiniciar los servidores, con guardar y activar los cambios basta.

A partir de ese momento puedes iniciar sesión en BAM con los provilegios de administrador usando el nuevo usuario y contraseña.

WaLeX

jueves, 20 de mayo de 2010

Como crear correlaciones en Oracle BPEL 11g

Recientemente realicé un proceso en Oracle BPEL, que después de enviar un archivo a ODI, necesitaba una respuesta por parte de ODI sobre el mismo archivo, pero debía estar seguro de que la respuesta de ODI correspondía a el archivo que BPEL le envió, para resolver esto, utilicé una correlación entre el nombre del archivo creado/enviado y el nombre del archivo de la confirmación enviada por ODI.

Asumimos que ya se esta trabajando sobre un proceso BPEL sincrono:
Primero se crea un File Adapter que tenga como respuesta el nombre del archivo creado, en mi caso, en un servidor sobre una carpeta que será leida por ODI. Para lograr esto, puedes leer la entrada "Modificar el File Adapter de BPEL para regresar el nombre del archivo creado".

Una vez hecho esto, hay que crear una correlación en la actividad Invoke del File Adapter, dando click sobre la pestaña "Correlations" y en el icono Create... Le damos un nombre a la correlación, y damos click en el Botón Add, para agregar una nueva Propiedad (Property Alias), que será justamente el campo o variable que queremos comparar con la entrada esperada de ODI, es decir el nombre del Archivo. Para esto seleccionamos dicho campo y en la parte de abajo de la ventana damos click en crear propiedad (el signo +) y después en OK.



Presionamos Ok, en las siguientes dos ventanas para regresar a la de configuración del Invoke, ahora podemos ver creada la nueva correlación, para finalizar la primera mitad, en la columna Initiate debemso cambiar el default "No" por un "Yes", para que la correlación se inicie en este punto.



miércoles, 12 de mayo de 2010

Modificar el File Adapter de BPEL para regresar el nombre del archivo creado

En ocasiones, cuando utilizamos el File Adapter en BPEL para escribir un archivo, surge la necesidad de obtener el nombre del dicho archivo. Por default, el File Adapter de Oracle BPEL que se genera utilizando JDeveloper, no genera ninguna variable de salida.

Para obtener esta funcionalidad del adaptador, es necesario modificar manualmente el archivo WSDL correspondiente al File Adapter para que pueda regresar los datos del archivo que se ha creado.

Como comentaba, la operación Write WSDL es de un solo sentido:




Lo que vamos a hacer es modificar el archivo WSDL correspondiente al adaptador para hacerlo de dos sentidos. Además, se debe importar el esquema "fileread.xsd". Necesitamos copiar este archivo desde aquí a la carpeta xsd de nuestro composite.

El contenido de fileread.xsd es:




Y para terminar, las modificaciones a realizar al WSDL estan resaltadas en rojo:




Aquí puedes descargar un ejemplo del resultado final del WSDL.


El Invoke en BPEL debe lucir como sigue:





WaLeX

Fuente | Java Oracle Blog

jueves, 15 de abril de 2010

OSB + Coherence (Intro)

El día de hoy comencé a leer un poco sobre la integración de Oracle Service Bus con Oracle Coherence ya que estoy por implementar estas tecnologías en un proyecto, por lo que en días posteriores este tema nos dará bastante material para compartir, discutir y por supuesto aprender.Por el momento les comparto un documento publicado por el Emiliano Precis en slideshare, en el que se explica a grandes rasgos una manera de integrar OSB con Coherence para crear un servicio de inserción de un elemento a caché.En varias fuentes se menciona al excelente trabajo de Bassam Hijazi desarrollando una configuración personalizada de Tranporte OSB para Coherence.Aquí la presentación, cualquier comentario es bien recibido.
The RESTful Soa Datagrid with Oracle


domingo, 11 de abril de 2010

Hablemos de Oracle Fusion Middleware

Para que todos estemos en sintonia, consideré buena idea que el primer post de este Blog sea una breve introducción al Fusion Middleware de Oracle. La siguiente explicación esta basada en el artículo de la Wikipedia Oracle Fusion Middleware con algunos aportes de su servidor.


Oracle Fusion Middleware (En ocasiones conocido solo como Fusion Middleware) consiste en varios productos de Oracle Corporation. OFM abarca multiples servicios, incluyendo Java EE y herramientas de desarrollo, integración de servicios, bussines inteligence, colaboración y gestión de contenidos. OFM depende de estandarés abiertos como BPEL, SOAP, XML y JMS.

Oracle Fusion Middleware ofrece software para el desarrollo, despliegue y gestión de la Arquitectura Orientada a Servisios (SOA). Incluye lo que Oracle llama arquitectura "hot-pluggable", que permite a los usuarios hacer un mejor uso de las aplicaciones existentes y los sistemas de otros proveedores de software como IBM, Microsoft y SAP AG.

Componentes de Oracle Fusion Middleware




Espero que esta breve introducción ayude de buena manera a familiarizarnos con los conceptos que vendremos manejando a lo largo de las publicaciónes de Walexing.

Saludos,
WaLeX

miércoles, 7 de abril de 2010

Hablando de Fusion Middleware



Walexing, es un blog dedicado a tecnologías de información, en especial a Oracle y el Fusion Middleware. El propósito de este espacio es compartir mis experiencias como consultor de estas tecnologías y enriquecerlas mismas con los aportes que pueda realizar la comunidad interesada.

¡Bienvenido pues!

Espero que Walexing te sea de utilidad, todos los comentarios son bien recibidos.




WaLeX