public class MatlabRMIClassLoaderSpi extends RMIClassLoaderSpi
RemoteClassLoader
. If it were package
private it would result in an IllegalAccessError
because only classes in the same package as a package
private class may construct it (even via reflection). It has been placed in the matlabcontrol.internal
package to make it clear it is not intended for use by users of matlabcontrol.
java.rmi.server.codebase
property in the external JVM but
that could interfere with other uses of RMI in the application. There is no way to always sending the correct
annotations without this custom rmi class loader spi. While the java.rmi.server.codebase
property could be
set in the MATLAB JVM, the property is checked only at load time. This would mean that class definitions added
dynamically with javaaddpath
could not be sent.Constructor and Description |
---|
MatlabRMIClassLoaderSpi() |
Modifier and Type | Method and Description |
---|---|
String |
getClassAnnotation(Class<?> clazz)
The returned annotation becomes the codebase argument in
loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader) when the RMIClassLoaderSpi
in the receiving JVM attempts to load clazz . |
ClassLoader |
getClassLoader(String codebase) |
Class<?> |
loadClass(String codebase,
String name,
ClassLoader defaultLoader) |
Class<?> |
loadProxyClass(String codebase,
String[] interfaces,
ClassLoader defaultLoader) |
static void |
setCodebase(String remoteCodebase)
Sets the codebase of the currently connected external JVM.
|
public static void setCodebase(String remoteCodebase)
remoteCodebase
- public Class<?> loadClass(String codebase, String name, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
loadClass
in class RMIClassLoaderSpi
MalformedURLException
ClassNotFoundException
public Class<?> loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
loadProxyClass
in class RMIClassLoaderSpi
MalformedURLException
ClassNotFoundException
public ClassLoader getClassLoader(String codebase) throws MalformedURLException
getClassLoader
in class RMIClassLoaderSpi
MalformedURLException
public String getClassAnnotation(Class<?> clazz)
codebase
argument in
loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)
when the RMIClassLoaderSpi
in the receiving JVM attempts to load clazz
. This allows for classes defined in MATLAB but not in the
receiving JVM to find and load the class definition.getClassAnnotation
in class RMIClassLoaderSpi
clazz
-