I try to start a rmi server in my own wildfire plugin, so I add such source code in the init method of plugin class:
try {
LocateRegistry.createRegistry(9999);
} catch (Exception e) {
Log.error(e.getMessage(), e);
}
try {
Log.info((“Start RMI server”));
PhoneStateListener listener = new PhoneStateListenerImpl(this);
Log.info((“Rebind RMI server”));
Naming.rebind(“rmi://localhost:9999/chatall”,listener);
} catch (RemoteException e) {
// TODO Auto-generated catch block
Log.error(e.getMessage(), e);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
Log.error(e.getMessage(), e);
}
But when I start the wildfire again ,I got errors as follows:
2006.08.21 12:27:55 [gxlu.nova.components.chatall.im.server.CallPlugin.init(CallPlugin.java:126)
] RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: gxlu.nova.components.chatall.im.server.ifc.PhoneStateListener (no security manager: RMI class loader disabled)
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: gxlu.nova.components.chatall.im.server.ifc.PhoneStateListener (no security manager: RMI class loader disabled)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:385)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:595)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall .java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:343)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:160)
at gxlu.nova.components.chatall.im.server.CallPlugin.init(CallPlugin.java:123)
at gxlu.nova.components.chatall.im.server.CallPlugin.initializePlugin(CallPlugin.j ava:80)
at org.jivesoftware.wildfire.container.PluginManager.loadPlugin(PluginManager.java :396)
at org.jivesoftware.wildfire.container.PluginManager.access$200(PluginManager.java :47)
at org.jivesoftware.wildfire.container.PluginManager$PluginMonitor.run(PluginManag er.java:883)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101 (ScheduledThreadPoolExecutor.java:65)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodi c(ScheduledThreadPoolExecutor.java:142)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Schedu ledThreadPoolExecutor.java:166)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: gxlu.nova.components.chatall.im.server.ifc.PhoneStateListener (no security manager: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
… 1 more
Caused by: java.lang.ClassNotFoundException: gxlu.nova.components.chatall.im.server.ifc.PhoneStateListener (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:531)
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:1499)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1462)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1698)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
… 9 more
I’'m sure I set the class PhoneStateListener or other classes in my classpath, then why it gives me a classnotfound exception?