您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于RMI技术的远程词典应用
基于RMI技术的远程词典应用一、场景描述假设有一台应用服务器以RMI的方式向客户端提供英汉互译词典的服务。请同学们尝试完成服务器端程序的编码和一个客户端应用,并分别部署到两台计算机上进行测试。服务接口声明见附录。说明:服务器端词典的容量不是考察的重点,可以使用数据库技术也可以使用Map在内存中保存少量的英汉词汇对应表。RMI有多种实现途径,参考网址中的内容只是其中一种,而且也不是最好的方式。请同学们不要局限于此,尽量通过google、soso、百度发现更多、更好的方式,并对其优劣进行对比。二、开发步骤1.定义远程接口//Translator.javapackagecom.dic;importjava.rmi.*;publicinterfaceTranslatorextendsRemote{/****@paramstr需要被翻译的单词*@return英汉互译后的内容,如果词典中不包含此单词返回null*/publicStringtranslate(Stringstr)throwsRemoteException;}2.实现远程接口和编写服务器端//TranslatorImpl.javapackagecom.dic;importjava.rmi.*;importjava.rmi.server.*;importjava.rmi.registry.*;importjava.net.*;importcom.sun.corba.se.spi.activation.Server;publicclassTranslatorImplextendsUnicastRemoteObjectimplementsTranslator{publicStringtranslate(Strings)throwsRemoteException{return猫;}publicTranslatorImpl()throwsRemoteException{super();}publicstaticvoidmain(String[]args){System.setSecurityManager(newRMISecurityManager());try{TranslatorImpltran=newTranslatorImpl();Naming.rebind(//127.0.0.1/TranslatorImpl,tran);System.out.println(Readytodotranslate);}catch(Exceptione){e.printStackTrace();}}}3.编写客户端//SearchDictionary.javapackagecom.dic;importjava.rmi.*;importjava.rmi.registry.*;publicclassSearchDictionary{publicstaticvoidmain(String[]args){System.setSecurityManager(newRMISecurityManager());try{Translatortran=(Translator)Naming.lookup(//127.0.0.1/TranslatorImpl);System.out.println(cat的意思是+tran.translate(cat));}catch(Exceptione){e.printStackTrace();}}}4.创建一个policy文件//policy.txtgrant{permissionjava.security.AllPermission,;};5.程序的发布5.1编译服务器端javac-classpath.-d.Translator.javajavac-classpath.-d.TranslatorImpl.java5.2编译客户端javac-classpath.-d.SearchDictionary.java6.运行程序6.1运行RMIRegistry在命令行中输入startrmiregistry如下图:6.2运行服务器程序Java-Djava.security.policy=policy.txt-classpath.com.dic.TranslatorImpl可以看到服务器程序运行成功6.3运行客户端程序Java-Djava.security.policy=policy.txt-classpath.com.dic.SearchDictionary可以看到程序运行成功,从服务器端返回的数据成功显示在了客户端。
本文标题:基于RMI技术的远程词典应用
链接地址:https://www.777doc.com/doc-8233140 .html