You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/02/04 22:05:26 UTC
svn commit: r740884 -
/tuscany/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java
Author: rfeng
Date: Wed Feb 4 21:05:25 2009
New Revision: 740884
URL: http://svn.apache.org/viewvc?rev=740884&view=rev
Log:
Unexport the remote object so that RMI threads can be gracefully terminated
Modified:
tuscany/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java
Modified: tuscany/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java?rev=740884&r1=740883&r2=740884&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java (original)
+++ tuscany/java/sca/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java Wed Feb 4 21:05:25 2009
@@ -22,14 +22,12 @@
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.rmi.NoSuchObjectException;
import java.rmi.Remote;
import java.rmi.server.UnicastRemoteObject;
import java.security.AccessController;
import java.security.PrivilegedExceptionAction;
-import net.sf.cglib.asm.ClassWriter;
-import net.sf.cglib.asm.Type;
-import net.sf.cglib.core.Constants;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
@@ -60,6 +58,7 @@
private RMIBinding binding;
private RMIHost rmiHost;
private RuntimeWire wire;
+ private Remote rmiProxy;
public RMIServiceBindingProvider(RuntimeComponent rc, RuntimeComponentService rcs, RMIBinding binding, RMIHost rmiHost) {
this.component = rc;
@@ -75,7 +74,7 @@
wire = service.getRuntimeWire(binding);
Interface serviceInterface = service.getInterfaceContract().getInterface();
- Remote rmiProxy = createRmiService(serviceInterface);
+ rmiProxy = createRmiService(serviceInterface);
try {
@@ -88,6 +87,11 @@
public void stop() {
rmiHost.unregisterService(binding.getURI());
+ try {
+ UnicastRemoteObject.unexportObject(rmiProxy, false);
+ } catch (NoSuchObjectException e) {
+ throw new ServiceRuntimeException(e);
+ }
}
private int getPort(String port) {