package org.jboss.test.mdb.bean;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.ejb.EJBException;
import javax.jms.MessageListener;
import javax.jms.Message;
import javax.naming.InitialContext;
import javax.transaction.Status;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import javax.transaction.xa.XAResource;
public class BMPBean implements MessageDrivenBean, MessageListener{
org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(getClass());
private MessageDrivenContext ctx = null;
public BMPBean() {
}
public void setMessageDrivenContext(MessageDrivenContext ctx)
throws EJBException {
this.ctx = ctx;
}
public void ejbCreate() {}
public void ejbRemove() {ctx=null;}
public void onMessage(Message message) {
log.debug("DEBUG: BMPBean got message" + message.toString() );
try {
TransactionManager tm = (TransactionManager)new InitialContext().lookup("java:/TransactionManager");
Transaction threadTx = tm.suspend();
log.debug("DEBUG Tx="+threadTx);
log.debug("Sleeping for 10 seconds");
try { Thread.currentThread().sleep(1000*10);
} catch ( InterruptedException e ) {}
log.debug("Sleep done");
if( threadTx != null )
tm.resume(threadTx);
} catch (Exception e) {
log.debug("BMPBean Error:"+e);
}
}
}