...
| Bloque de código | ||
|---|---|---|
| ||
package es.um.atica.prueba.push; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import org.jboss.seam.annotations.Logger; import org.jboss.seam.annotations.Name; import org.jboss.seam.core.Events; import org.jboss.seam.log.Log; import org.jboss.seam.util.Strings; import es.um.atica.faces.push.PushEvent; @MessageDriven(activationConfig = { @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Topic" ), @ActivationConfigProperty( propertyName = "destinationLookup", propertyValue = "jms/pruebaPushTopic" ) }) @Name("pushReceiver") @TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED) public class PushReceiver implements propertyName = "destinationLookup", propertyValue = "jms/pruebaPushTopic" ) }) @Name("pushReceiver") @TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED) public class PushReceiver implements MessageListener { @Logger private Log log; @Override MessageListener { @Logger private Log log; protected void raiseEvent(String eventType, PushEvent event) { if (Strings.isEmpty(eventType)) { log.info("Raise push event '#0'", event.getClass().toString()); Events.instance().raiseEvent(event); } else { log.info("Raise push event '#0'", eventType); Events.instance().raiseEvent(eventType, event); } } @Override public void onMessage(Message jmsMessage) { try { String messageeventType = jmsMessage.getStringProperty("messageeventType"); PushEvent event Events.instance().raiseEvent(new PushEvent(message)); = jmsMessage.getBody(PushEvent.class); raiseEvent(eventType, event); } catch (JMSException ex) { log.error("Problem sending push event message.", ex); } } } } |
Ahora, usamos PushManager#fireEvent() para lanzar eventos JMS desde un nodo del cluster, que permite después lanzar los eventos de JBoss Seam en todos los nodos el cluster y asi enviar el mensaje al canal push correspondiente:
...