目前分類:OSGi (13)

瀏覽方式: 標題列表 簡短摘要

  雖說是下篇,說是上篇也行。對像艾力克林這樣的角色來說,本來要教他東西,他就說你做個Sample最快,變成在幫他做他本來該做的事,而且還符合艾力克林的另一個要求,若沒法子幫他在Eclipse建置好環境,就不會開發,不會自己去找怎麼在Eclipse上work的方式或是在沒有Eclipse輔助下的work。廢話完畢,在Eclipse上Run Equinox的問題其實還不少,首先是設定OSGi Framework的執行環境,Eclipse預設是用Equinox,而Eclipse本身的運作就是Equinox為平台。

  在安裝新的Eclipse 3.5 SR1版後,最好一開始就設好Menu上的Run/[Run Configuration]的OSGi Framework選項。而我遇到的反模式是,import Equinox官方網站的QuickStart兩個飯粒後,對其中一個專案按右鍵選Run/OSGi Framework,如此一來Eclipse會先預先幫設好一個OSGi Framework,名為New_Configuration,而且是什麼Jar檔都匯入。

Jemmy 發表在 痞客邦 留言(0) 人氣()

  連兩天打麻將,晚上就研究Equinox在Eclipse的官網上的QuickStart兩個Sample飯粒。昨天小輸,研究也遇瓶頸,今天小贏,終於也了解這兩個Sample在搞什麼把戲。

  在http://www.eclipse.org/equinox/server/http_in_container.php,可以下載sample.http和sample.http.registry兩顆飯粒。這兩個差別是前者透過程式碼去定義Servlet或html去對映URL,後者則是透過設定檔去對映,而後者要import的Jar比前者多些。先講前者:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  大年初三,到台北晃了一下,許久未逛重慶南路的書店,差點錯過一本簡體中文書:OSGi原理與最佳實踐。而我的Eclipse 3.5因安裝了Pax,org.eclipse.org核心套件被遮蔽,只好再下載新的Eclipse 3.5的SR1版,其OSGi核心也升級了。這次內容是用OSGi啟動Http Server,而Eclipse預設用的是Jetty,書中示例用Eclipse 3.4,而我根據其package內選了如下:

id    State       Bundle

Jemmy 發表在 痞客邦 留言(2) 人氣()

  Modular Java提供的MavenSpider飯粒還真不好煮。OSGi架構概念很簡單,也因為簡單,Pax就有很多複雜的Script協助建構複雜的bundle,否則自己兜一個中大型的Bundles可能更糟。

  每個Pax的script都會直接影響到執行目錄下的pom.xml,比如pax-import-bundle -g groupID -a artifactID -v version,其實作用就是把import進來的bundle jar加到pom.xml的dependencies;而pax-create-bundle,除了在project目錄下建立bundle子目錄,還會在project目錄下的pom.xml增加module,其值就是bundle的目錄名。

Jemmy 發表在 痞客邦 留言(0) 人氣()

  在PowerShell上執行Pax Construct還不賴,它提供的介面比cmd好看多了。在PowerShell上執行OSGi興許有不一樣的火花。Pax Construct提供兩個script:pax-embed-jar和pax-wrap-jar把Jar包成bundle。

  Bundle在OSGi裡最簡單的定義是一個普通的jar加個額外的資訊檔,即META-INF下的MANIFEST.MF。而要介紹的這兩個script,甚至可以幫忙從Jar檔找出相依(dependencies)的Jar,generate MANIFEST.MF的資訊。

Jemmy 發表在 痞客邦 留言(0) 人氣()

  Survey IDE的操作,如Eclipse,提供一大堆選擇與按鈕功能讓你無所適從,不知漏了什麼動作會有什麼後果。其實IDE的任務在於協助不在於主導,是故它都有提供最簡易的情況,不用想太多去做一些設定,就直接Run看看實驗一下。

  Pax Runner除了有Maven plugin以外,也有Eclipse plugin,通常只需用Maven plugin就好,不過也看看Eclipse plugin能提供強大的功能。

