詳解 Corba開發(fā)之Java實(shí)現(xiàn)Service與Client
CORBA(Common Object Request Broker Architecture,公共對象請求代理體系結(jié)構(gòu))是由OMG組織制訂的一種標(biāo)準(zhǔn)的面向?qū)ο髴?yīng)用程 序體系規(guī)范?;蛘哒f CORBA體系結(jié)構(gòu)是OMG為解決分布式處理環(huán)境(DCE)中,硬件和軟件系統(tǒng)的互連而提出的一種解決方案。
OMG:Object Management Group,對象管理組織。是一個國際化的、開放成員的、非盈利性的計(jì)算機(jī)行業(yè)標(biāo)準(zhǔn)協(xié)會,該協(xié)會成立于1989年,其職責(zé)是為應(yīng)用開發(fā)提供一個公共框架,制訂工業(yè)指南和對象管理規(guī)范,加快對象技術(shù)的發(fā)展。。任何組織都可以加入OMG并且參與標(biāo)準(zhǔn)制定過程。OMG制定了統(tǒng)一建模語言UnifiedModeling Language?(UML?),模型驅(qū)動架構(gòu)ModelDriven Architecture? (MDA?)等建模標(biāo)準(zhǔn)。使強(qiáng)大的視覺設(shè)計(jì),執(zhí)行和維護(hù)軟件等工序成為可能。并且,OMG還制定了廣為人知的中間件標(biāo)準(zhǔn)CommonObject Request Broker Architecture (CORBA?)。
通用對象代理體系結(jié)構(gòu)CORBA(Common Object Request BrokerArchitecture)是OMG所定義的用來實(shí)現(xiàn)現(xiàn)今大量硬件、軟件之間互操作的解決方案,CORBA也是邁向面向?qū)ο髽?biāo)準(zhǔn)化和互操作的重要一步。
簡單地說,CORBA允許應(yīng)用之間相互通信,而不管它們存在于哪里以及是誰設(shè)計(jì)的,即跨平臺、跨語言。CORBA1.1于1991年由OMG發(fā)布,其中定義了接口定義語言(IDL)以及在對象請求代理(ORB)中實(shí)現(xiàn)客戶對象與服務(wù)器對象之間交互的應(yīng)用編程接口(API)。CORBA2.0于1994年發(fā)布,規(guī)定了各個供應(yīng)商之間的ORB的通信規(guī)則。
CORBA標(biāo)準(zhǔn)主要分為三個部分:接口定義語言(IDL)、對象請求代理(ORB)以及ORB之間的互操作協(xié)議IIOP。
IDL是CORBA定義的語言,CORBA還定義了IDL到各種語言的映射,標(biāo)準(zhǔn)映射的有Ada、C、C++、Smalltalk、Java、以及Python。有了這些映射,就可以將IDL翻譯成各種語言,從而實(shí)現(xiàn)了跨語言。IDL語言是一種接口定義語言。IDL語言不同于所有已有的程序設(shè)計(jì)語言,它是一種描述性語言,也就是說,用它描述得到的接口是不能直接被編譯執(zhí)行。OMG IDL語言采用ISOLatin-1(8859.1)字符集。該字符集可以分為字母、數(shù)字、圖形符號、空格符、和格式符號。其中字母包括英文26個字母的大小寫,數(shù)字包括10個阿拉伯?dāng)?shù)字0到9。
ORB是CORBA的核心,是對象之間建立Client/Server關(guān)系的中間件。使用ORB,客戶可以透明地調(diào)用一個服務(wù)對象上的方法,這個服務(wù)對象可以在本地,也可以在通過網(wǎng)絡(luò)連接的其他機(jī)器上。ORB截獲這一調(diào)用同時負(fù)責(zé)查找實(shí)現(xiàn)服務(wù)的對象并向其傳遞參數(shù)、調(diào)用方法返回最終結(jié)果??蛻舨⒉恢婪?wù)對象位于什么地方,它的編程語言和操作系統(tǒng)是什么,也不知道不屬于對象接口的其他系統(tǒng)部分。這樣,ORB在異構(gòu)分布環(huán)境下為不同機(jī)器上的應(yīng)用提供了互操作性,并無縫地集成了多種對象系統(tǒng)。
在client端去調(diào)用server端的代碼時,ORB對于client端是不可見的,client感覺好像調(diào)用了自己對象的方法一樣,但是網(wǎng)絡(luò)傳輸?shù)倪^程都被封裝在了ORB中。
2 idl文件創(chuàng)建
在開發(fā)之前需要按照上一章中配置好Eclipse插件開發(fā)環(huán)境,
1、 客戶端開發(fā)idl文件,idl文件由服務(wù)端接口提供,或者自定義創(chuàng)建,如下圖:
modulehelloapp { interfaceHello { string sayHello(); oneway void shutdown(); }; };
2. 選擇IDL文件,右鍵ORBMenu--->Compile,就自動生成相應(yīng)的操作文件
自動生成需要的操作文件一共7個;
3 服務(wù)端開發(fā)
1. src上右鍵New--->Other--->CORBAWizard--->Server--->Active object map--->Next如下圖:
2. 在彈出的對話框里IDL filename欄選擇/{projectName}/src/{IDLname}.idl
Interface欄選擇IDL文件里定義的接口名
Package欄里填寫包名
Server classname欄里填寫服務(wù)端類名
--->Next 在彈出的對話框,選中Createserver class:項(xiàng)
3. 為生成的服務(wù)端類添加未實(shí)現(xiàn)的方法,并填寫方法體
至此服務(wù)端配置完成,Server_AOM class為服務(wù)端啟動入口。
4 客戶端開發(fā)
1、新建java project;
2. src上右鍵New--->Other--->CORBA Wizard--->IDL files--->Simple IDL,如下圖:
3.選擇之前的idl文件,
完成后自動生成客戶端文件操作,如下圖:
4. 在客戶端類的main方法里,取消注釋test.getORBInterface().operation1("Amessage in the bottle..."); 并調(diào)用之前自定義的方法,修改傳遞的String內(nèi)容。即可完成客戶端調(diào)用。
備注: 運(yùn)行服務(wù)端程序Server_AOM.java,然后運(yùn)行客戶端程序MyServiceClientImpl.java
至此簡單的Service and client開發(fā)完成!
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Java客戶端調(diào)用.NET的WebService實(shí)例
- java 中Executor, ExecutorService 和 Executors 間的不同
- java WSDL接口webService實(shí)現(xiàn)方式
- 詳解Java利用ExecutorService實(shí)現(xiàn)同步執(zhí)行大量線程
- java使用WatchService監(jiān)控文件夾示例
- Java WebService 簡單實(shí)例(附實(shí)例代碼)
- Java 線程池ExecutorService詳解及實(shí)例代碼
- 詳解java開發(fā)webservice的幾種方式
- C# 調(diào)用 JavaWebservice服務(wù)遇到的問題匯總
相關(guān)文章
利用Java實(shí)體bean對象批量數(shù)據(jù)傳輸處理方案小結(jié)
javabean是對面向?qū)ο笏枷氲囊环N具體實(shí)施的表現(xiàn),本文重點(diǎn)給大家介紹利用Java實(shí)體bean對象批量數(shù)據(jù)傳輸處理方案小結(jié),本文通過兩種方案給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2021-05-05java實(shí)現(xiàn)基于SMTP發(fā)送郵件的方法
這篇文章主要介紹了java實(shí)現(xiàn)基于SMTP發(fā)送郵件的方法,實(shí)例分析了java基于SMTP服務(wù)發(fā)送郵件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07SpringBoot中集成串口通信的項(xiàng)目實(shí)踐
本文主要介紹了SpringBoot中集成串口通信,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08SpringBoot從yml配置文件中讀常用參數(shù)值實(shí)例方法
在本篇文章里小編給大家整理了關(guān)于SpringBoot從yml配置文件中讀常用參數(shù)值實(shí)例方法,有需要的朋友們學(xué)習(xí)下。2019-12-12