Trabalhando Com o Contexto de Mensagens
É possível trabalhar com as propriedades da mensagem para afetar o modo de mediação da mensagem.
Antes de Iniciar
Sobre Esta Tarefa
A interface SIMessageContext possui uma superinterface MessageContext. Os métodos existentes em MessageContext permitem gerenciar um conjunto de propriedades da mensagem, que permitem que os manipuladores de uma cadeia de manipuladores compartilhem o estado relacionado ao processamento. Em especial, é possível obter o valor de uma propriedade específica a partir de MessageContext, usando o método getProperty, e é possível configurar o nome e o valor de uma propriedade associada a MessageContext, usando o método setProperty. Também é possível visualizar os nomes das propriedades existentes em MessageContext e remover uma propriedade (ou seja, um par nome-valor) de MessageContext.
No tempo de execução da mediação, todas as propriedades definidas pelo usuário que foram especificadas durante a configuração para a mediação atual (consulte Configurando Propriedades do Contexto de Mediação) são aplicadas ao conjunto de propriedades MediationContext.
Procedimento
- Localize o ponto no manipulador de mediação no qual você insere o código de mediação funcional, no método handle (Contexto MessageContext). Como você está trabalhando com os métodos de MessageContext que concedem acesso às propriedades da mensagem, não é necessário converter a interface para SIMessageContext, a menos que você também esteja interessados nos métodos fornecidos por SIMessageContext.
- Obtenha o SIMessage a partir do objeto MessageContext. Por exemplo,SIMessage message = ((SIMessageContext)context).getSIMessage();
- Recupere ou configure propriedades, usando os métodos de MessageContext. Por exemplo, se, durante a configuração, foi definida uma propriedade com o nome streetName, o tipo String e o valor "Main Street", o código para recuperação e impressão do nome da rua terá a seguinte aparência:
Exemplo
public boolean handle(MessageContext context) throws MessageContextException {
........
{
/* Retrieve the street name property */
String myStreetName;
myStreetName = (String) getProperty(streetName);
/* Display property value */
System.out.println(myStreetName);
}
}