Tranzakció visszavonás

A következő MDB megállapítja, hogy újra lett-e küldve az üzenet és ha igen, akkor visszavonja a tranzakciót. A visszavont tranzakció miatt az üzenetsor újra megpróbálja elküldeni az üzenetet, mivel ez már egyszer el lett küldve, ezért fogadjuk. A getJMSRedelivered() true értéket fog adni. Az onMessage() függvényt elég megváltoztatni, és egy új tagváltozót bevezetni:

        @Resource	
	MessageDrivenContext ctx; 
 
	public void onMessage(final Message message) {
		try {
			// Step 9. We know the client is sending a text message so we cast
			TextMessage textMessage = (TextMessage) message;
 
			// Step 10. get the text from the message.
			String text = textMessage.getText();
 
			if (!textMessage.getJMSRedelivered()) {
				// Step 11. rollback delivery of message if the first time
				System.out.println("message " + text
						+ " received for the first time");
				ctx.setRollbackOnly();
			} else {
				// Step 12. read the message
				System.out.println("message " + text
						+ " received for the second time");
			}
 
		} catch (JMSException e) {
			e.printStackTrace();
		}
	}

A hozzá tartozó kliens kódja ugyanaz is lehet mint az előző példában.