Exemplo: Obtendo Mensagens de um Ponto de Pull do WS-Notification
Use esta tarefa para gravar o código de um cliente JAX-RPC que atua na função de consumidor de estilo de Pull, solicitando mensagens de um ponto de pull, com base na extração de código de exemplo fornecida.
Sobre Esta Tarefa
Esse exemplo é baseado no uso de APIs Java™ API for XML-based remote procedure calls (JAX-RPC) com código gerado usando a ferramenta WSDL2Java (executada com relação ao WSDL do Broker de Notificação gerado como resultado da criação do ponto de serviço WS-Notification) e as APIs e SPIs do WebSphere Application Server.
Para gravar o código de um cliente JAX-RPC que atua na função de consumidor de estilo de Pull, solicitando mensagens de um ponto de Pull, conclua as etapas a seguir, consultando a extração do código de exemplo para obter informações adicionais.
Procedimento
- Procure o serviço JAX-RPC. O nome JNDI é específico de sua implementação do cliente de serviço da web.
- Obtenha um stub para a porta na qual deseja chamar operações.
- Associe a solicitação a um ponto de Pull. O pullPointEPR é o EndpointReference retornado pela chamada da operação CreatePullPoint.
- Especifique o número de mensagens que deseja recuperar.
- Crie as informações opcionais.
- Crie as informações da solicitação.
- Chame a operação GetMessages, chamando o método associado no stub.
- Obtenha as mensagens retornadas na resposta.
Exemplo
O código de exemplo a seguir descreve um cliente JAX-RPC que atua na função de consumidor de estilo de Pull, solicitando mensagens de um ponto de Pull:
// Look up the JAX-RPC service. The JNDI name is specific to your web services client implementation
InitialContext context = new InitialContext();
javax.xml.rpc.Service service = (javax.xml.rpc.Service) context.lookup(
"java:comp/env/services/NotificationBroker");
// Get a stub for the port on which you want to invoke operations
NotificationBroker stub = (NotificationBroker) service.getPort(NotificationBroker.class);
// Associar o pedido a um ponto de pull. O pullPointEPR é o EndpointReference retornado
// da chamada da operação CreatePullPoint
((Stub) stub)._setProperty(WSAConstants.WSADDRESSING_DESTINATION_EPR, pullPointEPR);
// Especifique o número de mensagens que deseja recuperar
Integer numberOfMessages = new Integer(2);
// Criar informações opcionais
SOAPElement[] optionalInformation = new SOAPElement[] {};
// Criar as informações do pedido
GetMessages request = new GetMessages(numberOfMessages, optionalInformation);
// Chamar a operação GetMessages chamando o método associado no stub
GetMessagesResponse response = stub.getMessages(request);
// Obter as mensagens retornadas da resposta
NotificationMessage[] messages = response.getMessages();