Para cada invocação de um Web Service,
é criado um MessageContext no cliente que acompanha o processamento da mensagem do pedido, passando pelos stubs e handlers,
e que depois acompanha o processamento da mensagem de resposta respetiva.
Do lado do servidor, existe um outro MessageContext que acompanha o processamento do pedido e da resposta.
O objeto MessageContext do cliente é uma instância diferente do objeto do servidor.
Não há partilha de dados entre eles, por serem objetos locais às respetivas máquinas virtuais.
A escrita e leitura de uma propriedade de contexto é feita através da interface java.util.Map:
... // put property in message context soapMessageContext.put("property.name", newValue); ... // get property from message context String value = (String) soapMessageContext.get("property.name"); ...
Este exemplo demonstra todos os mecanismos de passagem de dados entre as diversas camadas de um Web Service:
O código do exemplo tem comentários numerados #1, #2, #3, ... que seguem a sequência de uma invocação remota começando no cliente, passando pelo servidor e voltando ao cliente. Pelo caminho o item de informação vai acumulando mais dados.
© Docentes de Sistemas Distribuídos,
Dep. Eng. Informática,
Técnico Lisboa