基本環(huán)境配置
本節(jié)安裝配置Liferay有關(guān)開發(fā)必須的一些軟件,這些軟件在后面章節(jié)都會(huì)用到,因此本節(jié)的內(nèi)容是不可跳過的。 -------------------------------------------------------------------------------- 2.1 準(zhǔn)備必須的軟件,并進(jìn)行環(huán)境參數(shù)配置 安裝如下軟件: J2SDK 1.4.1 (雖然官方文檔推薦使用1.4.2版本,但是使用1.4.2版本的話,在LifeRay的部分功能中會(huì)出現(xiàn)中文亂碼問題;而到LifeRay 4.0為止,還沒有做到與Java 1.5的完全兼容);(轉(zhuǎn)載者注:本人使用Liferay Portal 4.3.0版 可以與JDK1.6兼容) Jikes 1.21 (官方文檔聲稱這個(gè)軟件不是必裝的,可以使用J2SDK中的標(biāo)準(zhǔn)編譯器代替,但是實(shí)際試驗(yàn)中,使用標(biāo)準(zhǔn)編譯器會(huì)出現(xiàn)一些奇怪的問題,而且Jikes給出的編譯錯(cuò)誤信息也更為豐富,推薦安裝使用;Jikes 1.22及以上版本是僅兼容Java 1.5的,無法與1.4版本的J2SDK一起使用,因此不要使用這些版本);(轉(zhuǎn)載者注:必須安裝Jikes,因?yàn)樵贚iferay的配置文件中使用的編譯器就是Jikes) Apache Ant 1.6.5 (對(duì)Ant的版本倒是沒有特殊要求,只是因?yàn)槲沂褂玫氖茿nt 1.6.5,所以我就這么注明了); (轉(zhuǎn)載者注:在Eclipse 3.3.0版中自帶Ant 1.7.0版) J2SDK下載后是exe格式的安裝文件,而Jikes和Ant都是zip壓縮包,直接解壓即可。這樣我安裝完三個(gè)軟件分別到如下三個(gè)目錄: C:\j2sdk1.4.1_07 C:\jikes-1.21 C:\apache-ant-1.6.5 接著在系統(tǒng)中設(shè)定環(huán)境變量,右鍵點(diǎn)擊“我的電腦”,選擇“屬性”,再選擇“高級(jí)”-》“環(huán)境變量”,在“系統(tǒng)變量”中修改或者加入: JAVA_HOME C:\j2sdk1.4.1_07 JIKES_HOME C:\jikes-1.21 ANT_HOME C:\apache-ant-1.6.5 如果系統(tǒng)中設(shè)置了CLASSPATH環(huán)境變量,則去除之,以防止沖突 給path環(huán)境變量加入 %ANT_HOME%\bin;%JAVA_HOME%\bin;%JIKES_HOME%\bin 之后重啟系統(tǒng),使環(huán)境變量生效。 (轉(zhuǎn)載者注:可以不改變其他環(huán)境變量。只需要把下載到的Jikes.exe放到JDK的bin文件夾下即可。) -------------------------------------------------------------------------------- 2.2 下載LifeRay程序包 本文直接使用了發(fā)布版本的4.0的源代碼和二進(jìn)制包,當(dāng)然也可以利用Subversion接口直接訪問LifeRay在Sourceforge上的庫使用最新的源代碼版本,不過下面的試驗(yàn)只是基于發(fā)布版本的代碼包完成的,共計(jì)需要下載: liferay-portal-src-4.0.0.zip LifeRay 4.0 正式版的源代碼包; liferay-portal-tomcat-4.0.0.zip LifeRay 4.0 正式版的Tomcat二進(jìn)制綁定包,提供測(cè)試新Portlet的執(zhí)行環(huán)境(如果只打算編譯調(diào)試Liferay自身的代碼,而不打算開發(fā)新的獨(dú)立Portlet組件,則可以不下載這個(gè)包); 以上文件包可以在LifeRay官方網(wǎng)站的連接或者Sourceforge上下載到。 將liferay-portal-src-4.0.0.zip解壓到D:\liferay\portal 目錄下備用。 -------------------------------------------------------------------------------- 2.3 安裝和配置基本的Eclipse運(yùn)行環(huán)境 在Eclipse官方網(wǎng)站下載最新版本的Eclipse IDE環(huán)境。我將之解壓到了C:\j2sdk1.4.1_07\eclipse 目錄下,雙擊eclipse.exe文件運(yùn)行之; File->Switch Workspace,輸入d:\liferay,點(diǎn)擊OK確認(rèn); File->New->Project->Java Project,輸入項(xiàng)目名稱為“portal”,保持默認(rèn)的“create new project in workspace”,選擇“Finish”結(jié)束。 如果上一步成功,那么已經(jīng)可以在左側(cè)欄看到源代碼的目錄結(jié)構(gòu)了;并且右鍵點(diǎn)擊項(xiàng)目的根目錄,選“Properties”,選“Java Build Path”的“Libraries”標(biāo)簽,應(yīng)該能夠看到所有需要的jar格式庫文件在里面了; Window->Show View->Ant,在新出現(xiàn)的Ant標(biāo)簽欄點(diǎn)擊加號(hào),選擇項(xiàng)目源碼根目錄上的build.xml文件; -------------------------------------------------------------------------------- 3. 基于Tomcat開發(fā)Portlet 本節(jié)通過配置一個(gè)基于Liferay的Tomcat綁定二進(jìn)制包建立一個(gè)擴(kuò)展開發(fā)Liferay的環(huán)境,這個(gè)環(huán)境特別適用于對(duì)新的Portlet組件進(jìn)行調(diào)試和開發(fā)。這個(gè)方法幾乎不會(huì)修改Liferay自身的代碼,所有的改動(dòng)都是在擴(kuò)展環(huán)境里完成,可以在Liferay升級(jí)時(shí)比較容易地實(shí)現(xiàn)擴(kuò)展了的功能的遷移。 但這個(gè)方法也有一個(gè)缺點(diǎn),就是開發(fā)的Portlet如果不執(zhí)行deploy步驟,就不能在Liferay里啟用。因此在開發(fā)和調(diào)試Portlet的過程中,一般還是在Liferay以外的環(huán)境中開發(fā)調(diào)試好,之后移植到此擴(kuò)展開發(fā)環(huán)境中,與Liferay聯(lián)調(diào),成功后部署應(yīng)用。具體工作中,可以與后面“改進(jìn)和調(diào)試Liferay自身代碼”一節(jié)中調(diào)試Portlet的方法稍作比較,選擇適合自己情況的方法。 -------------------------------------------------------------------------------- 3.1 配置擴(kuò)展開發(fā)環(huán)境 為了方便進(jìn)行自己的修改和定制開發(fā),同時(shí)又能與Liferay的更新保持兼容,我們使用單獨(dú)的目錄來放置自己的修改,這樣在Liferay發(fā)布新版本時(shí),可以直接升級(jí)Liferay部署,而不會(huì)與我們的修改相沖突。具體地,我使用了d:\liferay\ext 目錄來放置所有的擴(kuò)展(包括JSP、class文件及依賴庫等)。 首先要在d:\liferay\portal 目錄下建立一個(gè)名為“release.${username}.properties”的配置文件,其中${username}就是當(dāng)前Windows登陸的用戶名,可以通過“開始菜單-》運(yùn)行-》cmd.exe”后顯示的默認(rèn)路徑看到,跟在“Documents and Settings”字樣后面的就是當(dāng)前登陸的用戶名。這樣,我的配置文件的名稱是release.administrator.properties 。文件的內(nèi)容只寫一行: lp.ext.dir={Liferay}\ext 其中“{Liferay}”指的是Liferay源代碼存放的上級(jí)目錄,比如我寫的這一行就是: lp.ext.dir=d:\liferay\ext 回到上一節(jié)建立好的Eclipse中的Ant視圖中,雙擊展開根節(jié)點(diǎn)Portal,應(yīng)該可以看到很多Ant任務(wù),順序執(zhí)行 clean, start, build-ext 。屏幕下方的命令行窗口會(huì)跳躍大堆大堆的文字提示信息,如果一切正確,那么其中不應(yīng)該有紅色的錯(cuò)誤信息(絕大多數(shù)此處可能出現(xiàn)的錯(cuò)誤都是配置文件不正確所引起的)。一切正常的話,那么d:\liferay\ext 目錄下應(yīng)該生成了很多東西了。 (轉(zhuǎn)載者注:一種錯(cuò)誤有可能是Jikes缺少,其余基本上是路徑配置問題) 我們將前面準(zhǔn)備好的與Tomcat綁定的Liferay Professional版本的壓縮包解壓到d:\liferay\ext\servers\tomcat 目錄下,并且在d:\liferay\ext 目錄下建立一個(gè)名為app.server.{username}.properties的文件,在我這也就是app.server.administrator.properties ,文件內(nèi)容寫如下兩行: lp.ext.dir={Liferay}\ext app.server.type=tomcat 在我這也就是: lp.ext.dir=d:\liferay\ext app.server.type=tomcat 然后仿照前面在Eclipse里建立新的Java工程的方法,建立一個(gè)新的Java項(xiàng)目,指向d:\liferay\ext 目錄,也就是說,在輸入Java項(xiàng)目的項(xiàng)目名稱時(shí),輸入“ext”而不是前面輸入“portal”。 -------------------------------------------------------------------------------- 3.2 添加插件支持 為了能夠在基于Tomcat的Liferay Porfessional版本的運(yùn)行環(huán)境上實(shí)現(xiàn)我們編寫的插件的調(diào)試,需要給Eclipse環(huán)境添加一個(gè)借助Tomcat服務(wù)器開展調(diào)試的插件,也就是Sysdeo這個(gè)插件,可以到 http://www./eclipse/tomcatplugin 下載,我下載的是tomcatPluginV31.zip文件(將下載的這個(gè)zip文件包解壓,拷貝到Eclipse安裝目錄的plugins目錄下,比如我這里就是拷貝到了C:\j2sdk1.4.1_07\eclipse\plugins\ 目錄下。關(guān)閉并且重啟Eclipse,如果插件安裝成功,那么在界面的左上角應(yīng)該可以看到Tomcat的圖標(biāo)(轉(zhuǎn)載者注:一只小貓,另一只小貓身上帶著一個(gè)紅叉)。 現(xiàn)在我們來配置Sysdeo插件的參數(shù),在Eclipse里“Windows->Preferences”,選擇“Tomcat”標(biāo)簽,選擇“Version 5.x”版本,然后修改參數(shù)“Tomcat Home”為“{Liferay}\ext\servers\tomcat”,在我這里也就是“D:\liferay\ext\servers\tomcat ”;修改參數(shù)“Configuration File”為“{Liferay}\ext\servers\tomcat\conf\server.xml”,在我這里也就是“D:\liferay\ext\servers\tomcat\conf\server.xml”。 接著我們要繼續(xù)給Tomcat執(zhí)行的JVM虛擬機(jī)增加運(yùn)行參數(shù),啟用JAAS支持以及擴(kuò)大默認(rèn)內(nèi)存占用量,也就是展開“Tomcat”標(biāo)簽,選擇“JVM Settings”,在“Append to JVM Parameters”選擇“Add”,先添加 -Djava.security.auth.login.config=d:\liferay/ext/servers/tomcat/conf/jaas.config 再添加 -Xmx512m 還要在這里修改Tomcat運(yùn)行所使用的虛擬機(jī),要注意這里必須指定一個(gè)JDK附帶的虛擬機(jī)而不可以指向JRE附帶的虛擬機(jī)環(huán)境,否則Tomcat在運(yùn)行過程中會(huì)出現(xiàn)錯(cuò)誤。如果這里的下拉選項(xiàng)沒有出現(xiàn)與JDK中虛擬機(jī)有關(guān)的選項(xiàng),那么我們要首先手動(dòng)建立一個(gè),我們需要到Java標(biāo)簽下的“Installed JREs”,選擇“Add”,“JRE home directory”選擇“C:\j2sdk1.4.1_07”,給這個(gè)JRE環(huán)境起個(gè)名字,比如“J2SDK1.4.1_07”,之后點(diǎn)Ok保存設(shè)置,再重新開啟“Window->Preferences”對(duì)話框,到Tomcat的“JVM Settings”項(xiàng)選擇剛才建立的“J2SDK1.4.1_07”這個(gè)JRE就可以了。 這樣,只要再配置好Liferay的數(shù)據(jù)庫連接參數(shù),就可以通過點(diǎn)擊Eclipse里面的Tomcat圖標(biāo)啟動(dòng)Tomcat服務(wù)器了。 (轉(zhuǎn)載者注:可以通過瀏覽器測(cè)試。地址http://localhost:8080) -------------------------------------------------------------------------------- 3.3 配置數(shù)據(jù)庫和執(zhí)行Liferay 這里選擇了使用MySql數(shù)據(jù)庫,到MySql官方網(wǎng)站下載 MySql在Windows下的可執(zhí)行包mysql-5.0.21-win32.zip、 MySql的JDBC驅(qū)動(dòng)程序mysql-connector-java-3.1.12.zip、 MySql管理工具mysql-administrator-1.1.9-win.msi、 MySql數(shù)據(jù)查詢工具mysql-query-browser-1.1.20-win.msi、 MySql數(shù)據(jù)建模工具mysql-workbench-1.0.6-beta-win32.msi。 除JDBC驅(qū)動(dòng)外,其他幾個(gè)包都可以雙擊執(zhí)行安裝向?qū)瓿?。安裝完畢后,使用MySql數(shù)據(jù)查詢工具Query Browser連接數(shù)據(jù)庫,選擇“File->Open Script”載入D:\liferay\ext\sql\create 目錄下的create-mysql.sql 文件,點(diǎn)擊“Execute”按鈕執(zhí)行。刷新會(huì)發(fā)現(xiàn)得到了新的數(shù)據(jù)庫實(shí)例lportal。 使用MySql管理工具administrator,以root用戶連接數(shù)據(jù)庫,點(diǎn)“User Administration”,在左下方用戶賬號(hào)列表一欄點(diǎn)擊右鍵,建立新用戶liferay,輸入密碼sql606,點(diǎn)擊“Schema Privileges”標(biāo)簽,點(diǎn)擊lportal數(shù)據(jù)庫,把除了grant權(quán)限外的所有權(quán)限都給liferay這個(gè)用戶,點(diǎn)擊“Apply changes”按鈕保存這個(gè)新賬戶。這樣完成了數(shù)據(jù)導(dǎo)入以及建立MySql數(shù)據(jù)庫用戶的過程。 編輯D:\liferay\ext\servers\tomcat\conf\Catalina\localhost 目錄下的ROOT.xml文件,將其中的 <Resource name="jdbc/LiferayPool" auth="Container" type="javax.sql.DataSource" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:test" username="sa" password="" maxActive="20" /> 替換為 <Resource name="jdbc/LiferayPool" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8" username="liferay" password="sql606" maxActive="100" maxIdle="30" maxWait="10000" /> 請(qǐng)注意,這里如果按照官方文檔的說法設(shè)置會(huì)出現(xiàn)錯(cuò)誤,官方文檔將數(shù)據(jù)庫url中的“&”錯(cuò)誤地寫成了“&”,會(huì)造成Tomcat啟動(dòng)失敗。 再解壓MySql的JDBC驅(qū)動(dòng)程序mysql-connector-java-3.1.12.zip 中的mysql-connector-java-3.1.12-bin.jar 文件,復(fù)制到D:\liferay\ext\servers\tomcat\common\lib 目錄下,使得Liferay能夠找到MySql的JDBC驅(qū)動(dòng)。 這樣數(shù)據(jù)庫有關(guān)的內(nèi)容已經(jīng)全部配置完成,可以點(diǎn)擊Eclipse里面的Tomcat圖標(biāo)啟動(dòng)Liferay了,如果沒有出現(xiàn)錯(cuò)誤,那么已經(jīng)可以用瀏覽器訪問http://localhost:8080 訪問到Liferay Professional版本的Tomcat服務(wù)。 這里要注意,Sysdeo插件與Liferay的Tomcat綁定二進(jìn)制包默認(rèn)指定的Hypersonic數(shù)據(jù)庫驅(qū)動(dòng)有沖突,所以我們?cè)诒竟?jié)使用了MySql數(shù)據(jù)庫。如果一定要使用Hypersonic數(shù)據(jù)庫的話,就不能通過Sysdeo插件啟動(dòng)Tomcat,而需要直接執(zhí)行D:\liferay\ext\servers\tomcat\bin 目錄下的startup.bat來啟動(dòng)。 -------------------------------------------------------------------------------- 3.4 完成一個(gè)最簡(jiǎn)單的JSP的Portlet 我們通過完成一個(gè)最簡(jiǎn)單的類似Hello World那樣的JSP Portlet來展示Portlet的基本組成部分,更復(fù)雜的功能或者基于Structs等框架的Portlet請(qǐng)參見后續(xù)文檔。 在D:\liferay\ext\ext-web\docroot\html\portlet\ext 目錄建立一個(gè)新的文件夾myjspportlet 。接著打開D:\liferay\ext\ext-web\docroot\WEB-INF 文件夾下的portlet-ext.xml 文件進(jìn)行編輯,加入對(duì)這個(gè)即將建立的新Portlet的描述,如下: <portlet> <portlet-name>EXT_2</portlet-name> <display-name>My JSPPortlet</display-name> <portlet-class>com.liferay.portlet.JSPPortlet</portlet-class> <init-param> <name>view-jsp</name> <value>/portlet/ext/myjspportlet/view.jsp</value> </init-param> <expiration-cache>300</expiration-cache> <supports> <mime-type>text/html</mime-type> </supports> <portlet-info> <title>My JSP Portlet</title> </portlet-info> <security-role-ref> <role-name>Power User</role-name> </security-role-ref> <security-role-ref> <role-name>User</role-name> </security-role-ref> </portlet> 其中各項(xiàng)的含義為: portlet-name 描述此Portlet的規(guī)定名稱,這個(gè)名稱必須是唯一不重復(fù)的。 display-name 記錄此Portlet在Portal中的顯示名稱,在將Portlet加入到Portal中時(shí)如果看到了這個(gè)名字,那么就可以找到現(xiàn)在編寫的這個(gè)Portlet組件,此名稱不必是唯一的。 portlet-class 描述與此Portlet對(duì)應(yīng)的Java類的完整路徑。 init-param 通過name/value對(duì)的形式指定此Portlet初始化時(shí)的參數(shù)。 expiration-cache 定義Portlet輸出緩存的超時(shí)時(shí)間,以秒為單位,超出這里指定的時(shí)間后就認(rèn)為Portlet的輸出已經(jīng)超時(shí)了,如果這里是-1則說明輸出永遠(yuǎn)不超時(shí)。 supports 包括所支持的MIME格式,同時(shí)定義對(duì)一種特定的MIME格式,此Portlet所支持的模式,所有的Portlet都必須支持View模式。 portlet-info 定義Portlet有關(guān)的信息。 security-role-ref 包含Web應(yīng)用與系統(tǒng)角色之間的映射,在Liferay中,這里表示什么樣的角色有權(quán)限訪問此Portlet。(一般來講,Power User有權(quán)個(gè)人化Portal,而User無權(quán)進(jìn)行個(gè)人化) 現(xiàn)在我們已經(jīng)完成了對(duì)Portlet的描述,現(xiàn)在我們建立此Portlet的JSP頁面,到剛才創(chuàng)建的myjspportlet目錄下,建立一個(gè)名為init.jsp的文件,加入如下兩行: <%@ include file="/html/common/init.jsp" %> <portlet:defineObjects /> 這兩行導(dǎo)入了每個(gè)Portlet都要包含的公共class文件以及公共變量,如果需要導(dǎo)入此Portlet專用的類或者進(jìn)行此Portlet專用的變量的初始化,那么可以仿照common/init.jsp 文件中的寫法寫在myjspportlet目錄下的init.jsp文件中。 再添加一個(gè)名為view.jsp的文件,此文件將包含Portlet要輸出的內(nèi)容,再文件中寫入“Hello [your name here]!”。Portal能夠找到并且執(zhí)行這個(gè)JSP文件是因?yàn)槲覀冊(cè)趐ortlet-ext.xml文件中的init-param標(biāo)簽指定了view-jsp參數(shù)的值是/ext/myjspportlet/view.jsp ,這個(gè)JSP文件就被作為默認(rèn)的JSP頁面被顯示了。 最后,我們需要在D:\liferay\ext\ext-ejb\classes\content 目錄下的Language-ext.properties 文件中加入下面這行,才能在Portal中加入我們創(chuàng)建的這個(gè)Portlet: javax.portlet.title.EXT_2=My JSP Portlet 因?yàn)槲覀円呀?jīng)創(chuàng)建了擴(kuò)展開發(fā)環(huán)境,因此我們可以通過Ant腳本來向Portal添加我們新創(chuàng)建的這個(gè)Portlet。在Eclipse的Ant視圖中,導(dǎo)入D:\liferay\ext 目錄下的build.xml文件,之后執(zhí)行deploy [default]這個(gè)Ant任務(wù),就可以完成新Portlet的發(fā)布。當(dāng)這個(gè)任務(wù)執(zhí)行完畢,啟動(dòng)Tomcat,登陸系統(tǒng),就可以在“添加內(nèi)容”功能中找到我們新創(chuàng)建的Portlet了。 -------------------------------------------------------------------------------- 4. 改進(jìn)和調(diào)試Liferay自身代碼 本節(jié)將建立一個(gè)編譯、調(diào)試Liferay自身代碼的環(huán)境。如果希望參與Liferay社區(qū)對(duì)Liferay Portal的改進(jìn)開發(fā)、提交補(bǔ)丁等,則需要按照本節(jié)的說明配置開發(fā)環(huán)境。 此外,本節(jié)也能建立一種開發(fā)和調(diào)試Portlet組件的環(huán)境,依賴于Orion服務(wù)器的熱部署特性,能夠?qū)崿F(xiàn)對(duì)Portlet組件的實(shí)時(shí)調(diào)試。但是,由于本節(jié)的調(diào)試環(huán)境是一個(gè)完整的J2EE環(huán)境,因此也是比基于Tomcat的方法更為沉重龐大的選擇,也說不上簡(jiǎn)潔高效。具體做Portlet開發(fā)時(shí)還要根據(jù)自己工作的具體狀況和對(duì)J2EE的熟悉程度選擇一種Portlet開發(fā)環(huán)境。 -------------------------------------------------------------------------------- 4.1 安裝Orion服務(wù)器 Liferay官方在開發(fā)時(shí)使用的就是Orion服務(wù)器,因此雖然可以使用其他的J2EE Server配置開發(fā)環(huán)境,我們還是選擇了Orion。而且Orion服務(wù)器對(duì)開發(fā)者和非商業(yè)應(yīng)用提供一個(gè)免費(fèi)使用的授權(quán),同時(shí)文檔支持和應(yīng)用程序的熱部署功能也不錯(cuò),還是值得推薦的。 首先到Orion的官方網(wǎng)站http://www. 下載Orion服務(wù)器的二進(jìn)制文件,我選擇的是2.0.6版本,那會(huì)是一個(gè)zip壓縮包。將這個(gè)壓縮包中的內(nèi)容解壓到C:\j2sdk1.4.1_07\orion 目錄下。這時(shí)進(jìn)入這個(gè)目錄,使用“java -jar orion.jar”指令應(yīng)該能夠在http://localhost 上運(yùn)行起來了。 -------------------------------------------------------------------------------- 4.2 在Eclipse中配置Orion 在Eclipse中通過“Run->Debug..”菜單進(jìn)入Debug環(huán)境設(shè)置對(duì)話框。在“Java Application”下面有個(gè)“orion”標(biāo)簽,我們需要修改這個(gè)標(biāo)簽下面的參數(shù)。 “Main”標(biāo)簽下的“Project”項(xiàng)需要改為“Portal”,原來寫的是“ext”,其他的選項(xiàng)保持默認(rèn)的即可,也即“Main class”一項(xiàng)仍保持為“com.evermind.server.ApplicationServer”。 “Arguments”標(biāo)簽下,開始Eclipse會(huì)報(bào)錯(cuò),說“${ORION_HOME}”變量沒有定義,我們點(diǎn)擊“Program arguments”欄目下的“Variables”按鈕,在新彈出的對(duì)話框中點(diǎn)擊“Edit Variables...”按鈕,點(diǎn)擊“New”,“Name”項(xiàng)輸入“ORION_HOME”,“Value”項(xiàng)輸入“C:\j2sdk1.4.1_07\orion”,點(diǎn)擊3次Ok關(guān)閉對(duì)話框。這樣“Program arguments”欄仍保持為“-config ${ORION_HOME}/config/server.xml -userThreads”;“VM arguments”還保持為“-Xbootclasspath/a:${workspace_loc}\portal\lib\xercesImpl.jar;${workspace_loc}\portal\lib\xml-apis.jar -Xmx512m -Dfile.encoding=UTF-8 -Duser.timezone=GMT”。 在“Classpath”標(biāo)簽下,將“User Entries”下帶環(huán)境變量的orion.jar引用路徑刪除,然后點(diǎn)擊“Add External JARs”按鈕,重新添加本機(jī)上的orion.jar庫文件。 在“JRE”標(biāo)簽,選擇“Alternate JRE”,改為“j2sdk1.4.1_07”,如果這里使用純JRE的運(yùn)行環(huán)境而不是JDK附帶的運(yùn)行環(huán)境,很可能會(huì)造成Orion運(yùn)行中的一些編譯類的錯(cuò)誤。 -------------------------------------------------------------------------------- 4.3 修改Orion配置參數(shù) 編輯C:\j2sdk1.4.1_07\orion\config\server.xml 文件,在行 <web-site path="./default-web-site.xml" /> 下面添加行 <web-site path="./web-sites/portal.liferay.com-web.xml" /> 。 并且加入行 <compiler executable="jikes" classpath="C:\j2sdk1.4.1_07/jre/lib/rt.jar" /> 來啟用jikes編譯器。其中C:\j2sdk1.4.1_07/jre/lib/rt.jar 指向JDK附帶的JRE運(yùn)行環(huán)境庫。如果不啟用jikes,則會(huì)使用sun的JDK附帶的編譯器,可能與Liferay代碼造成沖突,因此建議啟用jikes。 建立新目錄C:\j2sdk1.4.1_07\orion\config\web-sites ,在其中建立文件portal.liferay.com-web.xml ,文件內(nèi)容如下: <?xml version="1.0" ?> <!DOCTYPE web-site PUBLIC "Orion Web-site" "http://www./dtds/web-site.dtd"> <web-site host="[ALL]" port="8080"> <default-web-app application="default" name="portal.liferay.com-web" load-on-startup="true" /> <!-- <web-app application="default" name="test-web" root="/test" load-on-startup="false" /> --> <web-app application="default" name="portal-web" root="/portal" load-on-startup="true" /> <web-app application="default" name="tunnel-web" root="/tunnel" load-on-startup="true" /> <!-- <web-app application="default" name="axis-web" root="/axis" load-on-startup="false" /> --> <access-log path="../../log/default-web-access.log" /> </web-site> 我沒有找到test-web和axis-web包,因此我沒有啟用這兩項(xiàng)。 編輯C:\j2sdk1.4.1_07\orion\config\application.xml文件,添加如下行: [Get Code] <!-- START --> <ejb-module id="counter-ejb" path="../applications/counter-ejb.jar" remote="false" /> <ejb-module id="documentlibrary-ejb" path="../applications/documentlibrary-ejb.jar" remote="false" /> <ejb-module id="lock-ejb" path="../applications/lock-ejb.jar" remote="false" /> <ejb-module id="mail-ejb" path="../applications/mail-ejb.jar" remote="false" /> <ejb-module id="portal-ejb" path="file:D:/liferay/portal/portal-ejb/classes" remote="false" /> <web-module id="portal-web" path="file:D:/liferay/portal/portal-web/docroot" /> <web-module id="portal.liferay.com-web" path="file:D:/liferay/portal/web-sites/liferay.com-web/docroot" /> <web-module id="tunnel-web" path="../applications/tunnel-web.war" /> <!-- --> <mail-session location="mail/MailSession" smtp-host="smtp.server.com"> <description>description</description> <property name="mail.from" value="mail.sender@server.com" /> <property name="mail.transport.protocol" value="smtp" /> <property name="mail.smtp.from" value="mail.sender@server.com" /> </mail-session> <user-manager class="com.evermind.sql.DataSourceUserManager"> <property name="dataSource" value="jdbc/LiferayPool" /> <property name="table" value="User_" /> <property name="usernameField" value="userId" /> <property name="passwordField" value="password_" /> <property name="defaultGroups" value="users" /> <property name="staleness" value="0" /> </user-manager> <!-- END --> 官方文檔說如果使用了“80%9d\j2sdk1.4.1_07\orion\applications\bf%99a0e7%9a%84ae%9abd%8d96e58fbc%8c88%99a6%81bf%9daf%819cgreen%C:' rel='nofollow'>file:”這樣的定位方式,則要保證在C: 目錄中沒有portal-ejb.jar文件,通常這個(gè)文件產(chǎn)生于Ant腳本的Deploy過程。不過我不清楚官方文檔為什么提出這一點(diǎn),也沒發(fā)現(xiàn)有什么影響??赡苋绻嬖谶@個(gè)jar文件,則源碼目錄下的classes文件都會(huì)被覆蓋,這樣如果只是修改并編譯了源碼目錄下的classes文件,很可能由于jar文件的覆蓋而沒法生效,給調(diào)試帶來麻煩。 接著配置MySql數(shù)據(jù)源,參考3.3節(jié) 配置數(shù)據(jù)庫和執(zhí)行Liferay的做法,在數(shù)據(jù)庫中建立與Liferay對(duì)應(yīng)的數(shù)據(jù)庫lportal,將MySql的Java版本驅(qū)動(dòng)的jar文件復(fù)制到C:\j2sdk1.4.1_07\orion\lib 目錄下。再編輯C:\j2sdk1.4.1_07\orion\config\data-sources.xml ,使之內(nèi)容如下: <?xml version="1.0"?> <!DOCTYPE data-sources PUBLIC "Orion data-sources" "http://www./dtds/data-sources.dtd"> <data-sources> <!-- An example/default DataSource that uses an ordinary JDBC-driver (in this case hsql) to create the connections. This tag creates all the needed kinds of data-sources, transactional, pooled and EJB-aware sources. The source generally used in application code is the "EJB" one - it provides transactional safety and connection pooling. --> <data-source class="com.evermind.sql.DriverManagerDataSource" name="Liferay" location="jdbc/LiferayCore" pooled-location="jdbc/LiferayPool" xa-location="jdbc/xa/LiferayXA" ejb-location="jdbc/LiferayEJB" connection-driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/lportal" username="liferay" password="sql606" inactivity-timeout="30" schema="database-schemas/" /> </data-sources> -------------------------------------------------------------------------------- 4.4 修改Liferay的配置文件 Liferay使用一個(gè)名為portal.properties 的文件來配置一些重要的參數(shù),但我們一般不要直接修改這個(gè)文件,而是另外寫一個(gè)配置文件來覆蓋里面的設(shè)置即可,這樣可以比較容易地使我們的修改與Liferay的官方設(shè)置相兼容。在D:\liferay\portal\util-java\classes 目錄下建立一個(gè)名為portal-ext.properties的文件(官方文檔寫這個(gè)文件的存放位置寫錯(cuò)了)。填寫這個(gè)文件的內(nèi)容為: portal.ctx=/portal -------------------------------------------------------------------------------- 4.5 向Orion上部署Liferay系統(tǒng) 在D:\liferay\portal\ 目錄建立一個(gè)app.server.{username}.properties 文件,在我的機(jī)器上就是app.server.Administrator.properties 文件({username}的含義參考“3.1節(jié) 配置擴(kuò)展開發(fā)環(huán)境”,文件內(nèi)容為 app.server={orion} 在我這寫的就是 app.server=C:/j2sdk1.4.1_07/orion 到Eclipse的Ant視圖順序執(zhí)行portal項(xiàng)目中的start和deploy任務(wù)。記得刪除portal-ejb.jar文件。 在Eclipse中用Debug界面啟動(dòng)Orion,這時(shí)應(yīng)該可以在http://localhost:8080 看到啟動(dòng)的Liferay了。(如果Ant腳本運(yùn)行的時(shí)候說什么javac類找不到,那么調(diào)整Eclipse菜單中的:Windows->Preferences窗口中的Ant配置,把JDK的lib目錄下的tools.jar文件顯式引用進(jìn)去,就一切正常了(不可以是JRE的lib目錄下的tools.jar文件,那不一樣)。) -------------------------------------------------------------------------------- 4.6 另一種調(diào)試Portlet組件的方法 在Liferay的portal源碼工作環(huán)境下,還有一種開發(fā)調(diào)試Portlet組件的方法。我們用D:\liferay\portal\portlets\sample-jsp-portlet.war 這個(gè)Liferay自帶的Portlet作為例子。 我們將D:\liferay\portal\portlets\sample-jsp-portlet.war 目錄復(fù)制成為D:\liferay\sample-jsp-portlet 目錄,之后修改C:\j2sdk1.4.1_07\orion\config\application.xml文件,添加如下行 <web-module id="sample-jsp-portlet" path="file:D:/liferay/sample-jsp-portlet" /> 再修改C:\j2sdk1.4.1_07\orion\config\web-sites\portal.liferay.com-web.xml 文件,在其中添加如下行 <web-app application="default" name="sample-jsp-portlet" root="/sample-jsp-portlet" load-on-startup="true" /> 之后重啟Orion,登陸Liferay后就可以在“Add Content”界面的Test類別中找到這個(gè)sample-jsp-portlet。 |
|