1、接口定义
package com.neohope.rmi.test; import java.rmi.Remote; import java.rmi.RemoteException; /** * Created by Hansen */ public interface ITest extends Remote { /** * 返回“Hi XXX"字符串,必须声明抛出RemoteException异常 * @return 返回“Hi XXX"字符串 * @throws java.rmi.RemoteException */ public String sayHiTo(String user) throws RemoteException; /** * 加法,必须声明抛出RemoteException异常 * @param a * @parma b * @return a+b * @throws java.rmi.RemoteException */ public int add(int a, int b) throws RemoteException; }
2、服务端实现
package com.neohope.rmi.test; import java.io.IOException; import java.io.Serializable; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; /** * Created by Hansen */ public class TestServer implements ITest, Serializable { /** * 构造函数,必须声明抛出RemoteException异常 * * @throws RemoteException */ public TestServer() throws RemoteException { } /** * 返回“Hi XXX"字符串 * @return 返回“Hi XXX"字符串 * @throws java.rmi.RemoteException */ @Override public String sayHiTo(String user) throws RemoteException { return "Hi " + user; } /** * 加法 * @param a * @parma b * @return a+b * @throws java.rmi.RemoteException */ @Override public int add(int a, int b) throws RemoteException { return a+b; } public static void main(String[] args) throws IOException, AlreadyBoundException { //创建一个远程对象 ITest server = new TestServer(); //注册端口 LocateRegistry.createRegistry(1234); //绑定对象 Naming.bind("rmi://localhost:1234/RemoteTest", server); System.in.read(); } }
3、客户端实现
package com.neohope.rmi.test; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; /** * Created by Hansen */ public class TestClient { public static void main(String args[]) throws RemoteException, NotBoundException, MalformedURLException { //查找服务,并调用方法 ITest rservice = (ITest) Naming.lookup("rmi://localhost:1234/RemoteTest"); System.out.println(rservice.sayHiTo("neohope")); System.out.println(rservice.add(1,2)); } }