package com.demo.rmi.dao.impl; import java.rmi.Remote; import java.rmi.RemoteException; public interface RemoteDao extends Remote { public String say()throws RemoteException; }
2.实现接口
package com.demo.rmi.dao.impl; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class RemoteDaoImpl extends UnicastRemoteObject implements RemoteDao { public RemoteDaoImpl() throws RemoteException { super(); // TODO Auto-generated constructor stub } @Override public String say() throws RemoteException { // TODO Auto-generated method stub return "[来自服务器的问候]:你好! 很高心见到你!"; } }
3.服务器端
package com.demo.rmi.server; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import com.demo.rmi.dao.impl.RemoteDaoImpl; import com.demo.rmi.dao.impl.RemoteDao; public class TestServer { public static void main(String[] args) { // TODO Auto-generated method stub try { LocateRegistry.createRegistry(1099); RemoteDao server=new RemoteDaoImpl(); try { Naming.rebind("//127.0.0.1:1099/SAMPLE-SERVER", server); System.out.println("[服务已启动]"); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
4.客户端
package com.demo.rmi.client; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; import com.demo.rmi.dao.impl.RemoteDaoImpl; import com.demo.rmi.dao.impl.RemoteDao; public class TestClient { public static void main(String[] args) { // TODO Auto-generated method stub try { try { RemoteDao server=(RemoteDao)Naming.lookup ("//127.0.0.1:1099/SAMPLE-SERVER"); System.out.println(server.say()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NotBoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }