WebSphere Enterprise Service Bus, Versión 6.2.0 Sistemas operativos: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


Manejo de excepciones de tiempo de ejecución de servicio

Las excepciones de tiempo de ejecución de servicio son excepciones no declaradas. En general, representan condiciones de error que no están previstas por la aplicación.

Las excepciones de tiempo de ejecución de servicio se utilizan para indicar una condición no esperada en el tiempo de ejecución.

Los desarrolladores de componentes pueden manejar excepciones de tiempo de ejecución de servicio de las siguientes formas:

  1. Captarlas y realizar alguna lógica alternativa.

    Por ejemplo, si un socio no puede atender a una solicitud es posible que otro sí pueda.

  2. Captar la excepción y volver a emitirla al cliente.
  3. Volver a correlacionar la excepción con una excepción empresarial.

    Por ejemplo, un tiempo de espera para un socio resulta en una excepción empresarial que indica que se había procesado la mayor parte de la solicitud pero que había una parte de la misma que no se había completado y se debe volver a intentar más adelante o se debería haber intentado con parámetros distintos.

Si no se detecta una excepción, ésta pasa al componente que ha llamado al componente actual. Esta cadena de llamadas continúa hasta el llamante original de la cadena. Por ejemplo, Módulo A llama a Módulo B y Módulo B llama a Módulo C; a continuación, Módulo C genera una excepción, que Módulo B puede detectar o no. Si Módulo B no detecta la excepción, ésta viaja de vuelta al Módulo A.

Cuando se genera una excepción ServiceRuntimeException desde un componente, la transacción actual se retrotrae. Este tipo de proceso de excepciones se repite para todos los componentes de la cadena. Por ejemplo, si se genera una ServiceRuntimeException desde Módulo C, dicha transacción se marcará para retrotracción. A continuación, se genera la excepción en el Módulo B, donde si no se capta y otra transacción está presente, dicha transacción también se retrotraerá. Los desarrolladores de componentes puede utilizar los calificadores QoS (Quality of service) para controlar si se producen invocaciones en la transacción actual o en una transacción nueva. Por lo tanto si Módulo A llama a Módulo B y Módulo B forma parte de una transacción nueva, entonces Módulo A puede "detectar" una excepción ServiceRuntimeException de Módulo B y puede continuar procesándose, sin que la transacción de Módulo A se retrotraiga.

Nota: Puesto que las excepciones de tiempo de ejecución no se declaran como parte de la interfaz, los desarrolladores de componentes deben intentar resolver la excepción y por lo tanto impedir que una excepción de tiempo de ejecución se propague sin querer al cliente, si el cliente es una interfaz de usuario.

Debe tener en cuenta que el contenido de la transacción retrotraída puede variar, dependiendo de la naturaleza de la transacción. Por ejemplo, los procesos BPEL de larga ejecución se pueden segmentar en muchas transacciones más pequeñas. Las llamadas de petición y respuesta asíncronas se dividen fuera de una transacción de forma automática (de lo contrario, es posible que la aplicación que realiza la llamada tenga que esperar mucho tiempo a la respuesta).

En los casos en los que una transacción se divide en varias llamadas asíncronas (a diferencia de una transacción grande), el trabajo inicial de la transacción se retrotraerá cuando ocurra ServiceRuntimeException. No obstante, la respuesta de la llamada asíncrona se envía desde una transacción diferente y, dado que la respuesta de una llamada asíncrona no tendrá ningún lugar donde dirigirse, se crea un suceso en FEM (Failed Event Manager).

En la siguiente lista se muestran las 4 subclases actuales de ServiceRuntimeException:

  1. ServiceExpirationRuntimeException

    Esta excepción se utiliza para indicar que un mensaje SCA asíncrono ha caducado. Las fechas de caducidad pueden establecerse utilizando el calificador RequestExpiration en una referencia de servicio.

  2. ServiceTimeoutRuntimeException

    Esta excepción se utiliza para indicar que no se ha recibido la respuesta a una solicitud asíncrona dentro del periodo de tiempo configurado. Las fechas de caducidad pueden establecerse utilizando el calificador ResponseExpiration en una referencia de servicio.

  3. ServiceUnavailableException

    Esta excepción se utiliza para indicar que se generó una excepción al invocar un servicio externo mediante una importación.

  4. ServiceUnwiredReferenceRuntimeException

    Esta excepción se utiliza para indicar que la referencia de servicio del componente no está conectada correctamente.


concept Tema de concepto

Condiciones de uso | Comentarios


Icono de indicación de la hora Última actualización: 05 julio 2010


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/crec_srexceptions.html
Copyright IBM Corporation 2005, 2010. Reservados todos los derechos.
Este centro de información está basado en tecnología Eclipse (http://www.eclipse.org).