从现在开始,会把我最近在研究的开源Portal Liferay一些心得贴出来。研究
Liferay
版本:
Liferay Professional 4.0.0
柯自聪
兄弟写过一系列的
Liferay Portal
开发文章,参考
http://www.blogjava.net/eamoi/
。所以基础性内容,本文不再细说,可参考柯自聪的文章或
Blog
。
(一)部署Liferay Portlet
Liferay简单部署一个portlet并不是很复杂,通过WEB-INF目录下的portlet.xml、liferay-portlet.xml、liferay-display.xml描述即可。
|
描述
|
portlet.xml
|
portlet.xml
用来定义
Portlet
的诸如部署名称、初始化参数、支持模式、
resource bundle
等普通的初始化信息,包括:
portlet-name
、
display-name
、
portlet-class
、
init-param
、
expiration-cathe
、
supports
、
portlet-info
、
security-role-ref
等等。其正式的规范请参考:
http://java.sun.com/xml/ns/Portlet/Portlet-app_1_0.xsd
|
liferay-portlet.xml
| |
liferay-display.xml
|
定义
Portlet
默认的所属类别。
Liferay Portal
对
Portlet
实行按类别管理和划分用户权限。
|
Liferay是基于Struts Template页面模版技术来实现页面的,所以Liferay默认提供了com.liferay.portlet.StrutsPortlet这个Portlet Class来完成Portlet处理的;当然为了简单对普通jsp页面的处理,Liferay也提供了com.liferay.portlet.JSPPortlet等其他Portlet Class。
Liferay扩展了Portlet Mode,增加了about,config,preview,print等几种模式。所以,开发人员基于Liferay进行扩展Portlet Class需要基于com.liferay.portlet.LiferayPortlet。当然,允许直接继承javax.portlet.GenericPortlet进行扩展。
(二)部署Liferay
应用在新下载的Tomcat
上
这一块耗费我不少时间,因为
Liferay
采用了其修改后的
Tomcat
(实际上是
Tomcat5.5
,这是我后来才知道的)。
但我很不喜欢
Liferay
这种绑定方式,而且默认开发必须采用其层层
Ant Build
方式,并且绑定其
Tomcat
或其他其修改后提供的
server
。——
当然,在
Liferay
可能认为这样可以减少开发人员对环境配置的关心。
让我来看看,如何在一个新下载的
Tomcat5.0.28
上成功部署
Liferay
应用:
(1)
首先把
liferay
工程目录放置
Tomcat_Home/
目录下,当然,你可以放置在
Tomcat_Home/web-apps
目录下。
(2)
其次,需要把
liferay
默认的目录下的
Common/lib/ext
目录下的一些
jar
包
copy
到
Tomcat_Home/common/lib
目录下。注意,不要放置在
ext
目录下,默认
tomcat5.0.28
是不自动加载
ext
目录下的
jar
包的,这跟
Tomcat5.5
不同。这些
jar
包主要是:
hsql.jar
,
commons-logging.jar
,
log4j.jar
这三个。
(3)
把
liferay
默认的目录下的
Common/lib/ext
中的
portal-shared.jar
和
portlet.jar
,可以移到
liferay
应用的
WEB-INF/lib
中。
(4)
拷贝
Root.xml
到
Tomcat_Home/conf/Catalina/localhost
目录下,配置
webcontext
信息。并在此配置
DataSource
。注意,
liferay
的默认运行中的配置是
Tomcat5.5
的写法,所以此处配置
DataSource
的写法,就必须更改为
Tomcat5.0
的写法。否则,运行过程中会抛“
Cannot create JDBC driver of class '' for connect URL 'null'
”异常
。
<Context docBase="D:/
Tomcat5028/ liferay
" path="" reloadable="true">
<Resource
name="jdbc/LiferayPool" auth="Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/LiferayPool">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
XXX
(其他配置,此处略)
</ResourceParams>
</Context>
有关
Liferay
对连接池的引用,可以去
Portal.properties
配置文件中修改。默认此配置文件已经被打在了
liferay
的
portal-ejb.jar
中。
|
(5)
配置
jaasconf
。讲
jaas.config
文件放置在
Tomcat_Home/conf
目录下。并在
catalina.bat
文件中增加
-Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.config
来设置
jaas
的配置
。当然,这首先一定要保证在前面的
Root.xml
的
Context
中配置
JAASRealm
。
//
注意,暂时必须把liferay应用配置成为默认根应用,否则不可以正确运行。
<Context docBase="D:/ Tomcat5028/ liferay " path="" reloadable="true">
<Realm className="org.apache.catalina.realm.JAASRealm"
appName="PortalRealm"
userClassNames="com.liferay.portal.security.jaas.PortalPrincipal"
roleClassNames="com.liferay.portal.security.jaas.PortalRole"
debug="99"
useContextClassLoader="false" />
</Context>
|
在
jaas.config
的文件中,设置如下内容:
PortalRealm
{
com.liferay.portal.shared.security.jaas.PortalLoginModule required;
};
|
Jaas是需要被正确配置的,否则系统不可以正确登陆,而且会一直不断的访问/jaas_securit_check,而不能登陆。
基本上进行如上操作之后,即可在
Tomcat5.0.28
下单独运行。