问题描述
最近在做一个rmi的程序,简单的Helloworld调用已经实现了,可是当我加入有数据库操作的方法,客户端又不能调用了,调试发现程序根本不走方法调用的语句,求高手指点!
解决方案
解决方案二:
没人知道吗?我自己顶一下吧。
解决方案三:
1创建RMIregistry,访问数据库的对象(UserDatabaseImpl),把对象绑到registry以给远程用户.//Createtheregistryonport1099Registryreg=java.rmi.registry.LocateRegistry.createRegistry(1099);//CreatethedatabaseobjectUserDatabaseImpldb=newUserDatabaseImpl();//Bindtheobjecttotheregistryas"DB1"java.rmi.Naming.rebind("DB1",db);==========================================2一旦数据库对象绑到registry,用户端可以用java.rmi.Naming.lookup()获得它的一个引用UserDatabasedb;//Theremotedatabaseobject...Stringhost=this.getCodeBase().getHost();Stringname="//"+host+"/DB1";db=(UserDatabase)java.rmi.Naming.lookup(name);===========================================3一旦获得远程对象的引用,我们就可以通过调用这个对象的方法来操作数据库了.至于其他的RMIobjects,你的数据库对象(UserDatabaseImpl)implements远程接口(UserDatabase)并extendsjava.rmi.Remote.这个远程接口定义了数据库对象的方法,这些方法可以被客户端执行调用..publicinterfaceUserDatabaseextendsjava.rmi.Remote{publicStringcreateUser(UserDatadata)throwsRemoteException;publicvoideditUser(Stringuserid,UserDatadata)throwsRemoteException;publicvoiddeleteUser(Stringuserid)throwsRemoteException;publicUserDatagetUser(Stringuserid)throwsRemoteException;publicHashtablelistUsers()throwsRemoteException;}===================================================4现在就可以调用远程对象的方法,比如把所有数据库所有用户放到list里Hashtableusers=db.listUsers();===================================================