RMI 开发原理

一个正常工作的RMI系统由下面几个部分组成:
● 远程服务接口的定义
● 远程服务接口的具体实现
● 桩(Stub)和框架(Skeleton)文件
● 一个运行远程服务的服务器
● 一个RMI命名服务,它允许客户端去发现这个远程服务
● 类文件的提供者(一个HTTP或者FTP服务器)
● 一个需要这个远程服务的客户端程序

如果所有的RMI文件都已经设计好了,那么需要下面的几个步骤去生成系统:
1、  编写并且编译接口的Java代码
2、  编写并且编译接口实现的Java代码
3、  从接口实现类中生成桩(Stub)和框架(Skeleton)类文件
4、  编写远程服务的主运行程序
5、  编写RMI的客户端程序
6、  安装并且运行RMI系统

实现过程如下:(以下代码在Windows Server 2003,JDK1.6环境下调试通过,代码来自互联网)

服务器端:
1接口
第一步就是建立和编译服务接口的Java代码。这个接口定义了所有的提供远程服务的功能,下面是源程序:
Product,java
import java.rmi.*;
public interface Product extends  Remote
{
    String getDescription() throws RemoteException;
}
2接口的具体实现
下一步,我们就要写远程服务的具体实现,这是一个ProductImpl类文件:
ProductImpl.java
import java.rmi.*;
import java.rmi.server.*;
public class ProductImpl extends UnicastRemoteObject implements Product
{
    private String name ;
    public ProductImpl(String n) throws RemoteException
    {
       name = n;
    }
    public String getDescription()
    {
         return "Hello,I am " + name + " . I love you !";
    }     
}
3 桩(Stubs)和框架(Skeletons)
  下一步就是要使用RMI编译器rmic来生成桩和框架文件,这个编译运行在远程服务实现类文件上。
>rmic ProductImpl
在你的目录下运行上面的命令,成功执行完上面的命令你可以发现一个ProductImpl_stub.class文件,如果你是使用的是1.2以前的SDK,那么你还可以发现ProductImpl_Skel.class文件。
4 主机服务器
远程RMI服务必须是在一个服务器中运行的。
ProductServer.java
import java.rmi.*;
import java.rmi.server.*;
public class ProductServer {
public static void main(String args[])
    {
        try
        {
            System.out.println("Construction server implementats ...");
            ProductImpl p1 = new ProductImpl("Wang.yuanbin");
            ProductImpl p2 = new ProductImpl("Bueaty");
            System.out.println("binding server implementation to registry ...");
            Naming.rebind("wyb",p1);
            Naming.rebind("Beau",p2);
            System.out.println("Waiting for invocations from clients ...");
        }
        catch (Exception ex)
        {
            System.out.println("Error: " + ex );
        }
    }
}

你可能感兴趣的:(java,框架,windows,工作,互联网)