Bugs item #526696, was opened at 2002-03-06 23:18
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=526696&group_id=22866

Category: JBossMQ
Group: v2.4 (stable)
Status: Open
Resolution: None
Priority: 5
Submitted By: Kelly McTiernan (kellymct)
Assigned to: Andreas Schaefer (schaefera)
Summary: session.recover() doesn't work

Initial Comment:
All operating systems.
Any version of Java.
N/A.
Call session.recover().

According to the JMS spec, a call to session.recover() 
from a transacted session should return an 
IllegalStateException.  This it does, with the message:

The session is trasacted.

When called with a non-transacted session, however, 
recover still throws an IllegalStateException, this 
time with the message:

The session is not transacted.

Looking into the code a little, it turns out that the 
recover() method does a check for the session being 
transacted, and throws the IllegalStateException with 
the second message if it is.  Then it proceeds to call 
rollback(), which does a check for the session NOT 
being transacted, and throws the IllegalStateException 
with the second message if it's not.

----------------------------------------------------------------------

Comment By: Seth Sites (thesitesman)
Date: 2002-07-19 12:20

Message:
Logged In: YES 
user_id=579275

upon  reviewing the spec again for one of the other 
bugs, it looks like some other minor modifications are 
needed.   The wording in the spec makes it seem that 
when any client who closes connection (willfully or not) 
with unack'd messages, those messages should get 
redelivered.

pg 58
Closing a connection does NOT force an
acknowledgement of client-acknowledged sessions.

I would assume that these messages should be placed 
back into the queue immediately and not only when the 
server is restarted.

-Seth

----------------------------------------------------------------------

Comment By: Seth Sites (thesitesman)
Date: 2002-07-19 11:47

Message:
Logged In: YES 
user_id=579275

This is my proposed fix for session.recover().  It also 
handles redelivery of messages that are still 
unacknowledged when a client's connection crashes.

I have tested this code in HEAD and it also did not break 
any of the testsuite tests.  It is a long fix and involves 
17 files, so I hope they all the diff's fit in here.


RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/C
onnection.java,v
retrieving revision 1.20
diff -u -r1.20 Connection.java
--- Connection.java     2 May 2002 02:44:28 -
0000    1.20
+++ Connection.java     19 Jul 2002 07:24:10 -
0000
@@ -75,7 +75,7 @@
  * @author    Norbert Lataille ([EMAIL PROTECTED])
  * @author    Hiram Chirino ([EMAIL PROTECTED])
  * @author     <a href="[EMAIL PROTECTED]">Peter Antman</a>
- * @version   $Revision: 1.20 $
+ * @version   $Revision: 1.21 $
  * @created   August 16, 2001
  */
 public class Connection implements 
java.io.Serializable, javax.jms.Connection
@@ -1139,7 +1139,20 @@
       //This session should not be in the "destinations" 
object anymore.
       //We could check this, though
    }
