程序人生

          在Java中摸爬滾打的日子

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            6 Posts :: 1 Stories :: 19 Comments :: 0 Trackbacks

          2010年6月13日 #

               摘要: 提供支撐的Bundles --- 瀟湘振宇 2010-06-26   上一篇中,我們已經(jīng)為這基于OSGi的Web應(yīng)用搭建了項(xiàng)目框架,但其中涉及到有幾個(gè)支撐OSGi環(huán)境下的SSH框架的Bundles的改造或提供未曾給大家詳細(xì)介紹。本篇內(nèi)容就是為詳細(xì)介紹這幾個(gè)Bundles的作用及創(chuàng)建的過程。 CGLIB的改造 Cglib的改造曾在系列一中有提到,為了解決...  閱讀全文
          posted @ 2010-06-26 16:24 瀟湘振宇 閱讀(3820) | 評(píng)論 (5)編輯 收藏

               摘要: 通過新建一個(gè)基于Maven的OSGi的Web應(yīng)用框架,來介紹OSGi的Web應(yīng)用框架的搭建過程?;谶@項(xiàng)目框架,你可以添加自己的業(yè)務(wù)模塊進(jìn)來,很容易就能使之應(yīng)用于實(shí)際項(xiàng)目中……  閱讀全文
          posted @ 2010-06-20 22:09 瀟湘振宇 閱讀(10704) | 評(píng)論 (2)編輯 收藏

              這一篇,我將向大家介紹幾個(gè)常用的工具,因?yàn)楸救嗽贠SGi的項(xiàng)目開發(fā)中,得益于這幾個(gè)工具,因此有必要向大家逐一介紹。這幾個(gè)工具分別是:Maven、Pax-construct、Pax-runner。當(dāng)然我們開發(fā)必定少不了IDE工具,我所使用的IDE工具是Eclipse,對(duì)于IDE的使用我就不多說了。
              開發(fā)基于OSGi的Web應(yīng)用,我有兩種比較開發(fā)方式,一種是借助Maven跟相關(guān)的一些Maven插件,比如上面說到的Pax-construct、Pax-runner、還有Maven的bnd插件。另一種開發(fā)方式則是以Plug-in的方式開發(fā)。兩種方式各有其優(yōu)劣。在本系列文章中,我會(huì)分別介紹這兩種開發(fā)方式。

          Maven簡(jiǎn)介:   

              Maven是一個(gè)很不錯(cuò)的項(xiàng)目管理工具,其插件之多,也就說明了其功能之廣。但本文不會(huì)詳細(xì)的來介紹Maven的各種插件,這里只會(huì)簡(jiǎn)略的說一下Maven在開發(fā)基于OSGi的Web應(yīng)用中所帶來的便利之處及存在的弊端。
              Maven的好處:
              1、方便管理項(xiàng)目的組織結(jié)構(gòu)
              2、方便管理項(xiàng)目對(duì)第三方包的依賴關(guān)系
              3、方便項(xiàng)目的構(gòu)建
              4、方便項(xiàng)目在持續(xù)集成中的應(yīng)用
              Maven的弊端:
              1、在項(xiàng)目中,經(jīng)常會(huì)出現(xiàn)IDE被阻塞的情況,尤其在Maven子工程比較多的情況下。
              2、當(dāng)項(xiàng)目是快照版時(shí),如果沒有設(shè)置好快照版更新策略的話,將會(huì)浪費(fèi)掉你很多寶貴的開發(fā)時(shí)間。
              Maven的使用很簡(jiǎn)單,但要用好也還是需要花不少時(shí)間來了解其各種相關(guān)的插件的功能。這里簡(jiǎn)單的講一下maven的使用,如果你用過,可以跳過這部分內(nèi)容。
              Maven的安裝很簡(jiǎn)單,從Apache官方網(wǎng)站(http://maven.apache.org)下載安裝包,解壓到自己指定的目錄下,配置一個(gè)M2_HOME的系統(tǒng)環(huán)境變量就可以使用了。你可以在命令行下,輸入mvn關(guān)鍵字就可以看出Maven已經(jīng)可以正常工作了,前提條件是存在有Java的運(yùn)行時(shí)環(huán)境。
              第一次運(yùn)行mvn后,Maven會(huì)在當(dāng)前用戶的根目錄生成一個(gè).m2的文件夾,里面有一個(gè)repository的文件夾,這是Maven的本地倉(cāng)庫(kù)目錄,你可以通過修改settings.xml文件來更改此repository的位置,這個(gè)settings.xml文件可以在Maven的解壓目錄下的conf目錄中找到,最好是將settings.xml文件拷貝到用戶目錄下的.m2文件夾中,因?yàn)檫\(yùn)行maven的命令時(shí),其最先會(huì)去.m2的文件夾中查找有沒有settings.xml文件,這是屬于用戶級(jí)的配置,而在%M2_HOME%/conf/settings.xml則是屬于全局性的配置,在Eclpse的Maven插件也需要有.m2下的settings.xml文件。關(guān)于安裝Eclipse的Maven插件可以參考http://m2eclipse.sonatyper.org。有關(guān)Maven更詳細(xì)的資料大家可以到網(wǎng)上搜一下,會(huì)有大把的資料供學(xué)習(xí)。

          Pax-construct簡(jiǎn)介:

             Pax-construct是一個(gè)生成OSGi的Maven項(xiàng)目的腳本工具,其安裝使用也很簡(jiǎn)單。官方網(wǎng)址是:http://wiki.ops4j.org/display/paxconstruct/Pax+Construct,下載最新版本1.4解壓到本地目錄后,將其bin目錄添加到環(huán)境變量PATH中,就可以使用了。其Quickstart主頁(yè)地址是:http://www.ops4j.org/projects/pax/construct/index.html,有關(guān)詳細(xì)使用,大家可以參考官方資料,你也可以按照本系列教程中的步驟來作學(xué)習(xí)使用。

          Pax-runner簡(jiǎn)介:
             
          Pax-runner是用來運(yùn)行此OSGi的Maven項(xiàng)目的一個(gè)腳本工具,這里我們主要用到其基于Maven的插件。其官方網(wǎng)址是:http://paxrunner.ops4j.org/space/Pax+Runner。其安裝跟Pax-construct一樣,使用則更為簡(jiǎn)單。這里就不詳細(xì)細(xì)說了。

          bnd簡(jiǎn)介:
              bnd是一個(gè)將普通jar包轉(zhuǎn)換成符合OSGi的bundle的工具,其官方網(wǎng)址是:http://www.aqute.biz/Code/Bnd,這工具在這里大家不需要太多的關(guān)注,因?yàn)槭褂肞ax-construct構(gòu)建項(xiàng)目時(shí),就已經(jīng)把其集成進(jìn)來了,大家需要關(guān)注的是項(xiàng)目根目錄下的osgi.bnd配置文件。這個(gè)配置文件是項(xiàng)目用Maven打包時(shí)給bnd的一個(gè)附加的配置文件。具體如何使用請(qǐng)關(guān)注后文。
             
          總結(jié):
              以上介紹的Pax的兩個(gè)工具construct跟runner均是使用于在本文說的第一種開發(fā)方式,這種開發(fā)方式的好處在于開發(fā)人員不需要過多的關(guān)注OSGi Bundle的東西,精力主要放在業(yè)務(wù)代碼的開發(fā)上,但需要開發(fā)人員注意一些相關(guān)的事項(xiàng)。而第二種開發(fā)方式則是基于Eclipse的Plug-in的方式,這就需要大家對(duì)OSGi的概念比較清楚,而這種開發(fā)方式在工具上的使用有了Eclipse就行,當(dāng)然如果有Maven來管理項(xiàng)目那也是好事。但整體上講對(duì)開發(fā)人員的要求會(huì)高一些。

          posted @ 2010-06-15 12:06 瀟湘振宇 閱讀(3608) | 評(píng)論 (0)編輯 收藏

          概述:   
              接觸OSGi已經(jīng)有兩三年了,而真正運(yùn)用OSGi于項(xiàng)目之中,也將近兩年。這兩年來,因?yàn)镺SGi的不太成熟也讓我飽受歷練。
              如果你對(duì)OSGi這個(gè)名詞有點(diǎn)陌生,那本系列教程就不太適合你了,如果你想學(xué)習(xí)本系列教程,請(qǐng)你先去了解OSGi的相關(guān)概念。
              拽寫本系列教程的目的在于給想要在企業(yè)應(yīng)用中使用OSGi技術(shù)的同學(xué)朋友們以實(shí)際經(jīng)驗(yàn)指導(dǎo),希望能給你帶來收獲。
          名詞解釋:
              OSGi:OSGi是Open Service Gateway Initiative的簡(jiǎn)稱,可以稱是一種技術(shù),也可以稱是一個(gè)平臺(tái),亦可稱之為一種規(guī)范。
              Bundle:OSGi中最重要的元素之一,也是OSGi中最小的物理元素。它是一個(gè)jar包,但它持有一份能夠進(jìn)行自我描述的元數(shù)據(jù)文件(MANIFEST.MF),雖然普通的jar包中也存在有MANIFEST.MF文件,但非Bundle的jar的MANIFEST.MF文件中缺少進(jìn)行自我描述的元數(shù)據(jù)信息。
              Equinox:OSGi的一個(gè)參考實(shí)現(xiàn),也是Eclipse3.2+的核心。
              SSH腳手架:SSH腳手架是指由Struts+Spring+Hibernate組合在一起的開發(fā)框架。
              Spring-DM:Spring-DM是SpringDynamicModules的簡(jiǎn)稱,是由SpringSource提供的,致力于整合Spring框架和OSGi平臺(tái)的一個(gè)框架。
              Plug-in:這里的Plug-in指基于OSGi技術(shù)的插件工程。
              Maven:用來管理項(xiàng)目依賴及構(gòu)建的一個(gè)腳本工具。
              EBR:這里的EBR是SpringSource提供的Enterprise Bundle Repository的簡(jiǎn)稱
          入門要求:
              學(xué)習(xí)本系列教程的同學(xué)需要了解SSH腳手架,熟悉Eclipse IDE開發(fā),對(duì)Maven有一定的了解。
          前期準(zhǔn)備
              JDK1.6+
              Eclipse3.4+
              Spring2.5.6+
              Spring-DM1.1.2+
              Maven2.0.9+
              EBR訪問地址:http://www.springsource.com/repository/app
          需要解決的問題
              要使SSH腳手架能夠正常運(yùn)行于OSGi環(huán)境,那我們首先要解決的問題有三。其一是cglib的類加載器的改造,其二是解決數(shù)據(jù)庫(kù)驅(qū)動(dòng)包跟數(shù)據(jù)庫(kù)連接池缺少依賴的問題,其三就是整理運(yùn)行于OSGi環(huán)境下的SSH腳手架需要依賴的Bundle對(duì)象。
              也許有人會(huì)說,要讓Java應(yīng)用程序運(yùn)行OSGi那有什么困難的呢?當(dāng)然,解決問題的手段多種多樣,但要?jiǎng)?chuàng)建一個(gè)標(biāo)準(zhǔn)的OSGi基于OSGi的應(yīng)用程序,還確實(shí)不是那么的簡(jiǎn)單。
              解決了以上所說的三個(gè)問題,基于SSH開發(fā)OSGi應(yīng)用就不成問題。但該如何解決以上三個(gè)問題呢,以及解決了以上三個(gè)問題后如何來規(guī)范這種基于OSGi環(huán)境下的SSH開發(fā)呢,又該如何保證開發(fā)效率能夠保持在或更優(yōu)于以往開發(fā)非OSGi應(yīng)用時(shí)等一系列問題呢。要想了解如何解決,敬請(qǐng)關(guān)注本系列文章。


          posted @ 2010-06-15 00:17 瀟湘振宇 閱讀(5314) | 評(píng)論 (9)編輯 收藏

             用Xmarks書簽工具已經(jīng)有好幾年了,以前叫做Foxmarks,不記得是在零八年還是零九年改名的。反正我覺得這個(gè)插件是在Firefox的所有插件中最為有用的插件之一,也是FF中最好用的書簽插件。如果沒有了這么方便的書簽工具,實(shí)在感覺是太不爽了。
             自從國(guó)內(nèi)開始整頓互聯(lián)網(wǎng)開始,不知道Xmarks的哪跟筋得罪了國(guó)內(nèi)某機(jī)關(guān)單位,結(jié)果被墻了。之前發(fā)現(xiàn)Xmarks無法同步書簽時(shí),在網(wǎng)上搜索到使Xmarks重新復(fù)活的方法是在操作系統(tǒng)的etc目錄下的hosts文件中添加域名解析記錄。如下:
          64.147.188.86 www.xmarks.com
          64.147.188.92 api.xmarks.com
          64.147.188.89 login.xmarks.com
          173.239.65.22 login.xmarks.com
          64.147.188.87 sync.xmarks.com
          64.147.188.86 static.xmarks.com
          64.147.188.86 download.xmarks.com
          64.147.188.86 my.xmarks.com
          添加了這個(gè)還是不夠的,你還需要在插件里面選擇加密所有內(nèi)容才行。
             但好景不長(zhǎng),到今年五月下旬,Xmarks又停止了正常動(dòng)作,這真是認(rèn)人郁悶至極呀。當(dāng)時(shí)在網(wǎng)上搜了一下,但沒有找到有用的信息。因此折中的用了GMarks作為替代產(chǎn)品使感受了幾天,結(jié)果發(fā)現(xiàn)GMarks的使用實(shí)現(xiàn)是太難用了,沒有Xmarks一半的好用。于是決定再次尋找Xmarks復(fù)活的良藥,在Google中不斷的搜索,縮小搜索的時(shí)間范圍,終于還是找到了有用信息。
          原來Xmarks有幾個(gè)服務(wù)器更新了IP地址,可能是因?yàn)槟菐讉€(gè)更新IP地址的服務(wù)器以前的IP地址被“人”做了手腳吧!更新后的配置如下:
          64.147.188.86 www.xmarks.com
          #64.147.188.92 api.xmarks.com
          173.239.65.21 api.xmarks.com
          #64.147.188.89 login.xmarks.com
          173.239.65.22 login.xmarks.com
          #64.147.188.87 sync.xmarks.com
          173.239.65.23 sync.xmarks.com
          64.147.188.86 static.xmarks.com
          64.147.188.86 download.xmarks.com
          64.147.188.86 my.xmarks.com
          保存hosts文件后,點(diǎn)擊xmarks的同步,果然,再一次出現(xiàn)了久違的“Syncing Successfully”!
          還不知道什么時(shí)候Xmarks又會(huì)出現(xiàn)那個(gè)令人郁悶的紅色醒目的小問號(hào)?。?!
          posted @ 2010-06-13 00:00 瀟湘振宇 閱讀(731) | 評(píng)論 (1)編輯 收藏

          主站蜘蛛池模板: 晋中市| 扶风县| 莎车县| 平塘县| 万宁市| 友谊县| 渝北区| 方山县| 许昌县| 碌曲县| 迭部县| 廊坊市| 鄂尔多斯市| 昌平区| 安泽县| 宝鸡市| 聂荣县| 湛江市| 兴文县| 沾化县| 崇义县| 武邑县| 宜君县| 长垣县| 安徽省| 柞水县| 邛崃市| 宝山区| 海淀区| 内乡县| 花莲县| 临澧县| 黄浦区| 邓州市| 民和| 日照市| 民丰县| 青浦区| 利津县| 开封县| 竹溪县|