nighty

          折騰的年華
          posts - 37, comments - 143, trackbacks - 0, articles - 0

          將Apache Roller部署到MyEclipse上面

          Posted on 2009-11-22 21:04 寒武紀(jì) 閱讀(2260) 評(píng)論(2)  編輯  收藏 所屬分類: Java
           

          都說roller在國外是二次開發(fā)博客系統(tǒng)的首選,但是下載源代碼之后發(fā)現(xiàn)是它是基于netbeans項(xiàng)目結(jié)構(gòu)開發(fā)的。平時(shí)用習(xí)慣了Eclipse,所以想搬到MyEclipse上面,但沒有想到居然那么不容易,折騰了整整一天,才最終跑起來。網(wǎng)上的參考信息太少,大概都是那二三篇的轉(zhuǎn)貼,全部結(jié)合起來就差不多可以解決,借此總結(jié)一下,希望用到的朋友有參考作用!

          1. 準(zhǔn)備環(huán)境

          MyEclipse  6.0

          JDK       1.6.0_05

          Tomcat     5.5.27 (建議用5.5以上版本)

          Roller      4.0.1

          2. 下載Roller

          Roller的主頁http://roller.apache.org/ 下載最新的roller版本,目前是4.0.1,同時(shí)下載源代碼包和官筆發(fā)布程序包的zip,分別為apache-roller-src-4.0.1.zipapache-roller-4.0.1.zip

          下載發(fā)布程序的原因是源源代碼包里有一些內(nèi)容和發(fā)布包不一致,導(dǎo)致源代碼在Eclipse中編譯后在運(yùn)行時(shí)會(huì)報(bào)錯(cuò),因?yàn)閷?duì)源代碼不熟悉,所以還無法定位到錯(cuò)誤的原因所在。另外一些配置文件只有在它官方的發(fā)布包中才有,一會(huì)要用到它。

          3. 搭建項(xiàng)目環(huán)境

          MyEclipse中新建一個(gè)Web項(xiàng)目,命名為rollerJ2EE環(huán)境選擇1.4

          解壓縮roller的二個(gè)包,為了說明的方便,我們把apache-roller-src-4.0.1.zip的解壓縮后目錄叫做roller-src,把apache-roller-4.0.1.zip的解壓縮后目錄叫做roller-bin

          roller-src/apps/weblogger/src/java目錄下的org整個(gè)目錄的源文件復(fù)制到項(xiàng)目中的src里面;

          lib中添加jar文件。二種方法,可以從roller-src中的tools目錄中逐個(gè)目錄地把所有的jar文件拷貝出來,為了簡單起見,還是從它的發(fā)布程序中直接拿更方便,從roller-bin中的WEB-INF/lib下面的所有jar都復(fù)制出來,放到我們的項(xiàng)目中的lib中去;

          roller默認(rèn)是使用MySQL數(shù)據(jù)庫,但是lib里面缺少MySQLJDBC驅(qū)動(dòng),所以還要自己從網(wǎng)上下載驅(qū)動(dòng)的jar,添加到WEB-INF/lib中,如果你是使用的其它數(shù)據(jù)庫,同樣需要手動(dòng)下載它對(duì)應(yīng)的驅(qū)動(dòng)程序;

          roller-bin中復(fù)制除了WEB-INF目錄以外的所有文件,粘貼到我們項(xiàng)目中的WebRoot下面,這些是頁面文件和一些資源文件;

          復(fù)制roller-bin中的WEB-INF目錄下除了classes外的所有文件到我們項(xiàng)目中的WEB-INF目錄下,覆蓋掉默認(rèn)的web.xml,你還可以發(fā)現(xiàn)它的一些jsp文件是放在WEB-INF下面的,起到很好的保護(hù)作用,roller是基于struts2開發(fā)的;

          roller-bin中的WEB-INF/classes目錄中,復(fù)制除了org目錄外的所有文件,到我們項(xiàng)目中的src里面,這些是系統(tǒng)的配置文件,包括了國際化資源、struts配置、log配置、數(shù)據(jù)庫腳本等等。

          roller還用到了郵件功能,需要把activation.jarmail.jar二個(gè)j2eejar復(fù)制到tomcatcommon/lib目錄下,如果沒有這一步,可能啟動(dòng)初始化會(huì)失敗!導(dǎo)致應(yīng)用無法正常運(yùn)行。

          到這里,所有的文件就已經(jīng)全部搬到MyEclipse上面了,接下來要修改一些內(nèi)容使用我們的項(xiàng)目能正常部署。

          4. 修改部分內(nèi)容

          在我們項(xiàng)目的src中新建一個(gè)名稱為roller-custom.properties的文件,roller采用這個(gè)擴(kuò)展配置現(xiàn)覆蓋系統(tǒng)的默認(rèn)配置。網(wǎng)上有些說要把這個(gè)文件放到tomcatcommon/classes中,其實(shí)不用的,只要放在classpath中能找到就行了,所以我們把它放在我們的src目錄下面,方便修改,在該文件中添加如下內(nèi)容:

          installation.type=auto
          database.configurationType=jdbc
          database.jdbc.driverClass=com.mysql.jdbc.Driver
          database.jdbc.connectionURL=jdbc:mysql://localhost:3306/rollerdb?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8
          database.jdbc.username=scott
          database.jdbc.password=tiger
          mail.configurationType=properties
          mail.hostname=smtp-server.example.com
          mail.username=scott
          mail.password=tiger

          注意database.jdbc.connectionURL這個(gè)配置后面需要帶上上面編碼的參數(shù),不然安裝的過程可能會(huì)出現(xiàn)一些亂碼。修改urlusernamepassword這些,如果你有能正常使用的郵箱服務(wù)器,也填上。

          創(chuàng)建MySQL數(shù)據(jù)庫,名稱為rollerdb,并指定編碼為UTF-8。如果你使用的是root用戶,則不用授權(quán),如果不是,則需要為用戶授權(quán),下面是一個(gè)示例:

              

          啟動(dòng)roller的時(shí)候它會(huì)查詢數(shù)據(jù)庫是否已經(jīng)初始完成,如果沒有,它會(huì)自動(dòng)進(jìn)入安裝頁面,引導(dǎo)用戶進(jìn)行安裝,做得非常人性化。

          修改部分源代碼。org.apache.roller.weblogger包里面的pojos包是有問題的!剛開始的時(shí)候老是無法啟動(dòng),報(bào)錯(cuò)提示的是JPA的一個(gè)異常,根本不知道如何解決,后來在CSDN上找到一篇文章,說是pojos這個(gè)包的源碼有問題,可能跟發(fā)布包中的版本不一致,所以需要用變態(tài)一點(diǎn)的處理辦法。

              

          在我們的項(xiàng)目WEB-INF/lib中,找到roller-business.jarroller-web.jar(如上圖所示),這二個(gè)jar其實(shí)就是我們src中的所有java文件的編譯打包,為了不重復(fù),先把roller-web.jar刪除掉,然后用winrar打開roller-business.jar,刪除pojos以外的其它四個(gè)包和那個(gè)WebloggerException.class。這樣,其它代碼可以正常編譯!

          下面是最終的基本結(jié)構(gòu)截圖(僅參考)

          WeRoot目錄截圖
              

          Src目錄截圖:

              

          5. 其它補(bǔ)充說明

          按照上面的步驟,項(xiàng)目結(jié)構(gòu)就基本上正常搭建了,真是費(fèi)心費(fèi)力!NetBeans下面沒有試過,興許會(huì)比這個(gè)簡單許多!反正都習(xí)慣Eclipse了,就都移過,后面再花些時(shí)間研讀一下它的源代碼,網(wǎng)上說是非常好的學(xué)習(xí)例子。

                  Roller的系統(tǒng)全局配置文件是放在org.apache.roller.weblogger. org.apache.roller.weblogger.config包中的roller.properties中的。在這里能找到各項(xiàng)系統(tǒng)的配置,我們自己手動(dòng)創(chuàng)建的roller-custom.properties是用來覆蓋一些常用屬性的。

                  src下面的dbscripts是所有數(shù)據(jù)庫的SQL腳本,apache-roller-src-4.0.1.zip中提供的腳本是不完整的!所以需要使用正式發(fā)布包的腳本,它帶了數(shù)據(jù)庫的初始腳本,由系統(tǒng)自動(dòng)引導(dǎo)創(chuàng)建,還有許多版本升級(jí)的補(bǔ)充腳本。

                  默認(rèn)的log配置是用文件形式,保存在tomcat的的logs目錄中,名稱為roller.log的,如果你啟動(dòng)的過程遇到問題,請(qǐng)到這里去查看啟動(dòng)日志,分析一下異常的原因。

                  roller-custom.properties中配置的郵箱主機(jī)和用戶名密碼等,如果無法正常連接,它初始化時(shí)會(huì)報(bào)錯(cuò),但是不會(huì)影響正常啟動(dòng),前提是你必須把activation.jarmail.jar這二個(gè)文件放到tomcat里面。

                  在調(diào)試的過程中發(fā)現(xiàn)org.apache.roller.weblogger.business.WebloggerImpl類的創(chuàng)建方法中有加載roller-verion.properties,但是在我們的src中沒有找到這個(gè)文件,原來是在roller-business.jar中包含了。好像另一個(gè)類也包含這一句啟動(dòng)的初始代碼,如果找不到這個(gè)類,會(huì)拋出空指針Exception,同樣導(dǎo)致整個(gè)應(yīng)用啟動(dòng)失敗。所以剛開始的時(shí)候生硬地在WebloggerImpl類中115行加載了一段異常處理代碼如下:
              

                  當(dāng)然,如果你已經(jīng)包含了roller-version.properties文件,這個(gè)異常是不會(huì)存在的!

                  Roller的文檔非常齊全,圖文并茂,多多閱讀,就可以了解它的使用方法。IBM 開發(fā)者論壇就是基于它進(jìn)行開發(fā)的,的確非常強(qiáng)大,想了解struts2JPASpringAcegiVelocity等主流技術(shù)的都可以從這里找到示例,不過要多花些時(shí)間,從其它方面,比如結(jié)構(gòu)劃分、代碼規(guī)范、theme切換等,都可以學(xué)習(xí)到很多東西。

                  Roller Architecture(摘自網(wǎng)絡(luò))

          Roller WebWeb and UI Layer

               Editor UI via Struts and JSPblog and feed rendering via Velocity

               Feed parsing via ROME, Blogger API via Apache XML-RPC

          Roller BeansBusiness and Persistence Layer

               Hibernate/JPA for DBMSLucene for search



          多多學(xué)習(xí),愿和大家共同分享!^_^
           這里打包一個(gè)PDF文件提供下載: 將Apache Roller部署到MyEclipse上面



          剛進(jìn)場(chǎng)的時(shí)候戲就落幕

          Feedback

          # re: 將Apache Roller部署到MyEclipse上面  回復(fù)  更多評(píng)論   

          2009-11-22 22:45 by norsor
          值得借鑒!

          # re: 將Apache Roller部署到MyEclipse上面  回復(fù)  更多評(píng)論   

          2009-11-23 23:15 by TiGERTiAN
          4.0的二次開發(fā),我去年到今年一直在做,他的pojos包沒有問題。你需要用它的ant配置文件來build,配置好之后,會(huì)生成其他的一些文件,同時(shí)也會(huì)生成那兩個(gè)jar包,你的web工程最好引用他的jar包,這樣類文件也會(huì)少些。它本身就是講邏輯和view分開的,所以最好按照他原來的方式做,這樣可以保證問題最少。
          希望我的一些資料能對(duì)你有些幫助,http://www.aygfsteel.com/TiGERTiAN/category/36013.html
          主站蜘蛛池模板: 葫芦岛市| 珲春市| 灌南县| 保靖县| 文安县| 商丘市| 赤壁市| 特克斯县| 大洼县| 昌平区| 平乡县| 土默特右旗| 江达县| 吉安县| 柏乡县| 武清区| 泸州市| 新巴尔虎左旗| 安国市| 淄博市| 阳高县| 常宁市| 五原县| 九寨沟县| 三河市| 巢湖市| 贺州市| 武清区| 云和县| 枝江市| 化隆| 五峰| 柏乡县| 高清| 红安县| 武冈市| 鄄城县| 德惠市| 景谷| 大关县| 许昌县|