-   
+
+   void recover ( Subscription s )
+   throws JMSException
+   {
+      try
+      {
+         serverIL.recover(connectionToken, s);
+      }
+      catch ( Exception e )
+      {
+         throw new SpyJMSException("Cannot recover 
session", e);
+      }
+   }
+
    void unsubscribe(DurableSubscriptionID id)
    throws JMSException
    {



RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/S
pySession.java,v
retrieving revision 1.14
diff -u -w -r1.14 SpySession.java
--- SpySession.java     25 May 2002 22:51:03 -0000      1.14
+++ SpySession.java     19 Jul 2002 07:26:39 -
0000
@@ -37,7 +37,7 @@
  * @author     Norbert Lataille ([EMAIL PROTECTED])
  * @author     Hiram Chirino ([EMAIL PROTECTED])
  * @created    August 16, 2001
- * @version    $Revision: 1.14 $
+ * @version    $Revision: 1.15 $
  */
 public abstract class SpySession
        implements Session, XASession {
@@ -385,7 +385,43 @@
          throw new IllegalStateException( "The session is 
transacted" );
       }
 
-      rollback();
+      //stop message delivery
+      try
+      {
+         System.out.println( "stopped message delivery 
for " + connection.getClientID() );
+         connection.stop();
+      }
+      catch (JMSException e)
+      {
+         throw new SpyJMSException("Could not stop 
message delivery", e);
+      }
+
+      //we need a function to call on the server to 
recover
+      if ( acknowledgeMode == 
Session.CLIENT_ACKNOWLEDGE ) {
+         try
+         {
+            Iterator i = connection.subscriptions.values
().iterator();
+            while ( i.hasNext() )
+            {
+               connection.recover ( ((SpyQueueReceiver)
i.next()).getSubscription() );
+            }
+         }
+         catch ( Exception e )
+         {
+            throw new SpyJMSException ("Unable to recover 
session ", e );
+         }
+      }
+
+      //Restart the delivery sequence including all 
unacknowledged messages that had been previously 
delivered. Redelivered messages do not have to be 
delivered in exactly their original delivery order.
+      try
+      {
+         System.out.println( "restarted message delivery 
for " + connection.getClientID() );
+         connection.start();
+      }
+      catch ( JMSException e )
+      {
+         throw new SpyJMSException("Could not resume 
message delivery", e);
+      }
 
    }
 



RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/Invoker.java,v
retrieving revision 1.1
diff -w -u -r1.1 Invoker.java
--- Invoker.java        4 May 2002 03:07:49 -0000       1.1
+++ Invoker.java        19 Jul 2002 07:28:56 -0000
@@ -28,7 +28,7 @@
  * @author    <a 
href="[EMAIL PROTECTED]">Hiram Chirino</a>
  * @author    <a 
href="[EMAIL PROTECTED]">Norbert Lataille</a>
  * @author     <a href="[EMAIL PROTECTED]">Peter Antman</a>
- * @version   $Revision: 1.1 $
+ * @version   $Revision: 1.2 $
  * @created   August 16, 2001
  */
 public interface Invoker
@@ -264,5 +264,19 @@
     * @exception JMSException if it can not find the 
subscription.
     */
    public Subscription getSubscription(ConnectionToken 
dc,int subscriberId) throws JMSException;
+
+   /**
+    * recover the session.
+    *
+    * @exception JMSException if it can not find the 
subscription.
+    */
+   public void recover(ConnectionToken 
dc,Subscription s) throws JMSException;
+
+   /**
+    * recover all sessions for a failed connection.
+    *
+    * @exception JMSException if it can not find the 
subscription.
+    */
+   public void recoverAll(ConnectionToken dc) throws 
JMSException;
 
 }



RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/ServerIL.java,v
retrieving revision 1.6
diff -u -w -r1.6 ServerIL.java
--- ServerIL.java       4 May 2002 03:07:49 -0000       1.6
+++ ServerIL.java       19 Jul 2002 07:29:55 -0000
@@ -26,7 +26,7 @@
  * @author    <a 
href="[EMAIL PROTECTED]">Hiram Chirino</a>
  * @author    <a 
href="[EMAIL PROTECTED]">Norbert Lataille</a>
  * @author     <a href="[EMAIL PROTECTED]">Peter Antman</a>
- * @version   $Revision: 1.6 $
+ * @version   $Revision: 1.7 $
  * @created   August 16, 2001
  */
 public interface ServerIL
@@ -258,5 +258,14 @@
     */
    public void ping(ConnectionToken dc, long 
clientTime)
           throws Exception;
+
+
+   /**
+    * @param dc                       
org.jboss.mq.ConnectionToken
+    * @param s                        org.jboss.mq.Subscription
+    * @exception java.lang.Exception  The exception 
description.
+    */
+   public void recover(org.jboss.mq.ConnectionToken 
dc, org.jboss.mq.Subscription s)
+          throws java.lang.Exception;
 
 }


RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/uil/UILServerIL.java,v
retrieving revision 1.8
diff -u -w -r1.8 UILServerIL.java
--- UILServerIL.java    9 Mar 2002 06:11:47 -0000       1.8
+++ UILServerIL.java    19 Jul 2002 11:34:51 -
0000
@@ -37,7 +34,7 @@
  * @author    Hiram Chirino ([EMAIL PROTECTED])
  * @author    Norbert Lataille ([EMAIL PROTECTED])
  * @author    <a href="[EMAIL PROTECTED]">Peter Antman</a>
- * @version   $Revision: 1.8 $
+ * @version   $Revision: 1.9 $
  * @created   August 16, 2001
  */
 public class UILServerIL implements java.io.Serializable, 
Cloneable, org.jboss.mq.il.ServerIL
@@ -63,6 +60,7 @@
    final static int m_checkUser = 20;
    final static int m_ping = 21;
    final static int m_authenticate = 22;
+   final static int m_recover = 23;
 
    /**
     * Description of the Field
@@ -563,5 +561,20 @@
          Exception e = (Exception)in.readObject();
          throw e;
       }
+   }
+
+   /**
+    * #Description of the Method
+    *
+    * @return               Description of the Returned Value
+    * @exception Exception  Description of Exception
+    */
+   public synchronized void recover( ConnectionToken 
ct, org.jboss.mq.Subscription s)
+          throws Exception
+   {
+      checkConnection();
+      out.writeByte(m_recover);
+      out.writeObject(s);
+      waitAnswer();
    }
 }




RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/uil/UILServerILService.java,v
retrieving revision 1.21
diff -u -w -r1.21 UILServerILService.java
--- UILServerILService.java     19 Jul 2002 03:53:11 -
0000    1.21
+++ UILServerILService.java     19 Jul 2002 07:45:20 -
0000
@@ -48,7 +48,7 @@
  *
  * @author    Hiram Chirino ([EMAIL PROTECTED])
  * @author    <a href="[EMAIL PROTECTED]">Peter Antman</a>
- * @version   $Revision: 1.21 $
+ * @version   $Revision: 1.22 $
  *
  * @jmx:mbean 
extends="org.jboss.mq.il.ServerILJMXServiceMBean"
  */
@@ -83,6 +83,7 @@
    final static int m_checkUser = 20;
    final static int m_ping = 21;
    final static int m_authenticate = 22;
+   final static int m_recover = 23;
    
    final static int SO_TIMEOUT = 5000;
    /**
@@ -221,8 +222,16 @@
             {
                break;
             }
-
             log.warn("Connection failure (1).", e);
+
+            try
+            {
+               server.recoverAll( connectionToken );
+            }
+            catch ( JMSException ex )
+            {
+               log.warn( "Could not recover sessions", ex );
+            }
             break;
          }
 
@@ -310,6 +319,9 @@
                case m_authenticate:
                   result = server.authenticate((String)
in.readObject(), (String)in.readObject());
                   break;
+               case m_recover:
+                  server.recover(connectionToken, 
(Subscription)in.readObject());
+                  break;
                default:
                   throw new RemoteException("Bad method 
code !");
             }




RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/rmi/RMIServerIL.java,v
retrieving revision 1.6
diff -u -w -r1.6 RMIServerIL.java
--- RMIServerIL.java    4 May 2002 03:07:50 -
0000    1.6
+++ RMIServerIL.java    19 Jul 2002 07:48:20 -
0000
@@ -29,7 +26,7 @@
  * @author    Hiram Chirino ([EMAIL PROTECTED])
  * @author    Norbert Lataille ([EMAIL PROTECTED])
  * @author    <a href="[EMAIL PROTECTED]">Peter Antman</a>
- * @version   $Revision: 1.6 $
+ * @version   $Revision: 1.7 $
  * @created   August 16, 2001
  */
 public class RMIServerIL extends 
java.rmi.server.UnicastRemoteObject implements 
RMIServerILRemote
@@ -325,6 +322,18 @@
           throws JMSException
    {
       server.ping(dc, clientTime);
+   }
+
+   /**
+    * #Description of the Method
+    *
+    * @return               Description of the Returned Value
+    * @exception Exception  Description of Exception
+    */
+   public void recover( ConnectionToken ct, 
Subscription s)
+          throws Exception
+   {
+      server.recover( ct, s );
    }
 }
 


RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/oil/OILConstants.java,v
retrieving revision 1.2
diff -w -u -r1.2 OILConstants.java
--- OILConstants.java   6 Mar 2002 17:27:49 -
0000    1.2
+++ OILConstants.java   19 Jul 2002 07:52:07 -
0000
@@ -10,7 +10,7 @@
  * 
  *
  * @author    Brian Weaver ([EMAIL PROTECTED])
- * @version   $Revision: 1.2 $
+ * @version   $Revision: 1.3 $
  * @created   January 10, 2002
  */
 final class OILConstants
@@ -49,6 +49,7 @@
    final static int PONG                           = 28;
    final static int CLOSE                          = 29;
    final static int AUTHENTICATE                   = 30;
+   final static int RECOVER                        = 31;
 }
 /*
 vim:tabstop=3:expandtab:shiftwidth=3



RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/oil/OILServerIL.java,v
retrieving revision 1.9
diff -u -w -r1.9 OILServerIL.java
--- OILServerIL.java    9 Mar 2002 06:11:47 -0000       1.9
+++ OILServerIL.java    19 Jul 2002 07:53:27 -
0000
@@ -35,7 +32,7 @@
  *
  * @author    Hiram Chirino ([EMAIL PROTECTED])
  * @author    Norbert Lataille ([EMAIL PROTECTED])
- * @version   $Revision: 1.9 $
+ * @version   $Revision: 1.10 $
  * @created   August 16, 2001
  */
 public final class OILServerIL
@@ -532,5 +529,20 @@
          Exception e = (Exception)in.readObject();
          throw e;
       }
+   }
+
+   /**
+    * #Description of the Method
+    *
+    * @return               Description of the Returned Value
+    * @exception Exception  Description of Exception
+    */
+   public synchronized void recover( ConnectionToken 
ct, Subscription s)
+          throws Exception
+   {
+      checkConnection();
+      out.writeByte(OILConstants.RECOVER);
+      out.writeObject(s);
+      waitAnswer();
    }
 }


RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/oil/OILServerILService.java,v
retrieving revision 1.23
diff -u -w -r1.23 OILServerILService.java
--- OILServerILService.java     19 Jul 2002 03:53:10 -
0000    1.23
+++ OILServerILService.java     19 Jul 2002 07:56:35 -
0000
@@ -48,7 +48,7 @@
  * Implements the ServerILJMXService which is used to 
manage the JVM IL.
  *
  * @author    Hiram Chirino ([EMAIL PROTECTED])
- * @version   $Revision: 1.23 $
+ * @version   $Revision: 1.24 $
  *
  * @jmx:mbean 
extends="org.jboss.mq.il.ServerILJMXServiceMBean"
  */
@@ -207,6 +207,15 @@
                   break;
                }
                log.warn("Connection failure (1).", e);
+
+               try
+               {
+                  server.recoverAll( connectionToken );
+               }
+               catch ( JMSException ex )
+               {
+                  log.warn( "Could not recover sessions", ex );
+               }
                break;
             }
 
@@ -315,6 +324,10 @@
                   result = server.authenticate((String)
in.readObject(), (String)in.readObject());
                   break;
 
+               case OILConstants.RECOVER:
+                  server.recover( connectionToken, 
(Subscription)in.readObject() );
+                  break;
+
                default:
                   throw new RemoteException("Bad method 
code !");
                }




RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/il
/jvm/JVMServerIL.java,v
retrieving revision 1.8
diff -u -w -r1.8 JVMServerIL.java
--- JVMServerIL.java    4 May 2002 03:07:50 -
0000    1.8
+++ JVMServerIL.java    19 Jul 2002 08:02:45 -
0000
@@ -29,7 +26,7 @@
  * @author    Hiram Chirino ([EMAIL PROTECTED])
  * @author    Norbert Lataille ([EMAIL PROTECTED])
  * @author    <a href="[EMAIL PROTECTED]">Peter Antman</a>
- * @version   $Revision: 1.8 $
+ * @version   $Revision: 1.9 $
  * @created   August 16, 2001
  */
 public class JVMServerIL implements 
org.jboss.mq.il.ServerIL
@@ -339,5 +336,17 @@
           throws JMSException
    {
       server.ping(dc, clientTime);
+   }
+
+   /**
+    * #Description of the Method
+    *
+    * @return               Description of the Returned Value
+    * @exception Exception  Description of Exception
+    */
+   public void recover( ConnectionToken ct, 
org.jboss.mq.Subscription s)
+          throws Exception
+   {
+      server.recover(ct, s);
    }
 }




RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/s
erver/BasicQueue.java,v
retrieving revision 1.20
diff -u -w -r1.20 BasicQueue.java
--- BasicQueue.java     24 May 2002 02:38:30 -
0000    1.20
+++ BasicQueue.java     19 Jul 2002 11:05:37 -
0000
@@ -36,7 +36,7 @@
  * @author     Norbert Lataille ([EMAIL PROTECTED])
  * @author     David Maplesden 
