Java/CORBA

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java/CORBA脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文HelloCorba参考 Getting Started with JavaTM IDL

说在前面

Java TM IDL is a technoLOGy for distributed objects--that is, objects interacting on different platforms across a network. Java IDL enables objects to interact regardless of whether they're wrITten in the Java PRogramming language or another language such as C, C++, COBOL, or others.

Common Object Request brokerage Architecture (CORBA):公共对象请求代理体系结构
Object Request Broker:对象请求代理

This figure shows how a one-method distributed object is shared between a CORBA client and server to implement the classic "Hello World" application.

Java/CORBA

HelloCorba说明

1. 新建文件Hello.idl

内容为:

 module HelloApp {   interface Hello   {     string sayHello();     oneway void shutdown();   }; }; 

2. 输入命令

idlj -fall Hello.idl 

安装了jdk就会有idlj,idlj跟javac是在同一个目录的;
如果出现异常java.io.FileNotFoundException: hello.idl (No such file or directory),可尝试命令 idlj -fall ./Hello
这样我们得到一个文件夹,里面有6个文件,这6个文件是什么来的呢?我们先接着往下看

_HelloStub.java Hello.java HelloHelPEr.java HelloHolder.java Hellooperations.java HelloPOA.java 

HelloOperations.java里面才上我们真正需要的操作,我们需要实现的是抽象类HelloPOA,其实就是实现接口HelloOperations

3. HelloServer

代码在这:
https://docs.oracle.com/javas...

4. HelloClient

代码在这:
https://docs.oracle.com/javas...

5. 运行

参照:https://docs.oracle.com/javas...

作者运行环境为:macos:10.13.4 (17E199) JDK1.8 iterm2

1.启动orbd

orbd -ORBInitialPort 1050 -ORBInitialHost localhost& 

(末尾的&是指以守护线程的方式启动)

2.先开始server

java HelloServer -ORBInitialPort 1050 -ORBInitialHost localhost& 

3.最后开启client

java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost 

4.结果

Hello world !!

ToDoListCorba 设计思路

写两个module

定义操作

module centerModule{   interface CenterService{       boolean login( in string name, in string password);       boolean register(in string name,in  string password);       boolean save();   };

};

定义用户操作

   module userModule{            interface UserService{                boolean add(in string startTime,in string endTime,in string item);             string query(in string startTime,in string endTime);             boolean delete(in string item);             boolean clear();             string show();             boolean save(in string name);             void init(in string name);         };    };    

在上面两个文件所在的目录使用idlj命令编译,输入命令idlj -fall yourname.idl
ok,成功得到下面文件

_OperationServiceStub.java OperationService.java OperationServiceHelper.java OperationServiceHolder.java OperationServiceOperations.java OperationServicePOA.java 

同理,我们可以得到

_UserServiceStub.java UserService.java UserServiceHelper.java UserServiceHolder.java UserServiceOperations.java UserServicePOA.java  

实现2个POA

所有的操作都于service,server端暴露的也只有service的接口,其余的实现都是隐蔽的,所以,关键是实现好service。

CenterService实现的功能有:登录、注册、保存
有一个成员变量Map<String,User>

  1. 所有的注册用户使用一个Map<String,User>来管理,登录注册都是对Map<String,User>的操作
  2. 保存是将Map<String,User>序列化到本地的data/centerService文件,通过读取data/centerService文件来反序列化Map<String,User>,实现数据的持久化
  3. @H_120_406@

    UserService实现的功能有:添加、查询、删除、清除、保存。有一个成员变量List<Item>

    1. CURD操作是针对List<Item>来展开的
    2. 保存是将List<Item>序列化到本地的data/userName文件,为每一个注册的用户都独立保存List<Item>,通过读取data/userName文件来反序列化List<Item>

    server

    ToDoListServer是本程序的server,作用有2个:

    1. 第一个作用是提供CenterService,用于登录注册
    2. 第二个作用是为进行登录、注册操作的用户提供userService

    client

    ToDoListClient是是本程序的client,作用是获取服务端的CenterService为用户提供登录、注册功能,然后为注册、登录成功的用户提供UserService功能

    基本原理分析

    基本思路跟RPC是一样的,首先在服务端新建一个对象,注册好了,然后再客户端获得这个对象的引用,当调用这个引用的方法的时候,实际上会调用到客户端的对象,然后再把结果返回给客户端的对象引用。

    ToDoListServer里面,通过COBRAcenterServiceimpl对象绑定到COBRA的根命名上下文(root naming context),它有个名字叫做nameservice,然后我们给centerServiceImpl对象取个名字,就叫centerService,然后把CenterServiceImpl绑定到NameService下面。后面我们就可以通过centerService获取到我们预先绑定的centerServiceImpl对象了。

    具体实现方案看代码ToDoListServer.init()ToDoListClient.init

    演示流程

    1. 首先必须启动orbd,命令:orbd -ORBInitialPort 1050 -ORBInitialHost localhost&
    2. 启动ToDoListServer

    Java/CORBA

    1. 启动ToDoListClient

    Java/CORBA

    1. 注册账号hello3 ,密码hello3

    Java/CORBA

    1. 添加一些数据,时间的输入要求不含有中文

      Java/CORBA

    2. 开始查询,查询根据开始时间和结束时间的范围查询

    Java/CORBA

    1. 删除看看

    Java/CORBA

    1. 重启client,server,再次登录hello3账号

    Java/CORBA

    源码链接

    java-corba

    最后

    感谢看到最后的你,喜欢文章就点个 再走啦 ^-^

    脚本宝典总结

    以上是脚本宝典为你收集整理的Java/CORBA全部内容,希望文章能够帮你解决Java/CORBA所遇到的问题。

    如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。