Os handlers são configurados numa cadeia. A cadeia de processamento é especificada num ficheiro como a seguinte. Neste caso, serão chamados três handlers para cada mensagem: um para imprimir a mensagem na consola, outro para cifrar a mensagem, e outro para imprimir a mensagem cifrada na consola.
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"> <handler-chain> <handler> <handler-class>example.ws.handler.LogHandler</handler-class> </handler> <handler> <handler-class>example.ws.handler.CipherHandler</handler-class> </handler> <handler> <handler-class>example.ws.handler.LogHandler</handler-class> </handler> </handler-chain> </handler-chains>
A configuração dos handlers é diferente no servidor e no cliente. Em ambos os casos não são necessárias alterações aos pom.xml.
@HandlerChain(file = "/handler-chain.xml")
Os handlers são classes Java como quaisquer outras.
No entanto,
como são instanciadas pelo run-time e não pela aplicação em si,
não há forma direta de lhes aceder.
Por este motivo,
não se conseguem "passar" argumentos diretamente para os handlers.
As formas possíveis de parametrizar são as seguintes:
As variáveis são globais à instância da Java Virtual Machine (JVM) que corresponde a um processo no sistema operativo; por isso, diferentes programas em execução -- um cliente e um servidor -- terão diferentes valores nas variáveis.
As variáveis globais podem ser preenchidas, por exemplo, no método main() do programa que vai usar os handlers.
© Docentes de Sistemas Distribuídos,
Dep. Eng. Informática,
Técnico Lisboa