([EMAIL PROTECTED])
  * @created    August 16, 2001
- * @version    $Revision: 1.20 $
+ * @version    $Revision: 1.21 $
  */
 //abstract public class BasicQueue implements 
Runnable {
 public class BasicQueue {
@@ -375,6 +375,30 @@
       }
    }
 
+   public void recoverSession ( Subscription sub )
+   throws JMSException
+   {
+
+      if ( !hasUnackedMessages( sub.subscriptionId ) )
+      {
+         System.out.println("Subscriber " + 
sub.subscriptionId + " has no unacked messages.");
+         return;
+      }
+      synchronized (unacknowledgedMessages) {
+         for (Iterator it = 
unacknowledgedMessages.keySet().iterator(); it.hasNext
();)
+         {
+            AcknowledgementRequest ack = 
(AcknowledgementRequest)it.next();
+            if (ack.subscriberId == sub.subscriptionId)
+            {
+               MessageReference messageRef = ( 
MessageReference )unacknowledgedMessages.get( ack );
+               messageRef.getMessage().setJMSRedelivered( 
true );
+
+               restoreMessage( messageRef );
+            }
+         }
+      }
+   }
+
    protected void checkRemovedSubscribers(int subId) {
       Integer id = new Integer(subId);
       synchronized (removedSubscribers) {



RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/s
erver/JMSDestination.java,v
retrieving revision 1.11
diff -u -w -r1.11 JMSDestination.java
--- JMSDestination.java 9 May 2002 04:19:21 -
0000    1.11
+++ JMSDestination.java 19 Jul 2002 11:30:39 -
0000
@@ -30,7 +30,7 @@
  * @author     Hiram Chirino ([EMAIL PROTECTED])
  * @author     David Maplesden 
([EMAIL PROTECTED])
  * @created    August 16, 2001
- * @version    $Revision: 1.11 $
+ * @version    $Revision: 1.12 $
  */
 public abstract class JMSDestination {
 
@@ -75,6 +75,8 @@
    public abstract void removeReceiver( Subscription 
sub );
 
    public abstract void restoreMessage( 
MessageReference message );
+
+   public abstract void recoverSession (Subscription 
sub);
 
    public abstract void clientConsumerStopped( 
ClientConsumer clientConsumer );
    public abstract boolean isInUse();






RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/s
erver/JMSDestinationManager.java,v
retrieving revision 1.2
diff -u -w -r1.2 JMSDestinationManager.java
--- JMSDestinationManager.java  4 May 2002 
15:26:59 -0000  1.2
+++ JMSDestinationManager.java  19 Jul 2002 
11:09:41 -0000
@@ -52,7 +52,7 @@
  * @author    Hiram Chirino ([EMAIL PROTECTED])
  * @author    David Maplesden 
([EMAIL PROTECTED])
  * @author <a href="mailto:[EMAIL PROTECTED]";>Peter 
Antman</a>
- * @version   $Revision: 1.2 $
+ * @version   $Revision: 1.3 $
  */
 public class JMSDestinationManager extends 
JMSServerInterceptorSupport
 {
@@ -587,6 +587,15 @@
    {
       //We should try again :) This behavior should under 
control of a Failure-Plugin
       log.error("The connection to client " + 
dc.getClientID() + " failed.");
+      ClientConsumer cq = (ClientConsumer)
clientConsumers.get(dc);
+
+      Iterator i = cq.subscriptions.keySet().iterator();
+      while ( i.hasNext() )
+      {
+         Integer subId = ( Integer )i.next();
+         Subscription sub = ( Subscription )
cq.subscriptions.get( subId );
+         recover( dc, sub );
+      }
       connectionClosing(dc);
    }
 
@@ -883,5 +892,23 @@
    public Subscription getSubscription(ConnectionToken 
dc,int subscriberId) throws JMSException {
       ClientConsumer clientConsumer = 
getClientConsumer(dc);
       return clientConsumer.getSubscription
(subscriberId);
+   }
+
+   public void recover ( ConnectionToken dc, 
Subscription sub )
+   throws JMSException
+   {
+      JMSDestination dest = (JMSDestination)
destinations.get(sub.destination);
+      if ( dest instanceof JMSQueue )
+      {
+         JMSQueue queue = (JMSQueue)dest;
+
+         queue.queue.recoverSession( sub );
+      }
+   }
+
+   public void recoverAll ( ConnectionToken dc )
+   throws JMSException
+   {
+      this.connectionFailure(dc);
    }
 }




RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/s
erver/JMSServerInterceptor.java,v
retrieving revision 1.1
diff -u -w -r1.1 JMSServerInterceptor.java
--- JMSServerInterceptor.java   4 May 2002 03:07:52 -
0000    1.1
+++ JMSServerInterceptor.java   19 Jul 2002 
11:11:48 -0000
@@ -34,7 +34,7 @@
  *
  *
  * @author <a href="mailto:[EMAIL PROTECTED]";>Peter 
Antman</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
  */
 
 public interface JMSServerInterceptor {
@@ -279,4 +279,18 @@
     * @exception JMSException if it can not find the 
subscription.
     */
    public Subscription getSubscription(ConnectionToken 
dc,int subscriberId) throws JMSException;
+
+   /**
+    * recover session.
+    *
+    * @exception JMSException if it can not find the 
subscription.
+    */
+   public void recover(ConnectionToken dc, 
Subscription sub) throws JMSException;
+
+   /**
+    * recover session.
+    *
+    * @exception JMSException if it can not find the 
subscription.
+    */
+   public void recoverAll(ConnectionToken dc) throws 
JMSException;
 }




RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/s
erver/JMSServerInterceptorSupport.java,v
retrieving revision 1.1
diff -u -w -r1.1 JMSServerInterceptorSupport.java
--- JMSServerInterceptorSupport.java    4 May 2002 
03:07:52 -0000  1.1
+++ JMSServerInterceptorSupport.java    19 Jul 2002 
11:12:49 -0000
@@ -30,7 +30,7 @@
  * A pass through JMSServerInvoker.
  *
  * @author <a href="mailto:[EMAIL PROTECTED]";>Peter 
Antman</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
  */
 
 public class JMSServerInterceptorSupport implements 
JMSServerInterceptor {
@@ -317,4 +317,15 @@
       return nextInterceptor.getSubscription
(dc,subscriberId);
    }
 
+   public void recover(ConnectionToken dc, 
Subscription sub)
+   throws JMSException
+   {
+      nextInterceptor.recover( dc, sub );
+   }
+
+   public void recoverAll(ConnectionToken dc)
+   throws JMSException
+   {
+      nextInterceptor.recoverAll( dc );
+   }
 } // JMSServerInvokerSupport




RCS 
file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/s
erver/JMSServerInvoker.java,v
retrieving revision 1.2
diff -u -w -r1.2 JMSServerInvoker.java
--- JMSServerInvoker.java       4 May 2002 03:07:52 -
0000    1.2
+++ JMSServerInvoker.java       19 Jul 2002 11:14:10 -
0000
@@ -33,7 +33,7 @@
  * A pass through JMSServerInvoker.
  *
  * @author <a href="mailto:[EMAIL PROTECTED]";>Peter 
Antman</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
  */
 
 public class JMSServerInvoker implements Invoker {
@@ -317,6 +317,18 @@
 
    public Subscription getSubscription(ConnectionToken 
dc,int subscriberId) throws JMSException {
       return nextInterceptor.getSubscription
(dc,subscriberId);
+   }
+
+   public void recover(ConnectionToken dc, 
Subscription sub)
+   throws JMSException
+   {
+      nextInterceptor.recover(dc,sub);
+   }
+
+   public void recoverAll(ConnectionToken dc)
+   throws JMSException
+   {
+      nextInterceptor.recoverAll(dc);
    }
 
 

If you need any further information, please let me know.

-Seth

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=526696&group_id=22866


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to