詳解 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)用同時(shí)負(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端的代碼時(shí),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)文章
IntelliJ IDEA創(chuàng)建普通的Java 項(xiàng)目及創(chuàng)建 Java 文件并運(yùn)行的教程
這篇文章主要介紹了IntelliJ IDEA創(chuàng)建普通的Java 項(xiàng)目及創(chuàng)建 Java 文件并運(yùn)行的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
Java利用httpclient通過get、post方式調(diào)用https接口的方法
這篇文章主要介紹了Java利用httpclient通過get、post方式調(diào)用https接口的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
使用@Autowired 注入RedisTemplate報(bào)錯的問題及解決
這篇文章主要介紹了使用@Autowired 注入RedisTemplate報(bào)錯的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
使用Java橋接模式打破繼承束縛優(yōu)雅實(shí)現(xiàn)多維度變化
這篇文章主要為大家介紹了使用Java橋接模式打破繼承束縛,優(yōu)雅實(shí)現(xiàn)多維度變化,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
Java面試之動態(tài)規(guī)劃與組合數(shù)
這篇文章主要介紹了Java面試之動態(tài)規(guī)劃與組合數(shù)的相關(guān)知識,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
解決springboot報(bào)錯Failed?to?parse?multipart?servlet?request
在使用SpringBoot開發(fā)時(shí),通過Postman發(fā)送POST請求,可能會遇到因臨時(shí)目錄不存在而導(dǎo)致的MultipartException異常,這通常是因?yàn)镺S系統(tǒng)(如CentOS)定期刪除/tmp目錄下的臨時(shí)文件,解決方案包括重啟項(xiàng)目2024-10-10
java中double強(qiáng)制轉(zhuǎn)換int引發(fā)的OOM問題記錄
這篇文章主要介紹了java中double強(qiáng)制轉(zhuǎn)換int引發(fā)的OOM問題記錄,本文給大家分享問題排查過程,感興趣的朋友跟隨小編一起看看吧2024-10-10
Spring?IoC容器Bean作用域的singleton與prototype使用配置
這篇文章主要為大家介紹了Spring?IoC容器Bean作用域的singleton與prototype使用配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12