Jemmy 發表在 痞客邦 留言(0) 人氣()

  Pax Umbrella Project是為發展OSGi Tool的專案(Pax umbrella譯作大同傘)。提供不少獨立的工具,大概以Pax Construtct和Pax Runner為主。Pax Construct負責建構OSGi相關專案如Bundle、Module、Service等;而Pax Runner則是可以建立OSGi container,可以選擇Felix(預設)、Equinox或是其它的OSGi container等,Pax Runner還真是跟流行,作用和SLF4J之於Logger、JPA之於ORM差不多。

  自http://wiki.ops4j.org/display/paxconstruct/Download下載最新的Pax Construct(目前最新版是1.4),壓縮後,增加Pax Construct的Home/bin的目錄到Path。以下是部份script用法:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  在Eclipse 3.4以上,[Run Configurations]裡有個OSGi Framework的設定,現在終於了解怎麼用,不過會建議開個command mode去用會比較好,因為osgi>提示是在Console View顯示,而像comipler、版本控制等,很多功能會使用Console view。所以開個command mode執行Equinox會單純很多。

  在[Run Configurations]裡有個[OSGi Framework]按右鍵選新增,會等很久後才出現如下的畫面:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  斥資千圓大洋,購進一本薄薄的原文書:Modular Java。它是講OSGi(我真有錢)。

  今天上午Demo了Maven,也讓與會者感嘆,若Vibo案早點引進不就好了。除了富邦案和現在這個案子,有誰敢給這個時間去踹一個不見得會成功的技術,就算是有七成把握,PM們也不願冒三成的風險,除了這兩個案子的當時的老板外。我當然有看錯的時候,Ruby on Rails沒有預期的紅,但它的約定優於配置的概念卻影響深遠。

Jemmy 發表在 痞客邦 留言(2) 人氣()

OSGi Framework在Open Source最著名的有四個,除了Oscar快三年沒有更新外,其餘分別是Equinox、Knopflerfish和Apache出來的Felix,此外也介紹一個不錯的簡體中文網站,http://www.open-open.com/index.htm,Java開源大全,目前是我見過最完整的絕世武功目錄。
http://felix.apache.org/site/index.html取得felix-1.2.1後解壓縮,啟動方式是進入install_dir後,執行java -jar bin/felix.jar就能進入prompt模式操作,而ps指令與Equinox的ss指令相同,列出所有services清單。其它可以參照help指令。

Jemmy 發表在 痞客邦 留言(0) 人氣()

有別於Equinox內嵌Eclipse裡的Plug In Project,Knopflerfish需要自行手動下載、啟動與操作,不過也不是難事,在http://www.knopflerfish.org/install.html就有良好說明。
Install: java -jar knopflerfish_osgi_<version>.jar

Jemmy 發表在 痞客邦 留言(0) 人氣()

本來想寫OSGi再體驗,但發現沒描述OSGi主要在做什麼,講來也是有點一頭霧水,先舖陳我目前所瞭的OSGi。
OSGi全名是Open Service Gateway Initiative,目的在整合家庭異質網路。比如家裡有DVD光碟櫃,但一家人要去旅遊時在車上無聊,就在車上的影音設備播放家裡的DVD裡的影片。有別過往一個Server服務於不同的Client,OSGi是一種服務平台,如手機服務平台、家庭服務平台、汽車服務平台,上述的例子,即汽車上的OSGi連線到到家庭的OSGi取得DVD服務回傳到汽車屏幕上播放。

Jemmy 發表在 痞客邦 留言(0) 人氣()

OSGi Framework可說是軟體的USB。目前實作OSGi container的有Knopflerfish, EquinoxApacheFelix,其中Eclipse 3.3Europa預設支援Equinox

如同Servlet, EJB規範,OSGi規範二事:在OSGi container上的服務群集必須實作,並在containerapplication之間的訂定契約,亦即在OSGi平台上開發,首先要用OSGiAPI實作你的application,再佈署到OSGi container上。從開發者觀點,OSGi有下列優勢:

Jemmy 發表在 痞客邦 留言(0) 人氣()