邋遢居

          我的Java天堂

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks
          1 概述
          Blueprint 使用手記 Jet Geng
          July 10, 2011
          Blueprint 是 OSGi Service Platform Enterprise Specification 標準的一 部分。很多最佳實踐中也都推薦在應(yīng)用程序中使用他。最近在項目中用他 來發(fā)布和應(yīng)用服務(wù)。感覺效果不錯。所以就有了這篇使用手記!歡迎各位 看官拍磚!
          2 配置環(huán)境
          我們在前期找到了兩個 Blueprint 的實現(xiàn):一個是 Apache 的 aries,另 外一個就是 Eclipse 的 Gemini。最后選擇了 Gemini。做出這樣的決定出于 兩點考慮:
          • Blueprint的標準就是由Spring提出。
          • Gemini的初始代碼由Srping所捐獻。 下面我就簡單介紹一下環(huán)境的配置過程:
          • 從http://eclipse.org/gemini/ 下載 Gemini 的合適的版本。我們 采用的是 1.0.0M1。并解壓到路徑 A
          • 從http://static.springsource.org/downloads/nightly/milestone-download. php下載 spring-osgi-2.0.0.M1-with-dependencies。并解壓到路徑 B。 他里面包括了 Gemini 所依賴的 bundle。說白了也就是 SpringFrame- work。
          • Eclipse 中新建一個 Target Platform。把上述的路徑 A和 B 加入到新 建的 Target Platform 中去。
          • 選擇新建的 Target Platform 為當前活動的 Platform。 3 啟航
          個人理解 Gemini 就是 OSGi 世界中的 IOC。既然是一個 IOC 框架,那 我們就從創(chuàng)建一個 Bean 開始吧!

          3.1    創(chuàng)建一個 Bean 首先我們來看一下我們要存入 Container 中的 POJO。
          Listing 1: POJOWillInContainer.java
          package org.gunn.gemini.demo;
          import org.slf4j.Logger; import org.slf4j.LoggerFactory; /**
          * This pojo will create by blueprint container * 
          @author Jet Geng * */
          public class POJOWillInContainer { private Logger logger =
          }
          LoggerFactory.getLogger(POJOWillInContainer.
          class); private String name ;
          private String age;
          public void setName(String name) { logger.info("the new name is:" + name); this.name = name;
          }
          public void setAge(String age) { logger.info("the new age value is:" + age); this.age = age;
          }

          這個超級簡單的一個 POJO,我們?nèi)绾瓮ㄟ^ Gemini 來創(chuàng)建他呢?我們通過 一個簡單的配置文件。具體如下。
          Listing 2: pojoconfig.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
              
          <bean id="myPOJO" class="org.gunn.gemini.demo.POJOWillInContainer" >
                  
          <property name="name" value="JetGeng"/>
                  
          <property name="age" value="32"/>
              
          </bean>
          </blueprint>

          用過 spring 的兄弟,第一眼就能看明白這個配置文件說的是什么。其實就 是創(chuàng)建了一個 bean。到這里,我們所需要做的工作其實就已經(jīng)完成了。下 面就可以通過 Debug 來啟動了。
          3.2    運行 Blueprint 容器 首先把 pojoconfig.xml 文件放到 project path/OSGi INF/blueprint 目錄
          下?;蛘咴?MANiFEST.MF 文件中通過如下語句進行指定。 Blueprint-Bundle: config/account-data-context.xml, config/osgi-*.xml
          更多內(nèi)容參考http://www.eclipse.org/gemini/blueprint/documentation/ reference/1.0.0.RC1/html/app-deploy.html中的 8.2 Blueprint Manifest Configuration Comparison。好了,我們可以啟動我們的應(yīng)用程序了。為了 能夠讓 blueprint 順利的跑起來,我們必須要把 blueprint 相關(guān) bundle 以及 他所依賴的 bundle 都加入到運行時中。 按照上圖配置后,點擊運行。我們
          Figure 1: Debug 配置

          將在控制臺得到如下內(nèi)容。

          控制臺中的黑色行顯示我們的 POJO 已經(jīng)被 BlueprintContainer 創(chuàng)建

          了,并且設(shè)定了相關(guān)屬性。
          .
          這個部分的全部代碼已經(jīng)放到了 git://github.com/jetgeng/OSGi.git 中了。 感興趣的筒子可以 down 下來玩玩。
          posted on 2011-07-10 11:06 Jet Geng 閱讀(5048) 評論(4)  編輯  收藏 所屬分類: OSGI

          Feedback

          # re: Blueprint 使用手記[未登錄] 2011-09-08 10:47 alex
          Eclipse 中新建一個 Target Platform。把上述的路徑 A和 B 加入到新 建的 Target Platform 中去。
          選擇新建的 Target Platform 為當前活動的 Platform。

          這一步怎么操作?  回復(fù)  更多評論
            

          # re: Blueprint 使用手記 2011-09-08 11:38 jetgeng
          直接在 preference 頁的 target platform頁中勾選就可以了  回復(fù)  更多評論
            

          # re: Blueprint 使用手記[未登錄] 2011-09-08 13:18 alex
          @jetgeng
          找到了,沒想到這么快就得到回復(fù),非常感謝!  回復(fù)  更多評論
            

          # re: Blueprint 使用手記 2013-08-30 16:39 zjy
          git://github.com/jetgeng/OSGi.git
          連接不上呀  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 甘孜县| 比如县| 习水县| 财经| 萍乡市| 大渡口区| 桂东县| 壤塘县| 平舆县| 五指山市| 全州县| 新兴县| 罗江县| 曲沃县| 伊金霍洛旗| 沾化县| 屏东县| 达孜县| 宁安市| 大名县| 景德镇市| 高碑店市| 维西| 沐川县| 浦东新区| 治多县| 报价| 营山县| 宜良县| 抚顺县| 昌乐县| 湛江市| 裕民县| 上饶市| 独山县| 林周县| 利川市| 惠来县| 宜章县| 新宁县| 滁州市|