Ejemplo: Creación de un esqueleto de servicios web del consumidor de notificaciones
Utilice este ejemplo al crear un servicio web que implementa el NotificationConsumer portType definido por la especificación Web Services Base Notification.
Acerca de esta tarea
Esta tarea proporciona dos ejemplos de código:
- Un documento WSDL de ejemplo que describe un servicio web que implementa el NotificationConsumer portType definido por la especificación Web Services Base Notification.
- Una implementación básica de la SEI (Interfaz de punto final de servicio) generada a partir del documento WSDL anterior utilizando la herramienta WSDL2Java.
Nota: El artículo Escritura de aplicaciones JAX-WS para
WS-Notification también incluye un ejemplo de un servicio Web de consumidor.
Procedimiento
Si va a crear un esqueleto de servicios web del consumidor de notificaciones, consulte los ejemplos de código siguientes.
Ejemplo
El siguiente documento WSDL de ejemplo describe un servicio web que implementa el NotificationConsumer portType definido por la especificación 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>
El ejemplo siguiente ilustra una implementación básica de la SEI (Interfaz de punto final de servicio) generada a partir del documento WSDL utilizando la herramienta WSDL2Java:
public class ConsumerExample implements NotificationConsumer {
public void notify(NotificationMessage[] notificationMessage, SOAPElement[] any)
throws RemoteException {
// Process each NotificationMessage
for (int i=0; i<notificationMessage.length; i++) {
NotificationMessage message = notificationMessage[i];
// Get the contents of the message
SOAPElement messageContent = message.getMessageContents();
// Get the expression indicating which topic the message is associated with
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();
// User defined processing ...
}
}
}