<b>用RMI实现基于Java的分布式计算</b>[Java编程]
本文“<b>用RMI实现基于Java的分布式计算</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Java 2 Enterprise Edition(J2EE)远程办法调用(Remote Method Invocation,RMI)框架答应你成立透明的、分布式的服务和利用程序.基于RMI的利用程序由Java对象构成,这些对象彼此调用,同时忽视对方的位置.换言之,一个Java对象可调用另一个虚拟机上的某个Java对象的办法,整个历程和调用同一个虚拟机上的某个Java对象的办法无异.驻留在差别虚拟机上的对象为了彼此得到引用,可以利用RMI的查找服务,大概将对象引用作为办法调用的一个参数大概返回值来接纳.参数和返回值借助Java的对象序列化机制由RMI来举行封送.
远程对象和接口
Java供应了一个完好限命名称为java.rmi.Remote的接口.任何对象要想参与和另一个Java对象的远程会话,就必须直接或间接地实现该接口.特别要注意的是,任何由java.rmi.Remote接口来标识的对象都表示着它的办法可从其他任何虚拟机举行调用.实现了java.rmi.Remote接口的对象普通称为“远程对象”,必须采取以下方法来声明它的办法:
每个支持远程调用的办法都必须在其throws子句中声明java.rmi.RemoteException.
关于一个可远程调用的办法,它的每个非基本(nonprimitive)参数大概返回值都必须直接或间接地声明为实现了java.io.Serializable接口.
除了实现java.rmi.Remote接口和精确声明任何远程办法之外,远程对象必须供应一个无参数的构造函数,它能引发一个java.rmi.RemoteException非常.这就保证了对象可基于一种序列化状况来远程构造.
远程对象必须导出,以接纳传入的远程办法调用.为此,你普通需求扩大java.rmi.server.UnicastRemoteObject大概java.rmi.activation.Activatable.通过对此中任何一个类举行扩大,远程对象便可在成立时自动导出.
以下接口定义展示了java.rmi.Remote接口最典型的用法:
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface TimeKeeper extends Remote
{
public String currentDate() throws RemoteException;
public String currentTime() throws RemoteException;
}
由于String类声明为实现了java.io.Serializable接口,所以String是远程办法的有效返回范例.
以下代码展示了若何实现TimeKeeper接口,以便定义一个有效的远程对象:
import java.rmi.RemoteException;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TimeKeeperImpl implements TimeKeeper
{
public TimeKeeperImpl()
throws RemoteException
{
}
public String currentDate() throws RemoteException
{
Calendar cal = new GregorianCalendar();
String retVal = (cal.get(Calendar.MONTH) + "/" +
cal.get(Calendar.DAY_OF_MONTH) + "/" +
cal.get(Calendar.YEAR));
return retVal;
}
public String currentTime() throws RemoteException
{
Calendar cal = new GregorianCalendar();
String retVal = (cal.get(Calendar.HOUR_OF_DAY) + ":" +
cal.get(Calendar.MINUTE) + ":" +
cal.get(Calendar.SECOND));
return retVal;
}
}
以上是“<b>用RMI实现基于Java的分布式计算</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |