Exemplo: Criando um Esqueleto de Serviço da Web do Consumidor de Notificação

Use este exemplo ao criar um serviço da web que implementa o NotificationConsumer portType definido pela especificação Web Services Base Notification.

Sobre Esta Tarefa

Esta tarefa fornece dois exemplos de código:
  • Um documento WSDL de exemplo, que descreve um serviço da web que implementa o NotificationConsumer portType definido pela especificação Web Services Base Notification.
  • Uma implementação básica do Service Endpoint Interface (SEI), gerada a partir do documento WSDL anterior, usando a ferramenta WSDL2Java.
Nota: O artigo Gravando Aplicativos JAX-WS para WS-Notification também inclui um exemplo de um serviço da Web consumidor.

Procedimento

Se você estiver criando um esqueleto de serviço da web do consumidor de notificação, consulte os seguintes exemplos de código.

Exemplo

O documento WSDL de exemplo a seguir descreve um serviço da web que implementa o NotificationConsumer portType definido pela especificação Web Services Base Notification:

<?xml version="1.0" encoding="utf-8"?>

<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:wsn-bw="http://docs.oasis-open.org/wsn/bw-2"
    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="uri:example.wsn/consumer"
    targetNamespace="uri:example.wsn/consumer">

    <wsdl:import namespace="http://docs.oasis-open.org/wsn/bw-2"
                           location="http://docs.oasis-open.org/wsn/bw-2.wsdl" />

    <wsdl:binding name="NotificationConsumerBinding" type="wsn-bw:NotificationConsumer">
        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="Notify">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
        </wsdl:operation>
    </wsdl:binding>

    <wsdl:service name="NotificationConsumerService">
        <wsdl:port name="NotificationConsumerPort" binding="tns:NotificationConsumerBinding">
            <wsdlsoap:address location="http://myserver.mycom.com:9080/Consumer" />
        </wsdl:port>
    </wsdl:service>

</wsdl:definitions>

O exemplo a seguir mostra uma implementação básica do SEI (Service Endpoint Interface) gerada a partir do documento WSDL precedente utilizando a ferramenta WSDL2Java:

public class ConsumerExample implements NotificationConsumer {
        
    public void notify(NotificationMessage[] notificationMessage, SOAPElement[] any) 
                                                                    throws RemoteException {
        // Processar cada NotificationMessage
        for (int i=0; i<notificationMessage.length; i++) {                
            NotificationMessage message = notificationMessage[i];
                
            // Obter o conteúdo da mensagem
            SOAPElement messageContent = message.getMessageContents();
                
            // Obter a expressão que indica a qual tópico a mensagem está associada
            TopicExpression topic = message.getTopic();                
                
            // Get a reference to the producer (this value is optional and so might be null)
            EndpointReference producerRef = message.getProducerReference();
                
            // Get a reference to the subscription (this value is optional and so might be null)
            EndpointReference subscriptionRef = message.getSubscriptionReference();
                
            // Processamento definido pelo usuário ...                

        }
    }
}

Í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_cons
Nome do arquivo: tjwsn_ex_cons.html