TP4 EJB : Utilisation de JMS et de Message Driven Beans

De $1

Version de 13:17, 18 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Faisons marcher l'exemple du cours

Repartez du TP2. Dans la liste des EJBs, ajoutez un Message Driven Bean.
Dans la méthode onMessage(), mettez le code de l'exemple du cours. Ce Bean doit ressembler à celui-ci une fois terminé :

import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author lm
 */
@MessageDriven(mappedName = "jms/NewMessage", activationConfig =  {
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
        @ActivationConfigProperty(propertyName = "clientId", propertyValue = "NewMessageBean"),
        @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "NewMessageBean")
    })
public class NewMessageBean implements MessageListener {
    @PersistenceContext
    private EntityManager em;
    
    public NewMessageBean() {
    }

    
    public void onMessage(Message msg) {
        if(msg instanceof TextMessage) {            TextMessage tm = (TextMessage) msg;
           try {  
              String text = tm.getText();
              System.out.println("Received new message :"  + text);
            } catch (JMSException e) {
              e.printStackTrace();
            }       
        }
    }

    public void persist(Object object) {
        em.persist(object);
    }
    
}