Feng.Li's Java See

抓紧时间,大步向前。
随笔 - 95, 文章 - 4, 评论 - 58, 引用 - 0
数据加载中……

RMI的小例子,不理解的来这看看吧,也欢迎大家拍我。

        众所周之的EJB机制是建立在Java的RMI的基础之上的,要想对EJB有深入的了解,必须掌握RMI的运行机制,在此,我说说我对RMI的一些理解,希望大家同意的和不同意的都站出来讲几句。

       Rmi是Java平台上的RPC,但是由于其只支持Java,所以也就免去了程序员编写IDL(接口定义语言)之苦。对于Java与非Java程序之间的通信,可以使用RMI-IIOP.
        创建RMI远程对象后,程序员就可以象调用本地对象那样去调用远程对象,其底层通信机制则完全由RMI实现,无须我们操心了。
        通常,实现一个RMI系统有4个步骤:
1:定义一个remote interface.
2:   定义一个remote object implementation.
3:   定义客户端程序。
4:编译执行远程对象和客户端。

以下为代码示例
1:Remote接口  (注意:必须extends Remote,方法必须throws RemoteException)
public interface RMI_Add extends java.rmi.Remote {
public long add(long a, long b,long c)
throws java.rmi.RemoteException;
}

2:   remote object implementation.(注意:1:extends UnicastRemoteObject 2:构造函数内必须调用UnicastRemoteObject的构造函数,也就是执行super())

3: 定义远程实现类,在此我把服务器的绑定一起在此类中实现,也可另外再写一个类,实现RMI绑定。(注意:一般都用Naming.rebind(),因为rebind()可以覆盖原有的服务名,省去不必要的麻烦。1099端口为默认,也可以不写)
inport java.rmi.Naming;
public class RMI_AddImpl extends java.rmi.server.UnicastRemoteObject implements RMI_Add {
 public RMI_AddImpl() throws java.rmi.RemoteException {
super();
}
public long add(long a, long b,long c ) throws java.rmi.RemoteException {
return a + b+ c;
}
public static void main(String[] args) {
  try {
RMI_Add d = new RMI_AddImpl();
Naming.rebind("rmi://10.7.3.168:1099/RMI_AddService", d);
} catch (Exception e) { }
}

}

4:编译以上class文件(Javac)
5:   rmic编译服务器实现类,在此是RMI_AddImpl 。
6:rmigistry:运行RMI注册程序.
7:  运行客户端代码。

posted on 2006-11-04 02:21 小锋 阅读(2118) 评论(0)  编辑  收藏 所属分类: J2EE


只有注册用户登录后才能发表评论。


网站导航: