HelloWorld接口
public interface HelloWorld extends Remote {
String sayHi(String name)throws RemoteException;
}
HelloWorldImpl.java
public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorld{
private static final long serialVersionUID = 1L;
public HelloWorldImpl()throws RemoteException{
super();
}
@Override
public String sayHi(String name) {
return "Hi:"+name;
}
HelloWorldServer.java
public class HelloWorldServer {
public static void main(String args[]) throws Exception{
HelloWorld c = new HelloWorldImpl();
LocateRegistry.createRegistry(8180);
//把远程对象注册到RMI注册服务器上,并命名为RHello
//绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的)
Naming.bind("rmi://172.16.148.215:8180/HelloWorld",c);
System.out.println("Server running");
}
}
HelloWorldClient.java
//Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,
//能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。
public class HelloWorldClient {
public static void main(String args[]){
try {
//在RMI服务注册表中查找名称为RHello的对象,并调用其上的方法
HelloWorld rhello =(HelloWorld) Naming.lookup("rmi://172.16.148.215:8180/HelloWorld");
System.out.println(rhello);
System.out.println(rhello.sayHi("张三"));
} catch (NotBoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
}