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

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

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

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

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

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

在Eclipse中开发RMI教程作者:godelegant个人博客:http://www.javaer.com.cn目前,网络上的RMI资料大部分为极简单的例子,且需要手动进行编译、运行,开发相当麻烦。如果你想更深入学习RMI开发,这样的例子只能让你对RMI有所了解,但要真正方便的开发RMI,你需要了解更多。1、RMI的运行机制RMI服务端用于客户端调用的对象注册到RMI注册服务器中,客户端通过占位程序(Stub)与服务端的Skeleton通讯,调用服务端的远程对象的方法。客户端服务端接口调用实现接口绑定注册服务器StubSke.所以在进行RMI开发及测试的一般流程是:1)服务端、客户端代码实现2)使用rmic编译器,获取Stub和Skeleton3)启动注册服务器4)绑定服务对象5)客户端调用下面会按照这个流程来进行讲解。2、开发前的准备工作在Eclipse中开发RMI时,可以使用插件RMIpluginforeclipsev2.0(URL:http://www.genady.net/rmi/v20/update/),下载并安装到eclipse;安装及调试可以参看该插件的教程。编号启动RMI注册器的代码,如下:Stringcmd=System.getProperty("java.home")+"\\bin\\"+"rmiregistry.exe";WindowsProcessexec=newWindowsProcess(cmd);exec.start();try{Thread.sleep(100);}catch(InterruptedExceptione){e.printStackTrace();}使用的WindowsProcess是一个工具类,用于在windows环境下执行exe文件。原码如下:publicclassWindowsProcessextendsThread{Stringcmd="";publicWindowsProcess(Stringcmd){this.cmd=cmd;}publicvoidrun(){log("usingWindowsProcessexecute\""+cmd+"\"");if(cmd==null||cmd.length()<1){log("command'slengthlt1,exit.");System.exit(1);}Runtimert=Runtime.getRuntime();intexitVal=0;try{Processproc=rt.exec(cmd);StreamGobblersgError=newStreamGobbler(proc.getErrorStream(),"ERROR");StreamGobblersgOutput=newStreamGobbler(proc.getInputStream(),"OUTPUT");sgError.start();sgOutput.start();exitVal=proc.waitFor();log("exitVal:"+exitVal);}catch(Exceptione){log(e.getMessage());}}publicvoidlog(Stringmsg){SimpleDateFormatsdf=newSimpleDateFormat("[yyyy-MM-ddhh:mm:ss]");System.out.println(sdf.format(newDate())+msg);}classStreamGobblerextendsThread{InputStreamis;Stringtype;StreamGobbler(InputStreamis,Stringtype){this.is=is;this.type=type;}publicvoidrun(){try{InputStreamReaderisr=newInputStreamReader(is);BufferedReaderbr=newBufferedReader(isr);Stringline=null;while((line=br.readLine())!=null)log(type+">"+line);}catch(IOExceptionioe){ioe.printStackTrace();}}}}这样就可以在Eclipse环境中运行rmiregistry.exe,且可以在console中查看执行情况。3、实现远程调用服务端和客户端代码。服务端需要定义远程调用接口,并实现该接口。接口:publicinterfaceRemoteDataSourceextendsRemote{/***远程方法:获取jdbc驱动*@return*@throwsException*/p