There is a test that checks JMSRedelivered semantics and currently fails (TransactedSessionTest.testRedeliveredFlagLocalTopic()). The question is whether the test is valid or not:
 public void testRedeliveredFlagLocalTopic() throws Exception
 {
 Connection conn = null;
 try
 {
 conn = cf.createConnection();
 Session sessSend = conn.createSession(true, Session.SESSION_TRANSACTED);
 Session sess1 = conn.createSession(true, Session.SESSION_TRANSACTED);
 Session sess2 = conn.createSession(true, Session.SESSION_TRANSACTED);
 MessageConsumer consumer1 = sess1.createConsumer(topic);
 MessageConsumer consumer2 = sess2.createConsumer(topic);
 MessageProducer producer = sessSend.createProducer(topic);
 Message mSent = sessSend.createTextMessage("igloo");
 producer.send(mSent);
 sessSend.commit();
 conn.start();
 TextMessage mRec1 = (TextMessage)consumer1.receive(2000);
 assertEquals("igloo", mRec1.getText());
 assertFalse(mRec1.getJMSRedelivered());
 sess1.rollback(); //causes redelivery for session
 mRec1 = (TextMessage)consumer1.receive(2000);
 assertEquals("igloo", mRec1.getText());
 assertTrue(mRec1.getJMSRedelivered());
 TextMessage mRec2 = (TextMessage)consumer2.receive(2000);
 assertEquals("igloo", mRec2.getText());
 assertFalse(mRec2.getJMSRedelivered()); // TEST FAILS HERE!
 sess2.rollback();
 mRec2 = (TextMessage)consumer2.receive(2000);
 assertEquals("igloo", mRec2.getText());
 assertTrue(mRec2.getJMSRedelivered());
 sess1.commit();
 sess2.commit();
 }
 finally
 {
 if (conn != null)
 {
 conn.close();
 }
 }
 }
The test fails at the marked line. Is JMSRedelivered scoped per session, or there isn't such constraint in the spec?