Ejemplo: Cómo obtener mensajes de un punto de extracción WS-Notification
Utilice esta tarea para escribir el código para un cliente JAX-RPC que actúa en el rol de consumidor del estilo de extracción y solicita mensajes de un punto de extracción, según el extracto del código de ejemplo proporcionado.
Acerca de esta tarea
Este ejemplo se basa en el uso de las API Java™ para las API de llamadas de procedimiento remoto basadas en XML (JAX-RPC) con el código generado mediante la herramienta WSDL2Java (se ejecuta en el WSDL del intermediario de notificaciones generado como resultado de crear el punto de servicio de WS-Notification) y las API y SPI de WebSphere Application Server.
Para escribir el código para un cliente JAX-RPC que actúa en el rol de consumidor del estilo de extracción y solicita mensajes de un punto de extracción, realice los pasos siguientes, haciendo referencia a la extracción de código de ejemplo para obtener más información.
Procedimiento
- Busque el servicio JAX-RPC. El nombre JNDI es específico a su implementación de cliente de servicios web.
- Obtenga un archivo de apéndice (stub) para el puerto en el que desea invocar las operaciones
- Asocie la solicitud con un punto de extracción. El pullPointEPR es la EndpointReference que se devuelve después de invocar la operación CreatePullPoint.
- Especifique el número de mensajes que desea recuperar.
- Cree cualquier información opcional.
- Cree la información de la solicitud.
- Invoque la operación GetMessages mediante la llamada al método asociado en el archivo de apéndice (stub).
- Obtenga los mensajes devueltos de la respuesta.
Ejemplo
El siguiente código de ejemplo describe un cliente JAX-RPC que actúa en el rol de consumidor del estilo de extracción y solicita mensajes de un punto de extracción:
// Buscar el servicio JAX-RPC. El nombre JNDI es específico a su
implementación de cliente de servicios web
InitialContext context = new InitialContext();
javax.xml.rpc.Service service = (javax.xml.rpc.Service) context.lookup(
"java:comp/env/services/NotificationBroker");
// Obtenga un archivo de apéndice (stub) para el puerto en el que desea invocar las operaciones
NotificationBroker stub = (NotificationBroker) service.getPort(NotificationBroker.class);
// Asocie la solicitud con un punto de extracción. El pullPointEPR es la EndpointReference devuelta
// desde la invocación de la operación CreatePullPoint
((Stub) stub)._setProperty(WSAConstants.WSADDRESSING_DESTINATION_EPR, pullPointEPR);
// Especifique el número de mensajes que desea recuperar
Integer numberOfMessages = new Integer(2);
// Cree cualquier información opcional
SOAPElement[] optionalInformation = new SOAPElement[] {};
// Cree la información de la solicitud
GetMessages request = new GetMessages(numberOfMessages, optionalInformation);
// Invoque la operación GetMessages mediante la llamada al método asociado en el archivo de apéndice (stub)
GetMessagesResponse response = stub.getMessages(request);
// Obtenga los mensajes devueltos de la respuesta
NotificationMessage[] messages = response.getMessages();