You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Nima Kaviani <ni...@gmail.com> on 2011/04/05 21:33:35 UTC
Problem getting the RMI client to work
Hi all,
I am trying to write an RMI client bundle on top of Felix to lookup and
import an object from an RMI registry; but my efforts fail with the
following error:
java.rmi.UnmarshalException: error unmarshalling return; nested exception
is:
java.lang.ClassNotFoundException:
com.notehive.osgi.rubis.hibernate_osgi_rubis.web.browsereg.IServletRemote
(no security manager: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at
com.notehive.osgi.rubis.hibernate_osgi_rubis.web.core.SpringHttpWrapperImpl.register(SpringHttpWrapperImpl.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl.handleMessage(ChannelEndpointImpl.java:1140)
at
ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl$2.run(ChannelEndpointImpl.java:295)
at
ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl$1.run(ChannelEndpointImpl.java:258)
Caused by: java.lang.ClassNotFoundException:
com.notehive.osgi.rubis.hibernate_osgi_rubis.web.browsereg.IServletRemote
(no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:535)
at
java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628)
at
java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294)
at
sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1530)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1492)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
... 9 more
I am not sure if this is due to a classloading problem or a java security
issue.
For class loading I am using utilities from Pax Swissbox Core combined with
parts of Pax Exam's client code:
if( _remoteServlet == null )
{
Throwable reason = null;
long startedTrying = System.currentTimeMillis();
try {
ContextClassLoaderUtils.doWithClassLoader(null, new
Callable<Object>() {
public Object call() throws Exception {
try {
_registry = LocateRegistry.getRegistry(
SpringHttpWrapperImpl.PORT );
}catch(Exception e){
e.printStackTrace();
}
return null;
}
});
} catch (Exception e1) {
e1.printStackTrace();
}
try
{
_remoteServlet =
(IServletRemote) _registry.lookup(
SpringHttpWrapperImpl.STUB_NAME );
while( _remoteServlet == null
&& System.currentTimeMillis() < startedTrying + 1000
);
} catch( ConnectException e ) {
reason = e;
} catch( NotBoundException e ) {
reason = e;
} catch( RemoteException e ) {
reason = e;
}
if( _remoteServlet == null )
reason.printStackTrace();
}
I also have Felix Security Framework in place and the following policy file
configured.
grant {
permission java.security.AllPermission;
};
The part that triggers the error is the code below where I try to lookup for
the class from the RMI registry:
_remoteServlet = (IServletRemote) _registry.lookup(
SpringHttpWrapperImpl.STUB_NAME );
very much would appreciate any hints on what could be wrong.
-Nima
--
http://nima.magic.ubc.ca