java学习笔记(十六)――Java RMI(三)

2014-11-23 23:41:28 · 作者: · 浏览: 2
tring password;
9
10 public String getUsername() {
11 return username;
12 }
13 public void setUsername(String username) {
14 this.username = username;
15 }
16 public String getPassword() {
17 return password;
18 }
19 public void setPassword(String password) {
20 this.password = password;
21 }
22 }
复制代码
4. 定义server端的主程序入口。
Entry.java
复制代码
1 package cn.com.tt.rmiserver.entry;
2
3 import java.rmi.AlreadyBoundException;
4 import java.rmi.RemoteException;
5 import java.rmi.registry.LocateRegistry;
6 import java.rmi.registry.Registry;
7 import java.rmi.server.UnicastRemoteObject;
8
9 import cn.com.tt.rmiserver.UserManagerImp;
10 import cn.com.tt.rmiserver.stub.UserManagerInterface;
11
12 public class Entry {
13 public static void main(String []args) throws AlreadyBoundException, RemoteException{
14 UserManagerImp userManager=new UserManagerImp();
15 UserManagerInterface userManagerI=(UserManagerInterface)UnicastRemoteObject.exportObject(userManager,0);
16 // Bind the remote object's stub in the registry
17 Registry registry = LocateRegistry.createRegistry(2002);
18
19 registry.rebind("userManager", userManagerI);
20 System.out.println("server is ready");
21 }
22 }
复制代码
(四) client端代码
把Server端的Account类和接口UserManagerInterface 导出Export成jar包,命名为:RmiServerInterface.jar。导入到client中。
项目——右键——Export——java——jar file——next——选择Account类和接口UserManagerInterface——命名为:RmiServerInterface.jar如下图:
3. 新建一个java Project,导入jar包,编写客户端代码。
4. 代码
ClientEntry.java
复制代码
1 package weiblog.rmi;
2
3 import java.rmi.NotBoundException;
4 import java.rmi.RemoteException;
5 import java.rmi.registry.LocateRegistry;
6 import java.rmi.registry.Registry;
7
8 import cn.com.tt.rmiserver.stub.UserManagerInterface;
9
10 public class ClientEntry {
11
12 public static void main(String []args){
13
14 try {
15 Registry registry = LocateRegistry.getRegistry("localhost",2004);
16 UserManagerInterface userManager = (UserManagerInterface)registry.lookup("userManager");
17 System.out.println("用户名是"+userManager.getAdminAccount().getUsername()
18 +"密码"+userManager.getAdminAccount().getPassword());
19 } catch (RemoteException e) {
20 // TODO Auto-generated catch block
21 e.printStackTrace();
22 } catch (NotBoundException e) {
23 // TODO Auto-generated catch block
24 e.printStackTrace();
25 }
26
27 }
28
29 }
复制代码
5. 先运行服务器端代码, 然后运行客户端代码,就会显示运行结果,客户端可以运行多次,每次都可以取得服务器端的对象。如果要再次运行客户端代码就需要更改端口号,如果不更改就会显示端口号被占用。