Liferay使用心得

 
Liferay是一個出色的Java開源Portal產品,其中整合了很多當今流行的開源框架,也被不少人使用在實際項目中。最近剛結束了一個基於Liferay Portal的項目,總結下使用中的一些心得,希望對正在使用Liferay的朋友有些幫助。
 
一、安裝
Liferay的安裝十分容易,甚至都不能稱其爲安裝,根據情況從Liferay官方網站下載合適的安裝包(一般可以選擇Tomcat的Bundle),解壓後直接運行,它會使用自帶的HSQL數據庫,其中包括一些初始數據和演示數據。
實際使用時不能用HSQL,也不應該有演示數據,所以可以用Liferay站點提供的SQL來初始化數據庫。Liferay-portal-sql的包比較大,只要用其中的幾個SQL就行了,如果是全新安裝,用create-minimal目錄中適合自己數據庫的那個SQL文件就可以了。
啓動tomcat前,修改conf/Catalina/localhost中的ROOT.xml,啓用新的數據源,Hibernate的Dialect系統會自動識別的。
 
二、Portal細節配置
Liferay的可配置性極強,可以通過兩個部分來配置,一是portal-ext.properties文件,二是進入系統後用企業管理Portlet來配置。
要了解portal-ext有哪些可以配置的參數,可以打開portal-impl.jar中的portal.properties,其中對每個屬性都帶有詳細的說明,portal-ext.properties會覆蓋其中的配置。
列舉幾個個人認爲比較有用的設置:
1.登錄相關(這個可以在企業管理裏設置)
company.security.auth.type=screenName
company.security.auto.login=false
company.security.send.password=false
company.security.strangers=false
open.id.auth.enabled=false
 
2. 默認用戶佈局
可以自己設置上面要放的Portlet。
default.user.layout.name=Home
default.user.layout.template.id=3_columns
default.user.layout.column-1=
default.user.layout.column-2=
default.user.layout.column-3=
default.user.layout.column-4=
 
3. Session控制
session.timeout=30
session.timeout.warning=1
session.timeout.auto.extend=false
 
4.無法顯示的portlet設置
我本來在JavaEye上問怎麼隱藏沒權限的Portlet呢,結果後來看到了這個配置。
layout.show.portlet.access.denied=false
layout.show.portlet.inactive=false
 
其他的設置還有很多,比如terms.of.use.required、theme.sync.on.group、auth.forward.by.last.pathdefault.landing.page.path等等,請參考portal.properties吧。如果不想修改配置文件也能用企業管理Portlet,它們有些地方是互補的,所以結合起來看看吧。
 
三、簡單性能優化
項目中使用的是一臺Intel 3.20GHz雙核 2G內存的IBM服務器,操作系統爲Windows 2000 SP4,數據庫爲Oracle 9i,安裝在另一臺服務器上。
Liferay的默認設置在運行時總是感覺有些力不從心,有時響應速度很慢,開發時可以接受,但實際上線時肯定需要進行調整。因爲沒什麼調優經驗,所以隨便對Tomcat和Liferay的參數做了些調整,僅供參考:
首先修改Tomcat 5.5的JVM的參數,考慮到服務器上還有其他服務,JAVA_OPTS中,-Xms512m –Xmx1024m,因爲把JDK換成了jrockit-R27.4.0-jdk1.6.0_02,所以沒有設置-XX:MaxPermSize。
然後安裝Tomcat Native library,就是APR啦。
接下來修改server.xml,找到HTTP/1.1的Connector,調整maxThreads、minSpareThreads、maxSpareThreads和acceptCount的值,適當調高些,並啓用gzip壓縮。我的配置是這樣的:
 
<Connector port="80" maxHttpHeaderSize="8192"
     maxThreads="768" minSpareThreads="128" maxSpareThreads="256"
     enableLookups="false" redirectPort="8443" acceptCount="768"
     connectionTimeout="30000" disableUploadTimeout="true"
     compression="on" compressionMinSize="2048"
     noCompressionUserAgents="gozilla, traviata"
     compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
     />
 
修改好應用服務器後,再來看看Liferay。打開portal-ext.properties,添加如下內容:
 
portlet.css.enabled=false
javascript.fast.load=true
theme.css.fast.load=true
velocity.engine.resource.manager.cache.enabled=true
 
經過了以上這些步驟後,都不用什麼工具測試,可以明顯感覺系統速度快了不少。
 
四、一些問題
1.糟糕的中文翻譯
雖說Liferay的作者是華裔的,不過那中文翻譯實在不敢恭維,好在網上有些網友自制的中文包,不過內容並不完全。可以自己增加或覆蓋中文語言信息,文件名是Language-ext_zh_CN.properties,放在WEB-INF/classes/ content目錄中,至於其中的內容參考下portal-impl.jar裏的資源包,記得使用前先native2ascii轉換一下。
 
2.控制檯信息
Liferay的控制檯輸出時區不對,且中文有亂碼。在企業管理Portlet的設置中將時區設置爲(GMT +08:00)CST可以解決時間問題。
控制檯的中文亂碼有兩種解決方法,一是在catalina.bat中去掉JAVA_OPTS裏的-Dfile.encoding=UTF8;另一種就是conf/logging.properties,加上java.util.logging.ConsoleHandler.encoding = GBK,建議用後者吧。其實說白了就是因爲Windows用的編碼是GBK。
 
3.Document Library文件名亂碼
Document Library Portlet提供了文件上傳和下載的功能,可惜上傳的中文名在下載時都會亂碼,原先以爲是一般的中文亂碼問題,在Liferay自己的web.xml中補上了一段Spring的編碼轉換Filter聲明,結果發現不行,看了源代碼後才知道它直接用servlet進行文件下載,而問題還是出在Windows是GBK上。
也懶得想什麼好辦法了,直接修改com.liferay.portlet.documentlibrary.action.GetFileAction文件,在第128行,把ServletResponseUtil.sendFile參數中的fileEntry.getTitleWithExtension()改成new String(fileEntry.getTitleWithExtension().getBytes("GBK"),"ISO8859_1")。這樣可以解決Windows下的亂碼,別的不做保證,最好能事先判斷下編碼,有些系統默認編碼是UTF-8,轉了反而會出問題。
 
4.關於默認用戶權限
Liferay默認新建用戶的角色是User和Power User,每個用戶可以有自己的私有頁面,不過有時不希望出現這個私有的Community,在企業管理Portlet中可以調整默認用戶的設置(默認Community、Role和User group),我去掉了Power User角色。
但問題也隨之而來,要求用戶強制在第一次登錄時修改密碼,修改後出現沒有爲用戶配置頁的提示,而且放在Guest裏的文檔庫普通用戶也無法下載。鬱悶了老半天之後,只能爲所有的用戶都分配了一個Community才把問題解決(我直接把用戶扔進Guest Community了)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章