国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java/CORBA

masturbator / 2854人閱讀

摘要:實(shí)現(xiàn)的功能有登錄注冊(cè)保存有一個(gè)成員變量所有的注冊(cè)用戶使用一個(gè)來管理,登錄注冊(cè)都是對(duì)的操作保存是將序列化到本地的文件,通過讀取文件來反序列化,實(shí)現(xiàn)數(shù)據(jù)的持久化實(shí)現(xiàn)的功能有添加查詢刪除清除保存。

本文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):公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)
Object Request Broker:對(duì)象請(qǐng)求代理

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

HelloCorba說明 1. 新建文件Hello.idl

內(nèi)容為:

module HelloApp
{
  interface Hello
  {
    string sayHello();
    oneway void shutdown();
  };
};
2. 輸入命令
idlj -fall Hello.idl

安裝了jdk就會(huì)有idlj,idlj跟javac是在同一個(gè)目錄的;
如果出現(xiàn)異常java.io.FileNotFoundException: hello.idl (No such file or directory),可嘗試命令 idlj -fall ./Hello
這樣我們得到一個(gè)文件夾,里面有6個(gè)文件,這6個(gè)文件是什么來的呢?我們先接著往下看

_HelloStub.java
Hello.java
HelloHelper.java
HelloHolder.java
HelloOperations.java
HelloPOA.java

HelloOperations.java里面才上我們真正需要的操作,我們需要實(shí)現(xiàn)的是抽象類HelloPOA,其實(shí)就是實(shí)現(xiàn)接口HelloOperations

3. HelloServer

代碼在這:
https://docs.oracle.com/javas...

4. HelloClient

代碼在這:
https://docs.oracle.com/javas...

5. 運(yùn)行

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

作者運(yùn)行環(huán)境為:macos:10.13.4 (17E199) JDK1.8 iterm2

1.啟動(dòng)orbd

orbd -ORBInitialPort 1050 -ORBInitialHost localhost&

(末尾的&是指以守護(hù)線程的方式啟動(dòng))

2.先開始server

java HelloServer -ORBInitialPort 1050 -ORBInitialHost localhost&

3.最后開啟client

java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost

4.結(jié)果

Hello world !!

ToDoListCorba 設(shè)計(jì)思路 寫兩個(gè)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);
        };   
};  

在上面兩個(gè)文件所在的目錄使用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

實(shí)現(xiàn)2個(gè)POA

所有的操作都源于service,server端暴露的也只有service的接口,其余的實(shí)現(xiàn)都是隱蔽的,所以,關(guān)鍵是實(shí)現(xiàn)好service。

CenterService實(shí)現(xiàn)的功能有:登錄、注冊(cè)、保存
有一個(gè)成員變量Map

所有的注冊(cè)用戶使用一個(gè)Map來管理,登錄注冊(cè)都是對(duì)Map的操作

保存是將Map序列化到本地的data/centerService文件,通過讀取data/centerService文件來反序列化Map,實(shí)現(xiàn)數(shù)據(jù)的持久化

UserService實(shí)現(xiàn)的功能有:添加、查詢、刪除、清除、保存。有一個(gè)成員變量List

CURD操作是針對(duì)List來展開的

保存是將List序列化到本地的data/userName文件,為每一個(gè)注冊(cè)的用戶都獨(dú)立保存List,通過讀取data/userName文件來反序列化List

server

ToDoListServer是本程序的server,作用有2個(gè):

第一個(gè)作用是提供CenterService,用于登錄注冊(cè)

第二個(gè)作用是為進(jìn)行登錄、注冊(cè)操作的用戶提供userService

client

ToDoListClient是是本程序的client,作用是獲取服務(wù)端的CenterService為用戶提供登錄、注冊(cè)功能,然后為注冊(cè)、登錄成功的用戶提供UserService功能

基本原理分析

基本思路跟RPC是一樣的,首先在服務(wù)端新建一個(gè)對(duì)象,注冊(cè)好了,然后再客戶端獲得這個(gè)對(duì)象的引用,當(dāng)調(diào)用這個(gè)引用的方法的時(shí)候,實(shí)際上會(huì)調(diào)用到客戶端的對(duì)象,然后再把結(jié)果返回給客戶端的對(duì)象引用。

ToDoListServer里面,通過COBRAcenterServiceImpl對(duì)象綁定到COBRA的根命名上下文(root naming context),它有個(gè)名字叫做NameService,然后我們給centerServiceImpl對(duì)象取個(gè)名字,就叫centerService,然后把CenterServiceImpl綁定到NameService下面。后面我們就可以通過centerService獲取到我們預(yù)先綁定的centerServiceImpl對(duì)象了。

具體實(shí)現(xiàn)方案看代碼ToDoListServer.init()ToDoListClient.init

演示流程

首先必須啟動(dòng)orbd,命令:orbd -ORBInitialPort 1050 -ORBInitialHost localhost&

啟動(dòng)ToDoListServer

啟動(dòng)ToDoListClient

注冊(cè)賬號(hào)hello3 ,密碼hello3

添加一些數(shù)據(jù),時(shí)間的輸入要求不含有中文

開始查詢,查詢根據(jù)開始時(shí)間和結(jié)束時(shí)間的范圍查詢

刪除看看

重啟client,server,再次登錄hello3賬號(hào)

源碼鏈接

java-corba

最后

感謝看到最后的你,喜歡文章就點(diǎn)個(gè)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/69332.html

相關(guān)文章

  • Java11的新特性

    摘要:從版本開始,不再單獨(dú)發(fā)布或者版本了,有需要的可以自己通過去定制官方解讀官方細(xì)項(xiàng)解讀穩(wěn)步推進(jìn)系列六的小試牛刀一文讀懂的為何如此高效棄用引擎 Java語言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性 序 本文主要講述一下Java11的新...

    April 評(píng)論0 收藏0
  • 如何在Java 9以上版本中解決找不到類JAXBException

    摘要:如何在中解決升級(jí)到新的你會(huì)突然發(fā)現(xiàn)原來可以運(yùn)行的項(xiàng)目突然不能啟動(dòng)了,報(bào)形如的類找不到的錯(cuò)。被認(rèn)為是,因此不再包含在中的默認(rèn)類路徑中。在中,它們完全從中刪除。幸運(yùn)的是,中提供的這些仍然在中,但它們默認(rèn)情況下不在類路徑上。 如何在Java 9中解決java.lang.NoClassDefFoundError:javax/xml/bind/JAXBException 升級(jí)到新的JDK 你會(huì)突...

    ckllj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<