1. NameRMI是Romote Method Invocation的缩写,就是远程方法调用。
2. Intent具体的说,就是能够通过这种机制,实现在一个JVM上调用另一个JVM上的Java对象的方法。
3. Structure(1)RMI Interface and Class第一步:继承了Remote的interface定义一个继承了Remote的interface,命名为TestRMIService。在其中有我们期望在Client端调用的方法testHello(),注意要抛出RemoteException。
第二步:继承了UnicastRemoteObject且实现了TestRMIService的class定义一个继承了UnicastRemoteObject且实现了TestRMIService的class,命名为TestRMIServiceImpl。在其中实现testHello方法。
(2)RMI Server第一步:定义一个class,命名为TestServer,其中有main方法。在main方法中实例化TestRMIService一个远程对象,命名为testRMI。
第二步:创建一个Registry,并向远程对象testRMI注册,注册名为“rmi://locahost:1234/testrmi”。
(3)RMI Client第一步:定义一个class,命名为TestClient,其中有main方法。查询注册
第二步:查询注册名为“rmi://locahost:1234/testrmi”的TestRMIService远程对象,查询结果为testRMI。
第三步:调用远程对象testRMI的方法testHello。
4. Sample Code(1)TestRMIService
- package com.sinosuperman.rmi;
-
- import java.rmi.Remote;
- import java.rmi.RemoteException;
-
- public interface TestRMIService extends Remote {
- public String testHello() throws RemoteException;
- }
|
(2)TestRMIServiceImpl
- package com.sinosuperman.rmi;
-
- import java.rmi.RemoteException;
- import java.rmi.server.UnicastRemoteObject;
-
- public class TestRMIServiceImpl extends UnicastRemoteObject implements TestRMIService {
-
- private static final long serialVersionUID = -9039976499370682232L;
-
- public TestRMIServiceImpl() throws RemoteException {
- }
-
- @Override
- public String testHello() throws RemoteException {
- return "I"m RMI, Hello World!";
- }
- }
|