题目一.Java版CORBA程序1——HelloWorld 1 编写IDL接口HelloWorld.idl(用记事本,处理字符串用wstring) 2编译IDL接口:C:\Test>idlj –fall HelloWorld.idl(DOS命令) 3 编写并编译服务端程序:HelloWorldServer.java(编译之前要转class文件) 4 编写并编译客户端程序: HelloWorldClient.java(同理) 5 运行(每个服务器分别启动一个DOS命令提示符界面) (1)启动名字服务器:C:\Test>tnameserv -ORBInitialPort 1050 (2)启动服务端程序:C:\Test>java HelloWorldServer -ORBInitialPort 1050 (3)启动客户端程序:C:\Test >java HelloWorldClient -ORBInitialPort 1050 输出:Hello World! 软工1702,马付兰
题目二.JAVA版CORBA程序2——Counter 1 编写IDL接口counter.idl(用记事本) 2编译IDL接口:C:\Test2>idlj –fall counter.idl(DOS命令) 3 编写并编译对象实现代码:CounterImpl.java(编译之前要转到class文件) 4 编写并编译服务端程序: Server.java(同理) 5 编写并编译客户端程序: Client.java(同理) 6运行(每个服务器分别启动一个DOS命令提示符界面) 启动名字服务器:C:\Test2>tnameserv -ORBInitialPort 1050 启动服务端程序:C:\Test2 >java Server -ORBInitialPort 1050 启动客户端程序:C:\Test2 >java Client -ORBInitialPort 1050
两个题目原理及操作基本一致。拿题目一详细分析: 1.因为要用记事本编写此次程序,首先要配置JDK环境变量(具体操作不再赘述); 2.在C盘新建Test文件夹,在该文件夹里新建记事本编写IDL接口HelloWorld.idl(因为有中文,所以程序中的string换成wstring); 3.在DOS命令提示符界面输入C:\Test>idlj –fall HelloWorld.idl来编译IDL接口; 4.新建一个名为HelloWorldServer.java的记事本编写服务端程序, 在程序的sayHello()中返回Hello World!软工1702,马付兰。同理编写客户端程序; 5.在DOS命令提示符界面输入javac HelloServer.java将其转到class文件,同理转客户端程序; 6.启动一个DOS命令提示符界面,输入C:\Test>tnameserv -ORBInitialPort 1050启动名字服务器,重新启动一个DOS命令提示符界面,输入C:\Test>java HelloWorldServer -ORBInitialPort 1050启动服务器端程序,再启动一个DOS命令提示符界面,输入C:\Test >java HelloWorldClient -ORBInitialPort 1050启动客户端程序。
COBAR服务器要有一个ORB对象,并向其注册服务对象,当ORB接收到请求时可以寻找到服务器。当发出一个调用时,ORB会截取这个调用,ORB还要负责将调用的名字、参数等编码成标准的方式通过网络传输到服务器端,并通过将参数Unmarshaling的过程,传到正确的对象上,服务器对象完成处理后,ORB通过同样的方式 将结果返回给客户。服务对象的管理:服务器是一个进程,实例化了一个或多个服务对象,服务对象具体实现接口中的操作。
题目一 1.转class文件 2.启动名字服务器 3.启动服务器端程序 4.启动客户端程序 题目二 1.转class文件 2启动名字服务器程序 3.启动服务器程序 4.启动客户端程序
这次程序基本上都是按照老师提供的代码和步骤敲,因为第一次用记事本写程序,感觉比较麻烦,稍微有一点细节不注意,很有可能导致整个程序出错。 程序出错 1.题目一在启动客户端程序时出错。 出错原因: 字符串太长发生溢出。 解决方法: 在编写IDL接口HelloWorld.idl时将string换成wstring。 体会 通过此次实验对COBAR模型有了一定的认识,虽说对很多程序细节没有很熟悉,但对整体思路还是有所掌握。这次实验在很多小细节处自己确实不够仔细,比如忘了将.Java文件编译为.class文件;名字服务器、服务端程序、客户端程序要分别启动一个DOS命令提示符界面。