Cómo trabajar con el contexto de mensaje
Puede trabajar con las propiedades de mensaje para afectar el modo en que se media un mensaje.
Antes de empezar
Acerca de esta tarea
La interfaz SIMessageContext tiene una superinterfaz MessageContext. Los métodos de MessageContext le permiten gestionar un conjunto de propiedades de mensajes que permiten a los manejadores de una cadena de manejadores compartir el estado relacionado con el proceso. Lo más importante, puede obtener el valor de una propiedad específica de MessageContext utilizando el método getProperty y puede establecer el nombre y el valor de una propiedad asociada a MessageContext utilizando el método setProperty. Asimismo, puede ver los nombres de las propiedades de este MessageContext y suprimir una propiedad (esto es, una pareja de nombre y valor) de MessageContext.
Durante la ejecución de una mediación, a todas las propiedades definidas por el usuario que se han establecido durante la configuración de la mediación actual (consulte Configuración de las propiedades de contexto de mediación) se les aplica el conjunto de propiedades MediationContext.
Procedimiento
- Localice el punto del manejador de mediación en el que desea insertar el código de mediación funcional, en el método handle (MessageContext context). Dado que trabaja con los métodos MessageContext que le proporcionan acceso a las propiedades de mensaje, no tiene que convertir la interfaz a SIMessageContext a menos que también esté interesado en los métodos proporcionados por SIMessageContext.
- Obtenga el SIMessage del objeto MessageContext. Por ejemplo, SIMessage message = ((SIMessageContext)context).getSIMessage();
- Recupere o establezca las propiedades utilizando los métodos MessageContext. Por ejemplo, si se ha definido una propiedad durante la configuración con el nombre streetName, el tipo String y el valor "Main Street", el código para recuperar e imprimir el nombre de la calle podría tener un aspecto similar a este:
Ejemplo
public boolean handle(MessageContext context) throws MessageContextException {
........
{
/* Recuperar la propiedad de nombre de la calle */
String myStreetName;
myStreetName = (String) getProperty(streetName);
/* Visualizar el valor de la propiedad */
System.out.println(myStreetName);
}
}