预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于RMI技术的远程词典应用 1.情景描述 假设有一台应用服务器以RMI的方式向客户端提供英汉互译词典的服务,请尝试完成 服务器端程序的编码和一个客户端应用,并分别部署到两台计算机上进行测试。 2.RMI简介 RMI(指远程方法调用)是RemoteMethodInvocation的简称,是一种远程方法调用机 制,其过程对于最终用户是透明的。RMI包含两种组件:RMI服务器和RMI客户。RMI有三 层架构:Stub/Skeleton层、远程引用层和传输层。 开发RMI需要以下步骤:1)根据应用的需要定义远程接口; 2)定义和实现服务器类,其中要实现远程接口中声明的远程方法; 3)定义与实现客户类; 4)完成上述类文件的编程之后,编译源文件生成相应的类文件; 5)生成Stub和Skeleton; 6)创建安全策略; 7)启动RMI远程注册表; 8)启动服务器; 9)启动客户,完成应用。 3.基于RMI技术的远程词典应用的实现 在实现基于RMI技术的远程词典应用的过程中,主要实现了三部分:定义的远程接口, 实现远程接口以及服务器端应用服务实现,应用客户端的图形实现。 (1)远程接口的实现 在远程接口的类中,声明了一个返回字符串的translator方法。实现的代码如下: packagetranslatorInterface; importjava.rmi.Remote; importjava.rmi.RemoteException; /** *@author苑仁群 *@since2012.6.4 */ publicinterfaceTranslatorInextendsRemote{ /** * *@paramword输入待查询的单词 *@return返回所查单词的结果 *@throwsRemoteException */ publicStringtranslator(Stringword)throwsRemoteException; } (2)应用服务端实现 在应用服务端实现了定义的远程接口,并且进行了服务端端口的注册,以及通信路径的 注册。实现定义的远程接口的代码如下: packageserver; importjava.rmi.RemoteException; importjava.rmi.server.UnicastRemoteObject; importjava.util.HashMap; importjava.util.Map; importtranslatorInterface.TranslatorIn; /** * *@author苑仁群 *@since2012.6.4 */ publicclassTranslatorImextendsUnicastRemoteObjectimplementsTranslatorIn{ privatestaticfinallongserialVersionUID=1L; privateMap<String,String>dic=newHashMap<String,String>(); protectedTranslatorIm()throwsRemoteException{ super(); dic.put("distribution","n.分布;分配"); dic.put("system","n.系统;方法;制度,体制"); } @Override publicStringtranslator(Stringword){ Stringresult=null; result=dic.get(word); if(result==null||result.equals("")) result="抱歉,您查找的单词不存在"; returnresult; } } 进行服务端口注册以及通信路径注册的代码如下: packageserver; importjava.net.MalformedURLException; importjava.rmi.AlreadyBoundException; importjava.rmi.Naming; importjava.rmi.RemoteException; importjava.rmi.registry.LocateRegistry; importtranslatorInterface.TranslatorIn; /** * *@author苑仁群 * */ publicclassServer{ publicstaticvoidmain(Stringarg[])throwsMalformedURLException, AlreadyBoundException{ try{ Tran