Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

Bloque de código
languagejava
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:

...