Exemplo: Registrando um Publicador do WS-Notification
Use esta tarefa para gravar o código de um aplicativo cliente assinante que pode assinar um aplicativo consumidor com um broker, com base na extração do código de exemplo fornecido.
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 aplicativo cliente assinante que pode assinar um aplicativo consumidor com um broker, conclua as etapas a seguir, consultando a extração do código de exemplo para obter informações adicionais.
Procedimento
Exemplo
O código de exemplo a seguir representa um cliente JAX-RPC que atua na função de registro do publicador, registrando um aplicativo (produtor) do publicador com um broker.
// 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);
// Create a reference for the publisher (producer) being registered. This contains the address of the
// producer web service.
EndpointReference publisherEPR =
EndpointReferenceManager.createEndpointReference(new URI("http://myserver.mysom.com:9080/Producer"));
// Create a list (array) of topic expressions to describe the topics to which the producer publishes
// messages. For this example you add one topic
Map prefixMappings = new HashMap();
prefixMappings.put("abc", "uri:mytopicns");
TopicExpression topic =
new TopicExpression(TopicExpression.SIMPLE_TOPIC_EXPRESSION, "abc:xyz", prefixMappings);
TopicExpression[] topics = new TopicExpression[] {topic};
// Indicar que você não deseja que o publicador utilize publicação baseada em demanda
Boolean demand = Boolean.FALSE;
// Set a value for the initial termination time of the registration. For example, set a value 1 year in
// the future
Calendar initialTerminationTime = Calendar.getInstance();
initialTerminationTime.add(Calendar.YEAR, 1);
// Criar portadores para conter os diversos valores retornados do intermediário:
// PublisherRegistrationReference: Uma referência de terminal a ser utilizada no gerenciamento de existência
// do registro
EndpointReferenceTypeHolder pubRegMgrEPR = new EndpointReferenceTypeHolder();
// ConsumerReference: Uma referência de nó de extremidade a ser utilizada na publicação de mensagens subseqüente
EndpointReferenceTypeHolder consEPR = new EndpointReferenceTypeHolder();
// Chamar a operação RegisterPublisher chamando o método associado no stub
stub.registerPublisher(publisherEPR, topics, demand, initialTerminationTime, null, pubRegMgrEPR, consEPR);
// Recuperar o PublisherRegistrationReference
EndpointReference registrationEPR = pubRegMgrEPR.value;
// Recuperar o ConsumerReference
EndpointReference consumerReferenceEPR = consEPR.value;