package interview.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* 第1步:必须定义接口,要求如下:每个方法必须抛出异常
*/
public interface HelloInterface extends Remote
{
public String sayHello() throws RemoteException;
}
package interview.rmi;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
/**
* 第2步:接口实现类,也就是真正的服务端
* 要求:继承UnicaseRemoteObject是最简单的方法
*
*
*/
public class HelloImpl extends UnicastRemoteObject implements HelloInterface
{
public HelloImpl() throws RemoteException
{
super();
}
public String sayHello() throws RemoteException
{
return "hllo";
}
}
package interview.rmi;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
/**
* 第三步:注册服务
*
*
*/
public class RMIServer
{
public static void main(String[] args) throws RemoteException,
MalformedURLException
{
// 不必再执行rmiregistry了
LocateRegistry.createRegistry(1099);
HelloInterface hello = new HelloImpl();
// 注册服务
Naming.rebind("//localhost/hello", hello);
}
}
package interview.rmi;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
/**
* 第四步:远程调用
*
*
*/
public class RMIClient
{
public static void main(String[] args) throws MalformedURLException,
RemoteException, NotBoundException
{
HelloInterface hello = (HelloInterface) Naming
.lookup("//localhost/hello");
System.out.println(hello.sayHello());
}
}