You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bo...@apache.org on 2009/04/01 01:37:29 UTC
svn commit: r760734 -
/ode/branches/APACHE_ODE_1.X/jca-server/src/main/java/org/apache/ode/jca/server/rmi/RmiTransportServerImpl.java
Author: boisvert
Date: Tue Mar 31 23:37:29 2009
New Revision: 760734
URL: http://svn.apache.org/viewvc?rev=760734&view=rev
Log:
Correctly unexport all RMI objects so the JVM exits gracefully when the appserver is shutdown
Modified:
ode/branches/APACHE_ODE_1.X/jca-server/src/main/java/org/apache/ode/jca/server/rmi/RmiTransportServerImpl.java
Modified: ode/branches/APACHE_ODE_1.X/jca-server/src/main/java/org/apache/ode/jca/server/rmi/RmiTransportServerImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/jca-server/src/main/java/org/apache/ode/jca/server/rmi/RmiTransportServerImpl.java?rev=760734&r1=760733&r2=760734&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/jca-server/src/main/java/org/apache/ode/jca/server/rmi/RmiTransportServerImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/jca-server/src/main/java/org/apache/ode/jca/server/rmi/RmiTransportServerImpl.java Tue Mar 31 23:37:29 2009
@@ -49,6 +49,8 @@
private String _id;
+ private Registry _registry;
+
public RmiTransportServerImpl() {
}
@@ -79,7 +81,7 @@
// Bind the RMI-server to the registry, creating one if necessary
try {
- LocateRegistry.createRegistry(_port);
+ _registry = LocateRegistry.createRegistry(_port);
__log.debug("Created registry on port " + _port);
} catch (Exception ex) {
__log.debug("Could not create registry on port " + _port + " (perhaps it's already there)");
@@ -94,7 +96,13 @@
}
public synchronized void stop() throws RemoteException {
- UnicastRemoteObject.unexportObject(this, false);
+ for (RmiPipeServerImpl pipe: _pipes) {
+ unexport(pipe);
+ }
+ if (_registry != null) {
+ unexport(_registry);
+ }
+ unexport(this);
}
public synchronized OdeTransportPipeRemote newPipe() throws RemoteException {
@@ -109,18 +117,18 @@
void pipeClosed(RmiPipeServerImpl pipe) {
if (__log.isDebugEnabled())
__log.debug("Closing RMI pipe " + pipe);
-
- try {
- UnicastRemoteObject.unexportObject(pipe.remote, false);
- } catch (RemoteException re) {
- // ignore
- }
-
+ unexport(pipe);
synchronized (this) {
_pipes.remove(pipe);
}
-
_connProvider.destroyConnectionObject(pipe.target);
+ }
+ void unexport(Remote remote) {
+ try {
+ UnicastRemoteObject.unexportObject(remote, false);
+ } catch (Exception e) {
+ // ignore
+ }
}
}