summaryrefslogtreecommitdiff
path: root/gnu/java/rmi/server/ActivatableServerRef.java
diff options
context:
space:
mode:
authorAudrius Meskauskas <audriusa@Bioinformatics.org>2006-03-24 17:40:24 +0000
committerAudrius Meskauskas <audriusa@Bioinformatics.org>2006-03-24 17:40:24 +0000
commit63f5926a4f85a4c5f4c8349a7d5bc985badd503f (patch)
treee459cef953f7bdc2a4d995b04143b2bcac9ff478 /gnu/java/rmi/server/ActivatableServerRef.java
parentf370efa1358a912b3c57e4bce650babbebd59269 (diff)
downloadclasspath-63f5926a4f85a4c5f4c8349a7d5bc985badd503f.tar.gz
2006-03-24 Audrius Meskauskas <AudriusA@Bioinformatics.org>
* gnu/java/rmi/activation/ActivationSystemTransient.java: Inherit from Activator. 2006-03-24 Audrius Meskauskas <AudriusA@Bioinformatics.org> * gnu/java/rmi/activation/DefaultActivationGroup.java (newInstance): Print debug message if debug flag is set. * gnu/java/rmi/activation/DefaultActivationSystem.java: Rewritten. * gnu/java/rmi/server/ActivatableServerRef.java (activate): assign detail, do not call iniCause(). (exportClass): New method. * gnu/java/rmi/server/CombinedClassLoader.java (constructor): Ignore null (bootstrap) class loader. * gnu/java/rmi/server/UnicastServerRef.java (methods, skel, stub, buildMethodHash, findStubSkelClass, getHelperClass): Changed visibility to protected. * java/rmi/activation/Activatable.java (export, register): Rewritten. (toStub): New method. * java/rmi/activation/ActivationGroup.java (getSystem): Rewritten. * java/rmi/activation/ActivationSystem.java (SYSTEM_PORT): Explained property java.rmi.activation.port. Applying two patches toghether because the intermediate version does not build.
Diffstat (limited to 'gnu/java/rmi/server/ActivatableServerRef.java')
-rw-r--r--gnu/java/rmi/server/ActivatableServerRef.java54
1 files changed, 53 insertions, 1 deletions
diff --git a/gnu/java/rmi/server/ActivatableServerRef.java b/gnu/java/rmi/server/ActivatableServerRef.java
index 6463f40d2..d89e351d3 100644
--- a/gnu/java/rmi/server/ActivatableServerRef.java
+++ b/gnu/java/rmi/server/ActivatableServerRef.java
@@ -43,6 +43,8 @@ import java.rmi.RemoteException;
import java.rmi.activation.ActivationID;
import java.rmi.server.ObjID;
import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.RemoteStub;
+import java.rmi.server.Skeleton;
/**
* The activatable server reference works like UnicastServerReference, but it
@@ -117,7 +119,7 @@ public class ActivatableServerRef extends UnicastServerRef
catch (Exception exc)
{
RemoteException rx = new RemoteException("Activation failed.");
- rx.initCause(exc);
+ rx.detail = exc;
throw rx;
}
}
@@ -143,4 +145,54 @@ public class ActivatableServerRef extends UnicastServerRef
UnicastServer.registerActivatable(this);
return r;
}
+
+ /**
+ * Export object and ensure it is present in the server activation table as
+ * well.
+ *
+ * @param aClass the class being exported, must implement Remote.
+ */
+ public Remote exportClass(Class aClass) throws RemoteException
+ {
+ if (!Remote.class.isAssignableFrom(aClass))
+ throw new InternalError(aClass.getName()+" must implement Remote");
+
+ String ignoreStubs;
+
+ ClassLoader loader =aClass.getClassLoader();
+
+ // Stubs are always searched for the bootstrap classes that may have
+ // obsolete pattern and may still need also skeletons.
+ if (loader==null)
+ ignoreStubs = "false";
+ else
+ ignoreStubs = System.getProperty("java.rmi.server.ignoreStubClasses",
+ "false");
+
+ if (! ignoreStubs.equals("true"))
+ {
+ // Find and install the stub
+ Class cls = aClass;
+
+ // where ist the _Stub? (check superclasses also)
+ Class expCls = expCls = findStubSkelClass(cls);
+
+ if (expCls != null)
+ {
+ stub = (RemoteStub) getHelperClass(expCls, "_Stub");
+ // Find and install the skeleton (if there is one)
+ skel = (Skeleton) getHelperClass(expCls, "_Skel");
+ }
+ }
+
+ if (stub == null)
+ stub = createProxyStub(aClass, this);
+
+ // Build hash of methods which may be called.
+ buildMethodHash(aClass, true);
+
+ UnicastServer.registerActivatable(this);
+ return stub;
+ }
+
}