都說 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.zip 和 apache-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)目,命名為 roller , J2EE 環(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 里面缺少 MySQL 的 JDBC 驅(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.jar , mail.jar 二個(gè) j2ee 的 jar 復(fù)制到 tomcat 的 common/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è)文件放到 tomcat 的 common/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)一些亂碼。修改 url 和 username , password 這些,如果你有能正常使用的郵箱服務(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.jar 和 roller-web.jar (如上圖所示),這二個(gè) jar 其實(shí)就是我們 src 中的所有 java 文件的編譯打包,為了不重復(fù),先把 roller-web.jar 刪除掉,然后用 winrar 打開 roller-business.jar ,刪除 pojos 以外的其它四個(gè)包和那個(gè) WebloggerException.class 。這樣,其它代碼可以正常編譯!
下面是最終的基本結(jié)構(gòu)截圖 ( 僅參考 ) :
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.jar , mail.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)大,想了解 struts2 、 JPA 、 Spring 、 Acegi 、 Velocity 等主流技術(shù)的都可以從這里找到示例,不過要多花些時(shí)間,從其它方面,比如結(jié)構(gòu)劃分、代碼規(guī)范、 theme 切換等,都可以學(xué)習(xí)到很多東西。
??????? ⑦ Roller Architecture (摘自網(wǎng)絡(luò))
Roller Web : Web and UI Layer
* ???? Editor UI via Struts and JSP , blog and feed rendering via Velocity
* ???? Feed parsing via ROME, Blogger API via Apache XML-RPC
Roller Beans : Business and Persistence Layer
*
????
Hibernate/JPA for DBMS
,
Lucene for search
多多學(xué)習(xí),愿和大家共同分享!
^_^
?這里打包一個(gè)PDF文件提供下載
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
