La instancia de algun proceso BPEL no aparece en la consola

enero 13, 2009

En el trabajo hay un proceso de BPEL que trae algunos documentos mediante un servicio web y luego los inserta en una base de datos. Algunas ocasiones -especialmente cuando eran muchos documentos o archivos de gran tamaño- el proceso nunca aparecía en la consola despues de ser invocado. Yo esperaba que si no se insertaban los datos porque habia sucedido algun error con el servicio, al menos podria ver el flujo del proceso para saber donde ocurrió el error y tratar de resolverlo. Pero simplemente no aparecían en el listado de instancias, ni marcados como erroneos y mucho menos como ejecutados correctamente.
Donde si aparecían es en la pestaña “Administration” y luego en “Recover(Invokes)”, pero no se registra el flujo del proceso ni nada.

Investigando un poco encontré que probablemente esto se debía a que ocurría un timeout en el proceso, ocasionado seguramente por la cantidad de documentos y el tamaño de los archivos. Para resolverlo hay que modificar la configuración del tiempo de expiración de las transacciones(transaction-timeout) y el tiempo de espera maximo para la respuesta de algun servicio(syncMaxWaitTime). Esto se explica claramente en el primer enlace en la parte de abajo, de todos modos dejo aqui la forma de hacerlo:

  1. Establecer las propiedades transaction-timeout y syncMaxWaitTime de la siguiente forma:

    Propiedad Ubicación El valor debe ser… Ejemplo
    transaction-timeout SOA_Oracle_Home\j2ee\home\config\transaction-manager.xml Mayor que el valor de transaction-timeout en orion-ejb-jar.xml y el valor de syncMaxWaitTime. 7200
    transaction-timeout SOA_Oracle_Home\j2ee\home\application-deployments\orabpel\ejb_ob_engine\orion-ejb-jar.xml Menor que el valor de transaction-timeout en transaction-manager.xml.

    Nota: Debes cambiar el valor de la propiedad transaction-timeout en todos los lugares donde aparece en este archivo.

    3600
    syncMaxWaitTime SOA_Oracle_Home\bpel\domains\domain_name\config\domain.xml

    donde domain_name es el nombre del dominio en el que reside el proceso.

    Menor que el valor de transaction-timeout en orion-ejb-jar.xml. 240

    Recuerda que tienes que reiniciar el servidor del SOA despues de modificar los archivos para que los cambios surtan efecto. En mi caso los valores que estableci fueron 7200, 3600 y 1200 en el orden en el que aparecen en la tabla. Despues de esto los procesos se han estado ejecutando correctamente y aparecen en la consola en el listado de instancias.

Fuentes:
Oracle® BPEL Process Manager Developer’s Guide 10g (10.1.3.1.0)
Oracle SOA Stuff
ShanBPEL

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: