国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

基于jCOM搭建Java-微軟信息橋梁

2019-11-18 11:55:46
字體:
供稿:網(wǎng)友

 一、jCOM簡介

   據(jù)Gartner的研究分析,在名列全球前1000名的企業(yè)中,大約90%都混合應(yīng)用了java和Windows技術(shù)。然而,Java技術(shù)和微軟技術(shù)分別提供了豐富但卻迥然不同的解決方案,或至少說這兩種方案之間的差異是巨大的。

   為了解決這一矛盾,Sun率先提出了JNI解決方案。JNI,即Java本機(jī)接口,是編寫Java本機(jī)方法和把Java虛擬機(jī)嵌入到本機(jī)應(yīng)用程序中的標(biāo)準(zhǔn)編程接口。Java本機(jī)接口的主要目的就是保證本機(jī)方法庫在不同平臺(tái)上的Java虛擬機(jī)中的二進(jìn)制兼容性。使用JNI編寫程序,就可以很方便地做到程序的跨平臺(tái)可移植。盡管如此,Sun提供的JNI解決方案只是底層的API包裝,在實(shí)際開發(fā)中用到大量Java/COM互操作時(shí),直接從JNI級(jí)進(jìn)行開發(fā)顯然效率并不高。

   為此,大大小小的公司甚至個(gè)人都試圖提供全部或局部的Java/COM互操作解決方案。例如,WebLogic提供的jCOM技術(shù),bridge2java(IBM提供的基于Java本機(jī)接口和COM技術(shù),答應(yīng)把ActiveX對(duì)象輕易地集成到Java環(huán)境中),jacoZoom(是一個(gè)java類庫—它答應(yīng)你在java程序中使用ActiveX控件和ActiveX服務(wù)器,基于Java本機(jī)接口和COM技術(shù),答應(yīng)使用于Windows平臺(tái)上的任何java環(huán)境中),J-Integra for COM(http://j-integra.intrinsyc.com/),還有一個(gè)小型的JCom橋接庫(http://sourceforge.net/PRojects/jcom/,它也支持從Java中調(diào)用COM對(duì)象,例如Excel工作簿,VB的COM對(duì)象等)。其中,WebLogic提供的jCOM技術(shù)為微軟的COM對(duì)象和Java對(duì)象提供一個(gè)穩(wěn)定、無縫的機(jī)制,讓這兩種對(duì)象可以協(xié)同工作。

   jCOM,即Java/COM橋,它是一種用軟件實(shí)現(xiàn)的橋接機(jī)制,可以幫助Java應(yīng)用程序快速訪問微軟的COM/DCOM組件。而且,微軟的COM應(yīng)用程序也可以通過這個(gè)機(jī)制訪問基于Java的對(duì)象。jCOM不僅具有實(shí)現(xiàn)相對(duì)簡單的特點(diǎn),而且其最吸人的部分在于它的透明性。對(duì)Java程序員來說,COM對(duì)象看起來與其他Java對(duì)象沒有什么不同。而對(duì)COM開發(fā)人員來說,遠(yuǎn)程Java對(duì)象看起來就象是本機(jī)COM組件。在這些對(duì)象中可以找到j(luò)COM運(yùn)行時(shí)刻引擎進(jìn)行動(dòng)態(tài)類型映射,因此從表面上屏蔽了數(shù)據(jù)類型間的差異。遠(yuǎn)程對(duì)象的數(shù)據(jù)類型被動(dòng)態(tài)地轉(zhuǎn)換成調(diào)用程序所使用的基元類型。對(duì)Java開發(fā)人員來說,COM數(shù)據(jù)類型表現(xiàn)得就象Java基元類型;而對(duì)COM開發(fā)人員來說,Java數(shù)據(jù)類型看起來就象是COM數(shù)據(jù)類型。

本文將重點(diǎn)討論BEA的Java/COM解決方案。

二、jCOM工作原理

   jCOM聲稱以雙向方式工作,實(shí)際只是答應(yīng)在Java和COM組件之間,在任意一個(gè)方向上通信—Java對(duì)象可以調(diào)用COM組件,COM組件又可以調(diào)用Java對(duì)象。當(dāng)然,在這兩種不同的分布式組件框架之間,有著兩種截然不同的底層體系結(jié)構(gòu)負(fù)責(zé)線路級(jí)通信。在運(yùn)行時(shí),jCOM內(nèi)部設(shè)置了一個(gè)雙協(xié)議棧環(huán)境,實(shí)現(xiàn)對(duì)底層兩個(gè)彼此獨(dú)立的基礎(chǔ)結(jié)構(gòu)的支持(參考圖1)。對(duì)于COM組件,有一個(gè)在DCE遠(yuǎn)程過程調(diào)用之上的COM/DCOM實(shí)現(xiàn)。對(duì)于Java對(duì)象,有一個(gè)在Java遠(yuǎn)程方法IIOP(Internet Inter-ORB)之上的遠(yuǎn)程方法調(diào)用(RMI)實(shí)現(xiàn)。調(diào)用要通過這些協(xié)議棧,并通過內(nèi)部的協(xié)議轉(zhuǎn)換進(jìn)行處理,內(nèi)部的協(xié)議轉(zhuǎn)換能夠有效地屏蔽掉低一級(jí)的協(xié)議。對(duì)于EJB來說,來自COM客戶的調(diào)用看起來就似乎是來自Java客戶的調(diào)用。對(duì)于COM組件來說,來自Java客戶的調(diào)用看起來就好象是來自一個(gè)普通的COM客戶。

   jCOM提供了能夠自動(dòng)生成更高級(jí)別COM/DCOM代理以及RMI存根的工具。客戶程序用COM/DCOM代理以及RMI存根在這兩個(gè)不同的基礎(chǔ)結(jié)構(gòu)間封裝并傳送調(diào)用。jCOM可以設(shè)置成本機(jī)模式,這樣就可以利用本機(jī)操作系統(tǒng)的動(dòng)態(tài)鏈接庫,從而減輕DCOM的網(wǎng)絡(luò)負(fù)荷,并極大地提高系統(tǒng)性能。

下面看一下Java對(duì)象如何調(diào)用COM對(duì)象:

import com.jCOMSample.account.*;

clsaccount account=new clsaccount();

double accountbalance=getaccountbalance("Xiao Wang");

    圖1演示了當(dāng)Java對(duì)象訪問COM組件的時(shí)候事件產(chǎn)生的標(biāo)準(zhǔn)流程。首先,jCOM為要訪問的COM組件生成—個(gè)代理對(duì)象,Java對(duì)象開始調(diào)用這個(gè)代理對(duì)象。然后,代理對(duì)象與jCOM運(yùn)行時(shí)引擎通信,jCOM運(yùn)行時(shí)引擎又把代理對(duì)象的消息封裝成遠(yuǎn)程過程調(diào)用的COM/DCOM形式,通過TCP/ip發(fā)送到Windows環(huán)境里的COM組件。在最低的一層上,jCOM使用服務(wù)器上的標(biāo)準(zhǔn)Java網(wǎng)絡(luò)類進(jìn)行調(diào)用。

基于jCOM搭建Java-微軟信息橋梁

點(diǎn)擊查看大圖


圖1.jCOM運(yùn)行時(shí)刻環(huán)境 點(diǎn)擊看原圖



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桃园县| 庆城县| 莆田市| 内黄县| 建水县| 桦川县| 墨玉县| 梓潼县| 巨鹿县| 广饶县| 保亭| 逊克县| 垦利县| 荆门市| 普宁市| 乌鲁木齐市| 壤塘县| 马公市| 滦平县| 罗山县| 黄骅市| 耒阳市| 通化县| 屏东县| 汉川市| 龙里县| 明光市| 华池县| 张家口市| 苍南县| 香河县| 巴林左旗| 正阳县| 彰化县| 天水市| 汶川县| 渑池县| 嘉善县| 遵义市| 灯塔市| 金塔县|