服务端
1.接口
import java.rmi.Remote; import java.rmi.RemoteException; public interface Fib extends Remote { /** * 定义远程方法 * @param n * @return * @throws RemoteException */ public int getFib(int n) throws RemoteException; public void getFib() throws RemoteException; }
2.接口实现
import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class FibImp extends UnicastRemoteObject implements Fib { private static final long serialVersionUID = 1L; protected FibImp() throws RemoteException { super(); } @Override public int getFib(int n) throws RemoteException { return n+1; } @Override public void getFib() throws RemoteException { System.out.println("FibImp.getFib()"); } }
3.服务注册
import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; public class FibonacciServer { public static void main(String[] args) { try { LocateRegistry.createRegistry(8804); Fib fib=new FibImp(); try { Naming.bind("//localhost:8804/SAMPLE-SERVER", fib); System.out.println("fib server ready"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (AlreadyBoundException e) { e.printStackTrace(); } } catch (RemoteException e) { e.printStackTrace(); } } }
客户端调用
1.客户端接口
import java.rmi.Remote; import java.rmi.RemoteException; public interface Fib extends Remote { /** * 定义远程方法 * @param n * @return * @throws RemoteException */ public int getFib(int n) throws RemoteException; public void getFib() throws RemoteException; }
2.客户端实现
import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; public class FibClient { public static void main(String[] args) { String url = "//localhost:8804/SAMPLE-SERVER"; try { Fib fib=(Fib) Naming.lookup(url); // for(int i=0;i<100;i++){ // System.out.println(fib.getFib(i));; // } System.out.println(fib); fib.getFib(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } } }