diff --git a/docs/javadoc/index-all.html b/docs/javadoc/index-all.html
index 665f37d..da79cdd 100644
--- a/docs/javadoc/index-all.html
+++ b/docs/javadoc/index-all.html
@@ -426,6 +426,10 @@
R
Read and return an object, and if it's a Throwable
instance, a local stack
trace is stitched in.
+reconnect() - Method in interface org.cojen.dirmi.Session
+
+Closes all connections and initiates a reconnect.
+
reconnectDelayMillis(int) - Method in interface org.cojen.dirmi.Environment
Set the reconnect delay for newly established client sessions (±10%).
diff --git a/docs/javadoc/member-search-index.js b/docs/javadoc/member-search-index.js
index e5e0440..698fdbd 100644
--- a/docs/javadoc/member-search-index.js
+++ b/docs/javadoc/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.cojen.dirmi","c":"Environment","l":"acceptAll(ServerSocket)","u":"acceptAll(java.net.ServerSocket)"},{"p":"org.cojen.dirmi","c":"Environment","l":"acceptAll(ServerSocket, Predicate)","u":"acceptAll(java.net.ServerSocket,java.util.function.Predicate)"},{"p":"org.cojen.dirmi","c":"Environment","l":"acceptAll(ServerSocketChannel)","u":"acceptAll(java.nio.channels.ServerSocketChannel)"},{"p":"org.cojen.dirmi","c":"Environment","l":"acceptAll(ServerSocketChannel, Predicate)","u":"acceptAll(java.nio.channels.ServerSocketChannel,java.util.function.Predicate)"},{"p":"org.cojen.dirmi","c":"Environment","l":"accepted(Socket)","u":"accepted(java.net.Socket)"},{"p":"org.cojen.dirmi","c":"Environment","l":"accepted(SocketAddress, SocketAddress, InputStream, OutputStream)","u":"accepted(java.net.SocketAddress,java.net.SocketAddress,java.io.InputStream,java.io.OutputStream)"},{"p":"org.cojen.dirmi","c":"Environment","l":"accepted(SocketChannel)","u":"accepted(java.nio.channels.SocketChannel)"},{"p":"org.cojen.dirmi","c":"Session","l":"access(Object)","u":"access(java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Serializer","l":"adapt(Object)","u":"adapt(java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Session","l":"addStateListener(BiPredicate, Throwable>)","u":"addStateListener(java.util.function.BiPredicate)"},{"p":"org.cojen.dirmi","c":"SessionAware","l":"attached(Session>)","u":"attached(org.cojen.dirmi.Session)"},{"p":"org.cojen.dirmi","c":"Environment","l":"classLoader(ClassLoader)","u":"classLoader(java.lang.ClassLoader)"},{"p":"org.cojen.dirmi","c":"Environment","l":"classResolver(ClassResolver)","u":"classResolver(org.cojen.dirmi.ClassResolver)"},{"p":"org.cojen.dirmi","c":"Environment","l":"close()"},{"p":"org.cojen.dirmi","c":"Session","l":"close()"},{"p":"org.cojen.dirmi","c":"Session.State","l":"CLOSED"},{"p":"org.cojen.dirmi","c":"ClosedException","l":"ClosedException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"ClosedException","l":"ClosedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"ClosedException","l":"ClosedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"ClosedException","l":"ClosedException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Environment","l":"connect(Class, Object, SocketAddress)","u":"connect(java.lang.Class,java.lang.Object,java.net.SocketAddress)"},{"p":"org.cojen.dirmi","c":"Environment","l":"connect(Class, Object, String, int)","u":"connect(java.lang.Class,java.lang.Object,java.lang.String,int)"},{"p":"org.cojen.dirmi","c":"Connector","l":"connect(Session>)","u":"connect(org.cojen.dirmi.Session)"},{"p":"org.cojen.dirmi","c":"Session.State","l":"CONNECTED"},{"p":"org.cojen.dirmi","c":"Session","l":"connected(Socket)","u":"connected(java.net.Socket)"},{"p":"org.cojen.dirmi","c":"Session","l":"connected(SocketAddress, SocketAddress, InputStream, OutputStream)","u":"connected(java.net.SocketAddress,java.net.SocketAddress,java.io.InputStream,java.io.OutputStream)"},{"p":"org.cojen.dirmi","c":"Session","l":"connected(SocketChannel)","u":"connected(java.nio.channels.SocketChannel)"},{"p":"org.cojen.dirmi","c":"Environment","l":"connector(Connector)","u":"connector(org.cojen.dirmi.Connector)"},{"p":"org.cojen.dirmi","c":"Environment","l":"create()"},{"p":"org.cojen.dirmi","c":"Environment","l":"create(Executor)","u":"create(java.util.concurrent.Executor)"},{"p":"org.cojen.dirmi","c":"Session","l":"current()"},{"p":"org.cojen.dirmi","c":"Environment","l":"customSerializers(Serializer...)","u":"customSerializers(org.cojen.dirmi.Serializer...)"},{"p":"org.cojen.dirmi","c":"RemoteFailure","l":"declared()"},{"p":"org.cojen.dirmi","c":"Pipe.Decoder","l":"decode(T, int, byte[], int)","u":"decode(T,int,byte[],int)"},{"p":"org.cojen.dirmi","c":"Pipe.Decoder","l":"decode(T, int, Pipe)","u":"decode(T,int,org.cojen.dirmi.Pipe)"},{"p":"org.cojen.dirmi","c":"Serializer","l":"descriptor()"},{"p":"org.cojen.dirmi","c":"SessionAware","l":"detached(Session>)","u":"detached(org.cojen.dirmi.Session)"},{"p":"org.cojen.dirmi","c":"Connector","l":"direct()"},{"p":"org.cojen.dirmi","c":"Pipe","l":"disableReferences()"},{"p":"org.cojen.dirmi","c":"Session.State","l":"DISCONNECTED"},{"p":"org.cojen.dirmi","c":"DisconnectedException","l":"DisconnectedException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"DisconnectedException","l":"DisconnectedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"DisconnectedException","l":"DisconnectedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"DisconnectedException","l":"DisconnectedException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Session","l":"dispose(Object)","u":"dispose(java.lang.Object)"},{"p":"org.cojen.dirmi","c":"DisposedException","l":"DisposedException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"DisposedException","l":"DisposedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"DisposedException","l":"DisposedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"DisposedException","l":"DisposedException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Session","l":"disposeServer(Object)","u":"disposeServer(java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"enableReferences()"},{"p":"org.cojen.dirmi","c":"Pipe.Encoder","l":"encode(T, int, byte[], int)","u":"encode(T,int,byte[],int)"},{"p":"org.cojen.dirmi","c":"Pipe.Encoder","l":"encode(T, int, Pipe)","u":"encode(T,int,org.cojen.dirmi.Pipe)"},{"p":"org.cojen.dirmi","c":"RemoteFailure","l":"exception()"},{"p":"org.cojen.dirmi","c":"Environment","l":"export(Object, Object)","u":"export(java.lang.Object,java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Serialized","l":"filter()"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"getMessage()"},{"p":"org.cojen.dirmi","c":"Environment","l":"idleConnectionMillis(int)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"inputStream()"},{"p":"org.cojen.dirmi","c":"Restorable","l":"lenient()"},{"p":"org.cojen.dirmi","c":"Connector","l":"local(Environment)","u":"local(org.cojen.dirmi.Environment)"},{"p":"org.cojen.dirmi","c":"Link","l":"localAddress()"},{"p":"org.cojen.dirmi","c":"NoSuchObjectException","l":"NoSuchObjectException(long)","u":"%3Cinit%3E(long)"},{"p":"org.cojen.dirmi","c":"NoSuchObjectException","l":"NoSuchObjectException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"outputStream()"},{"p":"org.cojen.dirmi","c":"Environment","l":"pingTimeoutMillis(int)"},{"p":"org.cojen.dirmi","c":"Serializer","l":"read(Pipe)","u":"read(org.cojen.dirmi.Pipe)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"readDecode(T, int, Pipe.Decoder)","u":"readDecode(T,int,org.cojen.dirmi.Pipe.Decoder)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"readObject()"},{"p":"org.cojen.dirmi","c":"Pipe","l":"readThrowable()"},{"p":"org.cojen.dirmi","c":"Environment","l":"reconnectDelayMillis(int)"},{"p":"org.cojen.dirmi","c":"Session.State","l":"RECONNECTED"},{"p":"org.cojen.dirmi","c":"Session.State","l":"RECONNECTING"},{"p":"org.cojen.dirmi","c":"Pipe","l":"recycle()"},{"p":"org.cojen.dirmi","c":"Link","l":"remoteAddress()"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"remoteAddress()"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"remoteAddress(SocketAddress)","u":"remoteAddress(java.net.SocketAddress)"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"RemoteException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"RemoteException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"RemoteException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"RemoteException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"ClassResolver","l":"resolveClass(String)","u":"resolveClass(java.lang.String)"},{"p":"org.cojen.dirmi","c":"Session","l":"resolveClass(String)","u":"resolveClass(java.lang.String)"},{"p":"org.cojen.dirmi","c":"Session","l":"root()"},{"p":"org.cojen.dirmi","c":"Connector","l":"secure(SSLContext)","u":"secure(javax.net.ssl.SSLContext)"},{"p":"org.cojen.dirmi","c":"Serializer","l":"simple(Class>)","u":"simple(java.lang.Class)"},{"p":"org.cojen.dirmi","c":"Session","l":"state()"},{"p":"org.cojen.dirmi","c":"Serializer","l":"supportedTypes()"},{"p":"org.cojen.dirmi","c":"Pipe","l":"transferTo(OutputStream, long)","u":"transferTo(java.io.OutputStream,long)"},{"p":"org.cojen.dirmi","c":"Session","l":"uncaught(Throwable)","u":"uncaught(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Environment","l":"uncaughtExceptionHandler(BiConsumer, Throwable>)","u":"uncaughtExceptionHandler(java.util.function.BiConsumer)"},{"p":"org.cojen.dirmi","c":"Session","l":"uncaughtExceptionHandler(BiConsumer, Throwable>)","u":"uncaughtExceptionHandler(java.util.function.BiConsumer)"},{"p":"org.cojen.dirmi","c":"UnimplementedException","l":"UnimplementedException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"UnimplementedException","l":"UnimplementedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"UnimplementedException","l":"UnimplementedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"UnimplementedException","l":"UnimplementedException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Session.State","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"org.cojen.dirmi","c":"Session.State","l":"values()"},{"p":"org.cojen.dirmi","c":"Serializer","l":"write(Pipe, Object)","u":"write(org.cojen.dirmi.Pipe,java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"writeEncode(T, int, Pipe.Encoder)","u":"writeEncode(T,int,org.cojen.dirmi.Pipe.Encoder)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"writeNull()"},{"p":"org.cojen.dirmi","c":"Pipe","l":"writeObject(Object)","u":"writeObject(java.lang.Object)"}];updateSearchResults();
\ No newline at end of file
+memberSearchIndex = [{"p":"org.cojen.dirmi","c":"Environment","l":"acceptAll(ServerSocket)","u":"acceptAll(java.net.ServerSocket)"},{"p":"org.cojen.dirmi","c":"Environment","l":"acceptAll(ServerSocket, Predicate)","u":"acceptAll(java.net.ServerSocket,java.util.function.Predicate)"},{"p":"org.cojen.dirmi","c":"Environment","l":"acceptAll(ServerSocketChannel)","u":"acceptAll(java.nio.channels.ServerSocketChannel)"},{"p":"org.cojen.dirmi","c":"Environment","l":"acceptAll(ServerSocketChannel, Predicate)","u":"acceptAll(java.nio.channels.ServerSocketChannel,java.util.function.Predicate)"},{"p":"org.cojen.dirmi","c":"Environment","l":"accepted(Socket)","u":"accepted(java.net.Socket)"},{"p":"org.cojen.dirmi","c":"Environment","l":"accepted(SocketAddress, SocketAddress, InputStream, OutputStream)","u":"accepted(java.net.SocketAddress,java.net.SocketAddress,java.io.InputStream,java.io.OutputStream)"},{"p":"org.cojen.dirmi","c":"Environment","l":"accepted(SocketChannel)","u":"accepted(java.nio.channels.SocketChannel)"},{"p":"org.cojen.dirmi","c":"Session","l":"access(Object)","u":"access(java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Serializer","l":"adapt(Object)","u":"adapt(java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Session","l":"addStateListener(BiPredicate, Throwable>)","u":"addStateListener(java.util.function.BiPredicate)"},{"p":"org.cojen.dirmi","c":"SessionAware","l":"attached(Session>)","u":"attached(org.cojen.dirmi.Session)"},{"p":"org.cojen.dirmi","c":"Environment","l":"classLoader(ClassLoader)","u":"classLoader(java.lang.ClassLoader)"},{"p":"org.cojen.dirmi","c":"Environment","l":"classResolver(ClassResolver)","u":"classResolver(org.cojen.dirmi.ClassResolver)"},{"p":"org.cojen.dirmi","c":"Environment","l":"close()"},{"p":"org.cojen.dirmi","c":"Session","l":"close()"},{"p":"org.cojen.dirmi","c":"Session.State","l":"CLOSED"},{"p":"org.cojen.dirmi","c":"ClosedException","l":"ClosedException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"ClosedException","l":"ClosedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"ClosedException","l":"ClosedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"ClosedException","l":"ClosedException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Environment","l":"connect(Class, Object, SocketAddress)","u":"connect(java.lang.Class,java.lang.Object,java.net.SocketAddress)"},{"p":"org.cojen.dirmi","c":"Environment","l":"connect(Class, Object, String, int)","u":"connect(java.lang.Class,java.lang.Object,java.lang.String,int)"},{"p":"org.cojen.dirmi","c":"Connector","l":"connect(Session>)","u":"connect(org.cojen.dirmi.Session)"},{"p":"org.cojen.dirmi","c":"Session.State","l":"CONNECTED"},{"p":"org.cojen.dirmi","c":"Session","l":"connected(Socket)","u":"connected(java.net.Socket)"},{"p":"org.cojen.dirmi","c":"Session","l":"connected(SocketAddress, SocketAddress, InputStream, OutputStream)","u":"connected(java.net.SocketAddress,java.net.SocketAddress,java.io.InputStream,java.io.OutputStream)"},{"p":"org.cojen.dirmi","c":"Session","l":"connected(SocketChannel)","u":"connected(java.nio.channels.SocketChannel)"},{"p":"org.cojen.dirmi","c":"Environment","l":"connector(Connector)","u":"connector(org.cojen.dirmi.Connector)"},{"p":"org.cojen.dirmi","c":"Environment","l":"create()"},{"p":"org.cojen.dirmi","c":"Environment","l":"create(Executor)","u":"create(java.util.concurrent.Executor)"},{"p":"org.cojen.dirmi","c":"Session","l":"current()"},{"p":"org.cojen.dirmi","c":"Environment","l":"customSerializers(Serializer...)","u":"customSerializers(org.cojen.dirmi.Serializer...)"},{"p":"org.cojen.dirmi","c":"RemoteFailure","l":"declared()"},{"p":"org.cojen.dirmi","c":"Pipe.Decoder","l":"decode(T, int, byte[], int)","u":"decode(T,int,byte[],int)"},{"p":"org.cojen.dirmi","c":"Pipe.Decoder","l":"decode(T, int, Pipe)","u":"decode(T,int,org.cojen.dirmi.Pipe)"},{"p":"org.cojen.dirmi","c":"Serializer","l":"descriptor()"},{"p":"org.cojen.dirmi","c":"SessionAware","l":"detached(Session>)","u":"detached(org.cojen.dirmi.Session)"},{"p":"org.cojen.dirmi","c":"Connector","l":"direct()"},{"p":"org.cojen.dirmi","c":"Pipe","l":"disableReferences()"},{"p":"org.cojen.dirmi","c":"Session.State","l":"DISCONNECTED"},{"p":"org.cojen.dirmi","c":"DisconnectedException","l":"DisconnectedException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"DisconnectedException","l":"DisconnectedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"DisconnectedException","l":"DisconnectedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"DisconnectedException","l":"DisconnectedException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Session","l":"dispose(Object)","u":"dispose(java.lang.Object)"},{"p":"org.cojen.dirmi","c":"DisposedException","l":"DisposedException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"DisposedException","l":"DisposedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"DisposedException","l":"DisposedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"DisposedException","l":"DisposedException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Session","l":"disposeServer(Object)","u":"disposeServer(java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"enableReferences()"},{"p":"org.cojen.dirmi","c":"Pipe.Encoder","l":"encode(T, int, byte[], int)","u":"encode(T,int,byte[],int)"},{"p":"org.cojen.dirmi","c":"Pipe.Encoder","l":"encode(T, int, Pipe)","u":"encode(T,int,org.cojen.dirmi.Pipe)"},{"p":"org.cojen.dirmi","c":"RemoteFailure","l":"exception()"},{"p":"org.cojen.dirmi","c":"Environment","l":"export(Object, Object)","u":"export(java.lang.Object,java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Serialized","l":"filter()"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"getMessage()"},{"p":"org.cojen.dirmi","c":"Environment","l":"idleConnectionMillis(int)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"inputStream()"},{"p":"org.cojen.dirmi","c":"Restorable","l":"lenient()"},{"p":"org.cojen.dirmi","c":"Connector","l":"local(Environment)","u":"local(org.cojen.dirmi.Environment)"},{"p":"org.cojen.dirmi","c":"Link","l":"localAddress()"},{"p":"org.cojen.dirmi","c":"NoSuchObjectException","l":"NoSuchObjectException(long)","u":"%3Cinit%3E(long)"},{"p":"org.cojen.dirmi","c":"NoSuchObjectException","l":"NoSuchObjectException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"outputStream()"},{"p":"org.cojen.dirmi","c":"Environment","l":"pingTimeoutMillis(int)"},{"p":"org.cojen.dirmi","c":"Serializer","l":"read(Pipe)","u":"read(org.cojen.dirmi.Pipe)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"readDecode(T, int, Pipe.Decoder)","u":"readDecode(T,int,org.cojen.dirmi.Pipe.Decoder)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"readObject()"},{"p":"org.cojen.dirmi","c":"Pipe","l":"readThrowable()"},{"p":"org.cojen.dirmi","c":"Session","l":"reconnect()"},{"p":"org.cojen.dirmi","c":"Environment","l":"reconnectDelayMillis(int)"},{"p":"org.cojen.dirmi","c":"Session.State","l":"RECONNECTED"},{"p":"org.cojen.dirmi","c":"Session.State","l":"RECONNECTING"},{"p":"org.cojen.dirmi","c":"Pipe","l":"recycle()"},{"p":"org.cojen.dirmi","c":"Link","l":"remoteAddress()"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"remoteAddress()"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"remoteAddress(SocketAddress)","u":"remoteAddress(java.net.SocketAddress)"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"RemoteException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"RemoteException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"RemoteException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"RemoteException","l":"RemoteException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"ClassResolver","l":"resolveClass(String)","u":"resolveClass(java.lang.String)"},{"p":"org.cojen.dirmi","c":"Session","l":"resolveClass(String)","u":"resolveClass(java.lang.String)"},{"p":"org.cojen.dirmi","c":"Session","l":"root()"},{"p":"org.cojen.dirmi","c":"Connector","l":"secure(SSLContext)","u":"secure(javax.net.ssl.SSLContext)"},{"p":"org.cojen.dirmi","c":"Serializer","l":"simple(Class>)","u":"simple(java.lang.Class)"},{"p":"org.cojen.dirmi","c":"Session","l":"state()"},{"p":"org.cojen.dirmi","c":"Serializer","l":"supportedTypes()"},{"p":"org.cojen.dirmi","c":"Pipe","l":"transferTo(OutputStream, long)","u":"transferTo(java.io.OutputStream,long)"},{"p":"org.cojen.dirmi","c":"Session","l":"uncaught(Throwable)","u":"uncaught(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Environment","l":"uncaughtExceptionHandler(BiConsumer, Throwable>)","u":"uncaughtExceptionHandler(java.util.function.BiConsumer)"},{"p":"org.cojen.dirmi","c":"Session","l":"uncaughtExceptionHandler(BiConsumer, Throwable>)","u":"uncaughtExceptionHandler(java.util.function.BiConsumer)"},{"p":"org.cojen.dirmi","c":"UnimplementedException","l":"UnimplementedException()","u":"%3Cinit%3E()"},{"p":"org.cojen.dirmi","c":"UnimplementedException","l":"UnimplementedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.cojen.dirmi","c":"UnimplementedException","l":"UnimplementedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"UnimplementedException","l":"UnimplementedException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"org.cojen.dirmi","c":"Session.State","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"org.cojen.dirmi","c":"Session.State","l":"values()"},{"p":"org.cojen.dirmi","c":"Serializer","l":"write(Pipe, Object)","u":"write(org.cojen.dirmi.Pipe,java.lang.Object)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"writeEncode(T, int, Pipe.Encoder)","u":"writeEncode(T,int,org.cojen.dirmi.Pipe.Encoder)"},{"p":"org.cojen.dirmi","c":"Pipe","l":"writeNull()"},{"p":"org.cojen.dirmi","c":"Pipe","l":"writeObject(Object)","u":"writeObject(java.lang.Object)"}];updateSearchResults();
\ No newline at end of file
diff --git a/docs/javadoc/org.cojen.dirmi/org/cojen/dirmi/Session.html b/docs/javadoc/org.cojen.dirmi/org/cojen/dirmi/Session.html
index dd867c3..f267c8d 100644
--- a/docs/javadoc/org.cojen.dirmi/org/cojen/dirmi/Session.html
+++ b/docs/javadoc/org.cojen.dirmi/org/cojen/dirmi/Session.html
@@ -79,6 +79,7 @@
uncaught(Throwable)
state()
addStateListener(BiPredicate)
+reconnect()
close()
@@ -192,29 +193,34 @@ Method Summary
Explicitly dispose a server-side remote object implementation from the current session.
-
-
+void
+
-
+
Closes all connections and initiates a reconnect.
-
-
+
+
-
Returns the root object which was exported or imported.
+
-
-
+
+
-
Returns the current session state.
+
Returns the root object which was exported or imported.
-void
-
+
+
-
Pass an uncaught exception directly to the uncaught exception handler.
+
Returns the current session state.
void
-
+
+
Pass an uncaught exception directly to the uncaught exception handler.
+
+void
+
+
Set the handler which is invoked for any uncaught exceptions within this session
instance.
@@ -436,6 +442,15 @@ addStateListener
+
+
+