<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    程序人生

    在Java中摸爬滾打的日子

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


    posted on 2010-06-15 00:17 瀟湘振宇 閱讀(5309) 評(píng)論(9)  編輯  收藏 所屬分類(lèi): OSGi系列

    Feedback

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一 2010-06-15 04:49 臨遠(yuǎn)
    呵呵,過(guò)來(lái)參拜一下使用spring-dm做項(xiàng)目的同志。還不清楚對(duì)cglib改造有什么用途,我們是使用暴力反射讓hibernate實(shí)現(xiàn)動(dòng)態(tài)注冊(cè)實(shí)體類(lèi)。spring基本已經(jīng)被拋棄了。struts最后也沒(méi)整合到osgi里,基本來(lái)說(shuō),改造以后系統(tǒng)已經(jīng)不能通用了。期待博主的見(jiàn)解,多謝。  回復(fù)  更多評(píng)論
      

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一 2010-06-15 09:31 瀟湘振宇
    @臨遠(yuǎn)
    改造cglib的目的是為了正常使用Hibernate的延遲加載,Hibernate在創(chuàng)建代理的時(shí)候,因?yàn)镺SGi的特殊性,每個(gè)Bundle擁有獨(dú)立的一個(gè)ClassLoader(Fragment除外),cglib通過(guò)其AbstractClassGenerator.create方法創(chuàng)建對(duì)象時(shí),先獲取到相應(yīng)的ClassLoader對(duì)象緩存起來(lái),在延遲加載的時(shí)候再通過(guò)緩存起來(lái)的ClassLoader來(lái)加載指定的對(duì)象。但是cglib獲取的默認(rèn)ClassLoader對(duì)象是POJO所在的Bundle的ClassLoader對(duì)象,而通過(guò)此ClassLoader來(lái)加載HibernateProxy類(lèi),自然會(huì)出現(xiàn)NoClassDefFoundError之類(lèi)的異常。這個(gè)問(wèn)題在BlueDavy的OSGi進(jìn)階中有詳細(xì)的說(shuō)明。
    在Hibernate這一層使用暴力反射讓hibernate實(shí)現(xiàn)動(dòng)態(tài)注冊(cè)實(shí)體類(lèi)這樣的方法我覺(jué)得過(guò)于復(fù)雜,我覺(jué)得沒(méi)必要這樣做。我是通過(guò)Fragment來(lái)實(shí)現(xiàn)的。這樣理解想來(lái)也容易。  回復(fù)  更多評(píng)論
      

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一(前言) 2010-06-15 12:15 晉哥哥
    持續(xù)關(guān)注中  回復(fù)  更多評(píng)論
      

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一(前言) 2010-06-17 15:21 特立獨(dú)行
    持續(xù)關(guān)注中
    請(qǐng)博主堅(jiān)持更新哦~加油  回復(fù)  更多評(píng)論
      

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一(前言) 2010-06-17 15:26 瀟湘振宇
    多謝關(guān)注!昨天上午差不多完基于OSGi的Web應(yīng)用開(kāi)發(fā)系列三(構(gòu)建項(xiàng)目框架),只是因?yàn)閯偘崃思遥伦獾姆孔幽抢镞€沒(méi)有開(kāi)通網(wǎng)絡(luò),需要過(guò)一兩天才能發(fā)布!  回復(fù)  更多評(píng)論
      

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一(前言) 2010-06-19 16:35 Johnny.Liang
    @瀟湘振宇

    支持原創(chuàng)  回復(fù)  更多評(píng)論
      

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一(前言) 2010-08-18 21:14 黃晨
    如何通過(guò)fragment部署entity,還是不知道。Fragment和主bundle共用一個(gè)classloader.但是我創(chuàng)建了一個(gè) hibernat bundle和一個(gè)DomainObject bundle. 在DomainObject bundle中有兩個(gè)通過(guò)anotation定義的pojo: Test和User. 在hibernate bundle中我通過(guò)addAnnotatedClass添加這兩個(gè)pojo.可是總是報(bào)錯(cuò):Test cannot be resolved to a type 和 User cannot be resolved to a type。 即使我在Fragment中將兩個(gè)pojo所在的包export,在hibernate bundle中import也沒(méi)用。為什么加載不了pojo class呢?有什么需要注意的么?   回復(fù)  更多評(píng)論
      

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一(前言) 2010-08-20 09:26 瀟湘振宇
    @黃晨
    這里需要注意的一點(diǎn)是,你在Hibernate Bundle中通過(guò)addAnnotatedClass添加這兩個(gè)POJO,而這個(gè)是通過(guò)在SessionFactory Bean中配置,如果確定POJO的Bundle是Hibernate Bundle的Fragment的話,那應(yīng)該是沒(méi)問(wèn)題的,但如果不是的話,那就需要確保在Hibernate Bundle的MANIFEST.MF文件中有Import-package這兩個(gè)POJO所在的包。  回復(fù)  更多評(píng)論
      

    # re: 基于OSGi的Web應(yīng)用開(kāi)發(fā)系列一(前言) 2015-07-06 17:34 Wick
    經(jīng)過(guò)幾年的發(fā)展,目前OSGi已經(jīng)成熟,很多公司開(kāi)始使用,最著名的當(dāng)屬JIRA,國(guó)內(nèi)的有JXADF(http://osgi.jxtech.net)。  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲宅男精品一区在线观看| 黄网站色视频免费看无下截| 免费精品国产日韩热久久| 亚洲一区二区三区丝袜| 亚洲黄黄黄网站在线观看| 久久美女网站免费| 亚洲精品无码日韩国产不卡av| 亚洲精品国产高清嫩草影院| 91老湿机福利免费体验| 羞羞网站在线免费观看| 久久精品国产亚洲av麻豆小说 | 毛片免费vip会员在线看| eeuss影院www天堂免费| 亚洲三级中文字幕| 自拍偷自拍亚洲精品被多人伦好爽| 99久热只有精品视频免费观看17| 亚洲av无码一区二区三区人妖 | 亚洲日韩在线观看免费视频| 亚洲黄色免费在线观看| 日本免费精品一区二区三区| 亚洲福利视频一区二区三区| 亚洲精品国产精品国自产观看| 国产精品成人免费福利| 国产精品福利片免费看| 亚洲乱码日产精品一二三| 亚洲一二成人精品区| 高清在线亚洲精品国产二区| 亚洲一级免费视频| 91在线免费观看| 野花视频在线官网免费1| 亚洲av永久无码嘿嘿嘿| 亚洲av福利无码无一区二区 | 亚洲同性男gay网站在线观看| 亚洲无码精品浪潮| 午夜精品在线免费观看| 蜜臀AV免费一区二区三区| GOGOGO高清免费看韩国| 无遮挡呻吟娇喘视频免费播放| 亚洲一区精彩视频| 亚洲综合亚洲国产尤物| 亚洲成AV人在线观看天堂无码|