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 2008/09/18 00:54:56 UTC

svn commit: r696507 - /tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java

Author: rfeng
Date: Wed Sep 17 15:54:56 2008
New Revision: 696507

URL: http://svn.apache.org/viewvc?rev=696507&view=rev
Log:
Fix the classloader parent

Modified:
    tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java

Modified: tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java?rev=696507&r1=696506&r2=696507&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java (original)
+++ tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java Wed Sep 17 15:54:56 2008
@@ -87,6 +87,7 @@
     }
 
     public void stop() {
+        rmiHost.unregisterService(binding.getServiceName(), getPort(binding.getPort()));
     }
 
     protected int getPort(String port) {
@@ -131,9 +132,9 @@
         });
         Class targetJavaInterface = getTargetJavaClass(serviceInterface);
         if (!Remote.class.isAssignableFrom(targetJavaInterface)) {
-            RMIServiceClassLoader classloader = new RMIServiceClassLoader(getClass().getClassLoader());
+            RMIServiceClassLoader classloader = new RMIServiceClassLoader(targetJavaInterface.getClassLoader());
             final byte[] byteCode = generateRemoteInterface(targetJavaInterface);
-            targetJavaInterface = classloader.defineClass(byteCode);
+            targetJavaInterface = classloader.defineClass(targetJavaInterface.getName(), byteCode);
             enhancer.setClassLoader(classloader);
         }
         enhancer.setInterfaces(new Class[] {targetJavaInterface});
@@ -151,7 +152,7 @@
      * caller of this method, since it requires a ClassLoader to be created to define and load this interface.
      */
     protected byte[] generateRemoteInterface(Class serviceInterface) {
-        String interfazeName = serviceInterface.getCanonicalName();
+        String interfazeName = serviceInterface.getName();
         ClassWriter cw = new ClassWriter(false);
 
         String simpleName = serviceInterface.getSimpleName();
@@ -194,8 +195,8 @@
             super(parent);
         }
 
-        public Class defineClass(byte[] byteArray) {
-            return defineClass(null, byteArray, 0, byteArray.length);
+        public Class<?> defineClass(String name, byte[] byteArray) {
+            return super.defineClass(name, byteArray, 0, byteArray.length);
         }
     }