Até onde a Persistent Message garante?

0 respostas
R

Senhores,

Estou enviando persistent messages para o meu MDB, no método onMessage eu registo um timer que chama o método callback ejbTimeout em alguns segundos.

A minha dúvida é a seguinte:

Por a mensagem ser persistente eu só tenho garantia de que ela vai ser entregue, ou que o MDB conseguirá chamar o callback, mesmo depois de um restart do servidor ?

Segue o código do mdb para melhor visualização do que estou querendo:

package br.com.teste;

import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.ejb.TimedObject;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;


public class HelloMDB implements MessageDrivenBean, MessageListener, TimedObject {

	private static final long serialVersionUID = 1L;
	private MessageDrivenContext ctx = null;

	public HelloMDB() {}
	
	public void onMessage(Message message) {
		System.out.println("INICIANDO O ONMESSAGE");
        TimerService timerservice = ctx.getTimerService();
        
        String bookingNr = null;
        
        try {
			bookingNr = ((TextMessage)message).getText();
		} catch (Exception e) {
			throw new RuntimeException(e.getLocalizedMessage(), e);
		}
        
        timerservice.createTimer(10000,  bookingNr);
        System.out.println("TERMINANDO O ONMESSAGE");
        return;

	}

	public void ejbTimeout(Timer timer) {
		System.out.println(timer.getInfo());
		timer.cancel();
		
	}
	
	public void setMessageDrivenContext(MessageDrivenContext ctx)
			throws EJBException {this.ctx = ctx;}

	public void ejbCreate() {}

	public void ejbRemove() {ctx = null;}



}

É que se eu reiniciar o servidor assim que o método onmessage termina de ser executado, o callback não é chamado quando eu inicio denovo…

Alguém sabe como posso resolver este problema ?

[]'s

Criado 21 de setembro de 2007
Respostas 0
Participantes 1