实习一远程过程调用中间件及数据访问中间件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验一远程过程调用中间件及数据访问中间件一、实习目的通过实例掌握RMI,RPC,JDBC等中间件的使用。二、实习要求1)RPC实现远程计算服务。服务器端提供计算服务;客户端调用计算服务。2)RMI+JDBC远端数据库的访问。实现简单的成绩查询系统(创建表,录入成绩,查询成绩等)。在服务器端,通过JDBC访问数据库。客户端调用服务端提供的各种数据库操作。3)服务器和客户端不在同的机器上进行测试。4)打包成易于执行的文件,如exe,bat文件。三、实习过程1利用RPC实现远程计算服务。(1)使用IDL定义服务接口mathservice.idl,定义计算服务操作,方法如下:加:voidCal_Add([in]doublea,[in]doubleb,[out]double*result);减:voidCal_Sub([in]doublea,[in]doubleb,[out]double*result);乘:voidCal_Mul([in]doublea,[in]doubleb,[out]double*result);除:voidCal_Div([in]doublea,[in]doubleb,[out]double*result);(2)编写配置文件mathservice.acf,定义绑定句柄(3)编译mathservice.idl文件,产生文件mathservice.h,mathservice_s.c,mathservice_c.c(4)编写服务端程序,编译连接工程,生成mathservice.exe(5)编写客户端程序(6)测试:测试结果截图如下:加法运算:减法运算:乘法运算:除法运算:2RMI+JDBC远端数据库的访问(1)使用mysql-connector-java-5[1].0.8.zip驱动包,编写DBmanager类,访问mysql数据库,实现创建表,录入成绩,查询成绩等操作,主要代码如下://加载驱动,获取连接static{try{Class.forName(com.mysql.jdbc.Driver);cn=DriverManager.getConnection(url,username,password);}catch(Exceptione){e.printStackTrace();}}//创建表publicbooleancreateTable(){inti=0;try{ps=cn.prepareStatement(+createtablermitest(idintprimarykey,namevarchar(20)notnull););i=ps.executeUpdate();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}if(i!=0){returntrue;}else{returnfalse;}}//插入数据publicbooleaninsertDate(){intj=0;try{ps=cn.prepareStatement(insertintormitestvalues(100,'rmitest'));j+=ps.executeUpdate();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}if(j!=0)returntrue;elsereturnfalse;}//获取数据publicStringgetDate(){ResultSetrs=null;Stringresult=;try{ps=cn.prepareStatement(select*fromrmitest);rs=ps.executeQuery();while(rs.next()){result+=id=+rs.getObject(1).toString()+,name=+rs.getObject(2).toString()+\n;}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnresult;}}(2)定义服务接口DataService,。提供创建表,录入成绩,查询成绩等操作,方法如下:publicbooleancreateTable()throwsRemoteException;publicbooleaninsertDate()throwsRemoteException;publicStringgetDate()throwsRemoteException;(3)实现服务,对实现创建表,录入成绩,查询成绩等操作。实现过程中可直接使用DBmanager类,主要代码如下:publicclassDataServiceImplextendsUnicastRemoteObjectimplementsDataService{DBmanagerdBmanager;publicDataServiceImpl()throwsRemoteException{super();dBmanager=newDBmanager();}//调用DBmanager的方法创建表publicbooleancreateTable(){returndBmanager.createTable();}//调用DBmanager的插入数据publicbooleaninsertDate(){returndBmanager.insertDate();}//调用DBmanager的方法显示数据publicStringgetDate(){returndBmanager.getDate();}(4)编写部署类DeployServer,主要代码如下://创建远程对象DataServiceImplds=newDataServiceImpl();LocateRegistry.createRegistry(1117);//配置端口//远程对象绑定到服务Naming.rebind(//localhost:1117/ds,ds);System.out.println(RMI服务器正在运行。。。。。。);(5)使用DataService接口,实现客户端RmiJDBCClient类,主要代码如下:DataServiceds=(DataService)Naming.lookup(//localhost:1118/ds);System.out.println(获取远程数据库中数据如下:);ds.createTable();//调用远程创建表方法ds.insertDate();//调用远程插入数据方法System.out.println(ds.getDate());//调用远程显示数据方法(6)测试测试如下:1.运行服务器端:2.运行客户端四、实习总结本次实习的主要内容为通过RPC实现远程计算服务,通过RMI、JBDC实现远程访问数据库;通过老师的案例按照实习指导书完成了本次实习,对通过RPC、RMI实现远程访问有了进一步的理解,但对他们的底层具体实现还不是很理解。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功