[jboss-user] [JBoss Messaging] - Problem with transaction rollback

busawreck do-not-reply at jboss.com
Fri Oct 20 10:23:48 EDT 2006


I have an EJB business method that does two tasks; 
1) Calls another EJB:s business method which sends a message to a topic.
2) Updates a database table.

See code below.

I would like theese tasks done within a single transaction, so I have annotated the business methods involved accordingly. The problem is that even if I mark the transaction with setRollbackOnly() before it returns, the message is still put on the topic and read by its' consumer, while the database is not updated..

As can be seen by my pseudo-code below, I have not set the session to be transacted (if I do the messages are never consumed), but those settings should be ignored in EJB:s accordingly to the ejb-spec anyway.
	
What am I doing wrong?

public @Stateless BusinessServiceBean implements BusinessService {
	
	@TransactionAttribute(REQUIRES_NEW)
	public void doStuff() {
		...
		senderService.sendMessage(..);
		saveStuffToDb(..);
		sessionContext.setRollbackOnly();	
	}
}

public @Stateless SenderServiceBean implements SenderService {
	
	@TransactionAttribute(REQUIRED)
	public void sendMessage(..) {
		...
		Session s = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		producer = session.createProducer(topic);
		producer.sendMessage(..)
	}
}

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3979672#3979672

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3979672



More information about the jboss-user mailing list