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.

No WebSphere Application Server existem duas implementações do serviço WS-Notification: Versão 6.1 e Versão 7.0. Este exemplo de JAX-RPC pode interagir com êxito com os pontos de serviço do WS-Notification Versão 6.1 ou Versão 7.0. No entanto, se quiser usar WS-Notification com conjuntos de políticas, por exemplo, para ativar a composição com WS-ReliableMessaging, seus aplicativos WS-Notification deverão ser codificados para usar o modelo de programação Java API for XML-based Web Services (JAX-WS) e deverão interagir com os pontos de serviço WS-Notification Versão 7.0. Se você for iniciante na programação de aplicativos clientes JAX-WS, consulte os seguintes tópicos:

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

  1. Procure o serviço JAX-RPC. O nome JNDI é específico de sua implementação do cliente de serviço da web.
  2. Obtenha um stub para a porta na qual deseja chamar operações.
  3. Crie uma referência para o publicador (produtor) que está sendo registrado. Contém o endereço do serviço da web do produtor.
  4. Crie uma lista (matriz) de expressões de tópico para descrever os tópicos nos quais o produtor publica mensagens.
  5. Indique que você não deseja que o publicador use publicação baseada em demanda.
  6. Configure um valor para o horário de rescisão inicial do registro. Por exemplo, é possível configurar um valor de 1 ano no futuro.
  7. Crie portadores que contenham os diversos valores retornados do broker:
    • PublisherRegistrationReference define a referência de terminal a ser usada no gerenciamento do tempo de vida do registro.
    • ConsumerReference define a referência de terminal a ser usada na publicação de mensagens subsequente.
  8. Chame a operação RegisterPublisher, chamando o método associado no stub.
  9. Recupere a PublisherRegistrationReference.
  10. Recupere a ConsumerReference.

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;

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjwsn_ex_pub_reg
Nome do arquivo: tjwsn_ex_pub_reg.html