久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

搭建Equinox OSGi核心環(huán)境

 luyucs 2009-11-11

    在上文中講到,,Equinox包括核心框架,標(biāo)準(zhǔn)服務(wù)實(shí)現(xiàn),,面向J2EE的應(yīng)用,,新的部署更新框架及一些其他的研究方向。本文主要針對Equinox實(shí)現(xiàn)的OSGi核心框架及Equinox OSGi運(yùn)行環(huán)境的搭建過程進(jìn)行詳細(xì)講述,。

    用戶在閱讀下文時,,應(yīng)具有基本的Java編程及打包的概念并對OSGi標(biāo)準(zhǔn)的構(gòu)成有一定的了解,理解OSGi框架及Bundle的概念,。

2,、OSGi核心框架

 

    從OSGi核心框架示意圖可以看到,OSGi核心框架主要包括模塊層,,生命周期層,,服務(wù)層及安全層組成。完整的OSGi核心框架實(shí)現(xiàn),,還包括包管理服務(wù)(Package Admin),、啟動層次服務(wù)(Start Level)、條件許可管理(Conditional Permission Admin)、權(quán)限管理(Permission Admin)及URL處理服務(wù)(URL Handlers)等框架服務(wù),。

    關(guān)于OSGi核心框架的詳細(xì)介紹請參考OSGi標(biāo)準(zhǔn)規(guī)范,。

3、Equinox的OSGi Framework實(shí)現(xiàn)

    Equinox的OSGi框架實(shí)現(xiàn)包含在org.eclipse.osgi插件項(xiàng)目中,。在發(fā)布的Eclipse環(huán)境中,,用戶可以在Eclipse安裝目錄下的plugins目錄中找到該插件。該插件一般以 "org.eclipse.osgi_<版本號>.jar"的JAR文件形式打包,。由于是從Eclipse3.0以前版本遷移到OSGi核心的緣故,,目前的Equinox OSGi 實(shí)現(xiàn)中包含的代碼非常繁雜。

    在org.eclipse.osgi項(xiàng)目源代碼中用戶可以看到除了OSGi接口及框架實(shí)現(xiàn)外,,還包括adaptor接口及默認(rèn)的adaptor (defaultAdaptor),,eclipse adaptor(eclipseAdaptor)實(shí)現(xiàn),控制臺實(shí)現(xiàn)(console),,附加服務(wù)擴(kuò)展(supplement),,Bundle組件解析 (resolver)和Bundle JAR文件校驗(yàn)等功能。

    在實(shí)際使用中,,用戶使用該Jar文件即可將OSGi框架運(yùn)行起來(參考下文OSGi運(yùn)行環(huán)境的搭建),。作為一個產(chǎn)品級的應(yīng)用,往往存在很多系統(tǒng)級的參數(shù)可供用戶進(jìn)行配置以調(diào)整系統(tǒng)的運(yùn)行行為而滿足不同環(huán)境的要求,。同樣,,Equinox運(yùn)行環(huán)境也提供了大量的運(yùn)行參數(shù)以供用戶選擇配置。配置Equinox運(yùn)行環(huán)境參數(shù)的方式主要有兩種,,一種是使用JVM環(huán)境變量,;另一種方式是使用Equinox的配置文件(config.ini)。

    用戶在獲取到org.eclipse.osgi_<版本號>.jar文件后,,可以嘗試以命令行的方式啟動該Jar文件,。該Jar文件的入庫主類是:org.eclipse.core.runtime.adaptor.EclipseStarter。

                                        java -jar org.eclipse.osgi_3.3.1.R33x_v20070828.jar

    用戶會發(fā)現(xiàn)該程序執(zhí)行后立即退出,,控制臺上沒有任何輸出,。這是因?yàn)椴淮嬖趽碛锌沙掷m(xù)運(yùn)行的代碼功能,框架啟動后即退出主線程,。下文中,,我們會給出OSGi運(yùn)行環(huán)境搭建的詳細(xì)過程。

4,、搭建Equinox OSGi運(yùn)行環(huán)境

4.1 原始的OSGi環(huán)境

    從Eclipse官方網(wǎng)站下載Equinox OSGi框架,。將其下載到c:\equinox目錄中。本文中使用的Equinox版本為3.3.1,。直接從命令行運(yùn)行該jar文件時程序執(zhí)行后會立即退出,,為了更好的了解Equinox OSGi框架的特點(diǎn),,我們在運(yùn)行時添加JVM參數(shù)"osgi.console"。如下圖所示:

    執(zhí)行"java -Dosgi.console -jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar" 后,,系統(tǒng)給出"osgi>"命令輸入提示,。輸入"ss"命令后回車,用戶可以看到上圖所示"Framework is launched."的信息,。同時,,下方顯式了系統(tǒng)啟動的Bundle列表,id列為該Bundle在OSGi運(yùn)行環(huán)境中的唯一運(yùn)行標(biāo)識,,State列為該Bundle當(dāng)前的狀態(tài),,Bundle列顯示了該Bundle組件的SymbolicName。

    此時,,OSGi框架已經(jīng)處于運(yùn)行狀態(tài),。

    Equinox OSGi Console提供了很多命令用于與OSGi框架交互,用戶可以輸入任何非OSGi Console的內(nèi)部命令字符,,控制太將顯示Equinox Console提供的所有命令,。如下下圖所示:

    執(zhí)行"services"命令,用戶可以看到當(dāng)前OSGi框架中發(fā)布的所有的服務(wù)信息,。

4.2 以運(yùn)行參數(shù)方式向OSGi環(huán)境中部署B(yǎng)undle

下載Equinox SDK,,將plugins目錄下的org.eclipse.osgi.services_3.1.200.v20070605.jar文件拷貝到C:\equinox目錄下。修改命令行運(yùn)行參數(shù)如下:

            java -Dosgi.console -Dosgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar -jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar

執(zhí)行該命令,,系統(tǒng)運(yùn)行結(jié)果如下圖所示:

    從運(yùn)行結(jié)果可以看出,,JVM參數(shù)"-Dosgi.bundles= org.eclipse.osgi.services_3.1.200.v20070605.jar"將 org.eclipse.osgi.services組件部署到了OSGi運(yùn)行環(huán)境中。此時,,該組件的狀態(tài)為"RESOLVED",,即該組件被框架解析但沒有啟動。如果用戶希望組件在加載的同時啟動該組件,,可以修改上述參數(shù)為:

                               -Dosgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar@2:start,。

"@2"指明該組件的啟動級別,":"后的"start"標(biāo)明該組件在加載后啟動,。按修改后的參數(shù)重新執(zhí)行命令輸出結(jié)果如下圖所示:

    從上圖可以看出,部署的org.eclipse.osgi.services組件在加載后被OSGi框架啟動,,其狀態(tài)顯示為"ACTIVE",。

4.3以配置文件方式向OSGi環(huán)境中部署B(yǎng)undle

    從上述部署B(yǎng)undle的方式看出,當(dāng)部署多個Bundle時,,使用JVM參數(shù)配置方式是不可取的,。Equinox OSGi支持從配置文件中讀取加載的Bundle,下面我們演示如何使用配置文件部署多個Bundle,。

    將Equinox SDK中plugins目錄下的org.eclipse.osgi.util_3.1.200.v20070605.jar文件拷貝到C:\equinox目錄下,。

    Equinox OSGi提供了環(huán)境變量"osgi.configuration.area",,該變量指明了配置文件config.ini的存儲路徑。下面我們在C:\equinox目錄下添加config.ini文件,,并在該文件中添加如下內(nèi)容:

       osgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar@2:start, org.eclipse.osgi.util_3.1.200.v20070605.jar

    修改OSGi框架啟動命令行為:

 

java -Dosgi.console -Dosgi.configuration.area=. -jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar

 

執(zhí)行上述命令后的輸出結(jié)果如下圖所示:

5,、使用Eclipse Launcher啟動Equinox OSGi

    熟悉Eclipse IDE環(huán)境的用戶會注意到3.2版本(包括3.2)以前Eclipse安裝目錄下存在eclipse.exe和startup.jar兩個文件,用于啟動 Eclipse運(yùn)行環(huán)境,。從3.3版本開始,,Equinox將startup.jar拆分為兩個不同的Bundle(Fragment)放置在了 plugins目錄下。用戶可以從Equinox站點(diǎn)下載Launcher,。下載后的3.3.1發(fā)布版本的Launcher包括下面兩個組件:

 

org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar

 

org.eclipse.equinox.launcher.win32.win32.x86_1.0.1.R33x_v20070828   [目錄]

 

    在進(jìn)行下述操作之前,,我們需要調(diào)整C:\equinox的目錄結(jié)構(gòu),在該目錄下添加"configuration"和"plugins"兩個目錄,,將所有的Bundle組件(包括目錄)轉(zhuǎn)移到plugins目錄下,;將config.ini文件轉(zhuǎn)移到configuration目錄下,將Launcher包中的"eclipse.exe"文件拷貝到C:\equinox目錄下,。此時的目錄結(jié)構(gòu)如下圖所示:

plugins目錄下的內(nèi)容如下圖所示:

修改命令行OSGi框架啟動命令為:

 

                                      eclipse.exe -console -noexit

 

執(zhí)行該命令后,,在彈出的控制臺中輸入"ss"命令,輸出結(jié)果如下:

5.1使用eclipse.ini文件

    除了從命令行傳入eclipse.exe使用的運(yùn)行參數(shù)外,,用戶也可以配置與eclipse.exe的文件同名的ini文件存放eclipse.exe運(yùn)行所需要的參數(shù),。用戶應(yīng)將該ini文件放置在eclipse.exe所在的文件目錄下。

我們在C:\equinox目錄下添加eclipse.ini文件,,在該文件中添加如下內(nèi)容:

 

-console

-noexit

 

    直接點(diǎn)擊eclipse.exe程序圖標(biāo)啟動Equinox OSGi運(yùn)行環(huán)境,。程序運(yùn)行結(jié)果如下圖所示:

    至此,Equinox OSGi完整的運(yùn)行環(huán)境已經(jīng)搭建完成,。如果用戶希望將新的Bundle發(fā)布到該環(huán)境中,,只需要修改configuration目錄下config.ini文件,將新的bundle添加到osgi.bundles參數(shù)下,。

6,、常見問題

    用戶在上述操作步驟中,會發(fā)現(xiàn)在configuration目錄下生成一些錯誤日志文件,,如果用戶發(fā)現(xiàn)日志中出現(xiàn)以下內(nèi)容:

java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).

at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:72)

at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)

at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)

at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)

at org.eclipse.equinox.launcher.Main.run(Main.java:1173)

用戶可以在config.ini文件中添加如下配置:

 

eclipse.ignoreApp=true

 

7,、小結(jié)

    在上文中,我們詳細(xì)介紹了Equinox OSGi環(huán)境組成及其搭建過程,。在下一篇文檔中,,我們會對Equinox OSGi的運(yùn)行參數(shù)做詳細(xì)的介紹,同時提供一種方式使得OSGi框架能夠自動發(fā)現(xiàn)部署的OSGi bundle而不用頻繁修改配置文件,。


正在加載中...

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多