RMI Stubs

Hello

i read that ,in JDK 1.5 you don't have to generate stubs manually for server but it is generated automatically but when i tried this code , it throws this exception ,why?!!!!

publicstaticvoid main(String[] args){

try{

System.out.println("Constructing server implementations...");

LoginImpl Login =new LoginImpl();

System.out.println("Binding server implementations to registry...");

Context namingContext =new InitialContext();

namingContext.bind("rmi:Login", Login);

System.out.println("Waiting for invocations from clients...");

}catch (Exception e){

e.printStackTrace();

}

}

Exception

--

javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:

java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:

java.lang.ClassNotFoundException: dbHandling.Login]

at com.sun.jndi.rmi.registry.RegistryContext.bind(Unknown Source)

at com.sun.jndi.toolkit.url.GenericURLContext.bind(Unknown Source)

at javax.naming.InitialContext.bind(Unknown Source)

at dbHandling.Main.main(Main.java:16)

Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:

java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:

java.lang.ClassNotFoundException: dbHandling.Login

at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396)

at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)

at sun.rmi.transport.Transport$1.run(Transport.java:159)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Transport.java:155)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)

at java.lang.Thread.run(Thread.java:619)

at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)

at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)

at sun.rmi.server.UnicastRef.invoke(Unknown Source)

at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)

... 4 more

Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:

java.lang.ClassNotFoundException: dbHandling.Login

at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)

at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)

at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)

at sun.rmi.transport.Transport$1.run(Transport.java:159)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Transport.java:155)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)

at java.lang.Thread.run(Thread.java:619)

Caused by: java.lang.ClassNotFoundException: dbHandling.Login

at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

at java.lang.ClassLoader.loadClass(ClassLoader.java:251)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:247)

at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:711)

at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:655)

at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:592)

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:1531)

at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)

at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)

... 12 more

thanks in advanced

[5691 byte] By [MohamedSaeeda] at [2007-11-26 18:47:35]
# 1
Presumably dbHandling.Login is your remote interface?The Registry and the client both need access to that via their CLASSPATHs or the codebase mechanism.
ejpa at 2007-7-9 6:21:32 > top of Java-index,Java Essentials,Java Programming...
# 2

> Presumably dbHandling.Login is your remote

> interface?

>

> The Registry and the client both need access to that

> via their CLASSPATHs or the codebase mechanism.

yes dbHandling.Login is my interface and client can access it but i don't know how to make registry can access it

thanks

MohamedSaeeda at 2007-7-9 6:21:32 > top of Java-index,Java Essentials,Java Programming...