1.定义接口
2.实现接口
3.服务器端
4.客户端
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();
}
}
}