I ran into a similar problem also.
You should remove the "extends DB" from RemoteDB declaration.
This is needed if you do not want to change the DB interface. I guess, Sun does not allow to change its interface.
The problem is that the methods of the class, you want to send through RMI, have to be declared throwing RemoteException. If you leave "extends DB" in the declaration of RemoteDB, you should change methods of DB to throwing RemoteException.
You should imagine RemoteDB as a wrapper class for DB. Methods of RemoteDB should throw RemoteException. The client will see the remote database through RemoteDB.
And I think, you should use a 3rd interface for Controller on the client side to hide the difference between RemoteDB and DB.
I guess, you also used the Monkhouse book ...
It is a trick in this book that Monkhouse defined his DBClient methods throwing IOException. In this way, the DBClient methods can throw RemoteException also because RemoteException is an IOException.
So, he could insert "extends DBClient" into the declaration of DvdDatabaseRemote. But this solution works only if the methods in Sun provided interface (DBMain, I guess) throw RemoteException or IOException.
Regards,
Attila
[ December 07, 2008: Message edited by: Attila J�borszki ]