diff options
| author | Audrius Meskauskas <audriusa@Bioinformatics.org> | 2006-03-24 17:40:24 +0000 |
|---|---|---|
| committer | Audrius Meskauskas <audriusa@Bioinformatics.org> | 2006-03-24 17:40:24 +0000 |
| commit | 63f5926a4f85a4c5f4c8349a7d5bc985badd503f (patch) | |
| tree | e459cef953f7bdc2a4d995b04143b2bcac9ff478 /gnu/java/rmi/server/ActivatableServerRef.java | |
| parent | f370efa1358a912b3c57e4bce650babbebd59269 (diff) | |
| download | classpath-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.java | 54 |
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; + } + } |
