[Mulgara-svn] r979 - trunk/src/jar/server-rmi/java/org/mulgara/server/rmi

ronald at mulgara.org ronald at mulgara.org
Fri Jun 6 06:39:50 UTC 2008


Author: ronald
Date: 2008-06-05 23:39:49 -0700 (Thu, 05 Jun 2008)
New Revision: 979

Modified:
   trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/SessionWrapperRemoteSession.java
Log:
Detect when the session becomes unreferenced (e.g. because the client dropped
the session or the client died) and close the session.

This closes #123.


Modified: trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/SessionWrapperRemoteSession.java
===================================================================
--- trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/SessionWrapperRemoteSession.java	2008-06-06 06:35:08 UTC (rev 978)
+++ trunk/src/jar/server-rmi/java/org/mulgara/server/rmi/SessionWrapperRemoteSession.java	2008-06-06 06:39:49 UTC (rev 979)
@@ -32,6 +32,7 @@
 import java.io.*;
 import java.net.URI;
 import java.rmi.*;
+import java.rmi.server.Unreferenced;
 import java.util.*;
 
 // Third party packages
@@ -63,7 +64,7 @@
  *      Software Pty Ltd</A>
  * @licence <a href="{@docRoot}/../../LICENCE">Mozilla Public License v1.1</a>
  */
-class SessionWrapperRemoteSession implements RemoteSession {
+class SessionWrapperRemoteSession implements RemoteSession, Unreferenced  {
 
   @SuppressWarnings("unused")
   /** Logger.  */
@@ -484,7 +485,17 @@
     }
   }
 
+  public void unreferenced() {
+    if (logger.isDebugEnabled())
+      logger.debug("Closing unreferenced remote session " + session);
 
+    try {
+      close();
+    } catch (Exception e) {
+      logger.warn("Error closing unreferenced session " + session, e);
+    }
+  }
+
   // Construct an exception chain that will pass over RMI.
   protected Throwable mapThrowable(Throwable t) {
     Throwable cause = t.getCause();




More information about the Mulgara-svn mailing list