LifeRay Portal606学习手册.docx
《LifeRay Portal606学习手册.docx》由会员分享,可在线阅读,更多相关《LifeRay Portal606学习手册.docx(28页珍藏版)》请在冰点文库上搜索。
LifeRayPortal606学习手册
LiferayPortal6.0.6
学习笔记
作者:
李少华
邮箱:
xiaosanshaoli@
QQ:
305409913
2011-11-03初稿
刚刚开始学习使用LiferayPortal,希望能在上面做二次开发。
网上的资料非常丰富,为了学习方便,自己也整理了两周来学习的笔记,以作后面的参考。
因为比较仓促,所以内容可能有错误,希望能指出并更正。
文档也以doc文档而不是pdf,就是方便大家能继续添加内容,发扬开源的精神,互相学习。
开发环境:
JDK1.6
Eclipse3.7
Tomcat6.0.33
MySQL5(Oracle10g)
Winows7旗舰版
示例源码请联系我获取。
1.LifeRayPortal初体验
登录LifeRayPortal官网
liferay-portal-tomcat-6.0.6-20110225.zip
liferay-plugins-sdk-6.0.6-20110225.zip---liferayportalSDK
liferay-ide-eclipse-updatesite-1.3.1.zip---liferayportalIDE
liferay-portal-src-6.0.6-20110225.zip---liferayportal源码
把liferay-portal-tomcat-6.0.6-20110225.zip解压在本地磁盘,目录结构如下:
不多做解释,网上入门的资料很多。
它里面自带了一个tomcat-6.0.29,进入tomcat的bin目录
(D:
\liferay-portal-6.0.6\tomcat-6.0.29\bin)下,双击startup.bat启动tomcat,启动成功后就会自动打开一个IE窗口:
http:
//localhost:
8080
test@
修改显示类型的语言为简体中文,OK,好好的体验LifeRayPortal吧。
2.安装一个纯净版的Eclipse、
下载一个JavaEE版本的Eclipse,网址:
http:
//www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr1
选择工作空间D:
\workspaceI,windows---preferences,选择general下额Workspace项,设置工作空间编码格式为UTF-8;
3.解压LifeRayportal源码
把liferay-portal-src-6.0.6-20110225.zip放入工作空间D:
\workspaceI,右键解压到当前文件夹,重命名解压后的文件夹liferay-portal-src-6.0.6名字为portal;目录结构如下:
4.导入LifeRayportal源码
File---Import---General---ExistingProject。
。
。
选择D:
\workspaceI\portal,finish
工程编译后不报错就导入成功了!
如下图所示:
5.配置开发环境参数
找到工程目录下的app.server.properties文件,打开,配置Tomcat的主要配置信息截图如下:
参数解析:
app.server.parent.dir=${project.dir}/../bundles
app.server.tomcat.dir=${app.server.parent.dir}/tomcat-6.0.29
上面两个参数指定了Tomcat的所在地和版本信息:
首先,Tomcat位于工程同等目录下的bundles目录下;
其次,tomcat的文件夹名是tomcat-6.0.29;
当前我的Eclipse工作空间是D:
\workspaceI,工程名字是portal,因此,新建文件夹bundles,和工程portal同级目录,准备在它下面存放tomcat服务器。
app.server.tomcat.zip.name=apache-tomcat-6.0.29.zip
app.server.tomcat.zip.url=http:
//archive.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/${app.server.tomcat.zip.name}
这两个参数主要用于指定tomcat的zip文件夹路径,因为在Ant的builder.xml中会先判断bundles下是否存在tomcat-6.0.29目录,如果存在在先删除该目录,再通过ZIP解压一个纯净的Tomcat出来。
如果ZIP文件也没有,则指定ZIP的url先下载(可以看出它是tomcat的官网下载地址哎)一个。
我们当然不会下载了,主要指定ZIP文件路径即可。
我在官网上下载的tomcat是
apache-tomcat-6.0.33-windows-x86.zip,解压后文件名是
apache-tomcat-6.0.33
因此,先把apache-tomcat-6.0.33-windows-x86.zip存放在bundles下,然后指定一下三个参数:
app.server.tomcat.dir=${app.server.parent.dir}/apache-tomcat-6.0.33
app.server.tomcat.zip.name=apache-tomcat-6.0.33-windows-x86.zip
app.server.tomcat.zip.url=${app.server.parent.dir}/${app.server.tomcat.zip.name}
指定从bundles找到tomcat的zip包apache-tomcat-6.0.33-windows-x86.zip,然后解压到bundles目录下,文件夹名为apache-tomcat-6.0.33;
(主要一定要确认ZIP解压后就是你上面定义好的解压目录名哦)
如果不希望Tomcat放在工程同级目录下,已经存在于其他目录,比如你的Tomcat路径是:
D:
\javaWares\apache-tomcat-6.0.33,则配置下面这个参数:
app.server.parent.dir=D:
/javaWares
一定注意:
无论tomcat存放在哪个地方,都要指定ZIP的路径,因为我们使用liferay的build.xml时候,都会先删除存在的tomcat目录,在新解压一个纯净版的tomcat,更重要的是解压后会拷贝很重要的一些lib到tomcat的lib目录下的。
找到工程目录下的release.properties,打开查看:
这里指定需要编译的源码的路径,我们就是存在工程源码,所以指定到当前工程所在的文件夹即可,修改参数如下:
lp.source.dir=${project.dir}/..
6.ANT编译部署
Windows----showview---ANT,把ant放入控制台;拖放工程目录下的
build.xml,build-dist.xml和portal-web下的build.xml到ant工作空间,如下所示:
先执行portal-dist下的build-dist-tomcat,配置tomcat环境
依次顺序执行portal下的clean,compiler[defaule],deploy,start;
(----ANT执行异常处理---
如果执行ant时候抛出一下异常
Buildfile:
D:
\workspaceII\portal\build.xml
BUILDFAILED
D:
\workspaceII\portal\build.xml:
6:
Thefollowingerroroccurredwhileexecutingthisline:
D:
\workspaceII\portal\build-common.xml:
245:
.
PleasesettheenvironmentvariableANT_OPTStotherecommendedvalueof
"-Xmx1024m-XX:
MaxPermSize=256m".
Totaltime:
1second
需要配置ANT运行时的环境变量。
Ernalonfigurations
邮件build.xml----RunAs-----External。
。
。
选择Enviroment选项卡,创建新的环境变量
重新执行ant脚本。
)
执行完ANT任务,到目录D:
\workspaceIII\bundles\apache-tomcat-6.0.33\bin执行下startup.bat,启动tomcat;
启动tomcat成功后会发现,主动打开了IE窗口:
http:
//localhost:
8080/zh/
但是页面为空,查看tomcat日志信息:
这是因为LifeRay内置的theme木有安装,在Ant控制台,执行portal-web下的build-themes和deploy;
成功后看控制台提示信息:
build-vaadin:
compile:
build-common-web.deploy:
[copy]Copying1189filestoD:
\workspaceIII\bundles\apache-tomcat-6.0.33\webapps\ROOT
BUILDSUCCESSFUL
Totaltime:
12seconds
Theme安装到tomcat下了;
刷新IE页面,成功。
7.数据库切换
LeftRayportal默认的数据库是HSql,只做演示使用。
因此,我们需要考虑切换它的数据库到我们的开发数据库中。
从portal6的版本后,只需要修改配置文件就,启动时候可自由的切换数据库,而且会自动为数据库创建表结构。
建议使用MySQL数据库。
这里以Oracle10g数据库为例,说明如何切换数据库。
1.创建Oracle数据库ORCL,创建用户lportal\lportal;
2.在portal源码的portal-impl/src目录下新建portal-ext.properties,内容如下:
#Oracle10g
jdbc.default.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.default.url=jdbc:
oracle:
thin:
@10.10.10.76:
1521:
ORCL
jdbc.default.username=lportal
jdbc.default.password=lportal
#MySql
#jdbc.default.driverClassName=com.mysql.jdbc.Driver
#jdbc.default.url=jdbc:
mysql:
//localhost/lportal?
useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
#jdbc.default.username=root
#jdbc.default.password=root
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
不需要解释含义吧!
注意:
一定要指定hibernate的数据库方言,尤其是切换为ORACLE数据库;
3.重新执行ANT下的build.xml的clean,compiler[defaule],deploy,start四个任务;
执行完后,到Tomcat的\webapps\ROOT\WEB-INF\classes下会发现
(D:
\workspaceIII\bundles\apache-tomcat-6.0.33\webapps\ROOT\WEB-INF\classes)
portal-ext.properties已经存在其下了。
4.在Tomcat下添加驱动文件
D:
\workspaceI\bundles\apache-tomcat-6.0.33\lib下放入oracle的驱动文件ojdbc14.jar;
5.重新启动tomcat;
查看oracle数据库,发现多出159张portal所需要的表信息。
测试一下表的数据添加:
Test用户登录,管理—控制面板,选择门户—用户,新增用户,保存,添加密码!
OK,查看数据库,会发现,在user_新增了一条记录,就是刚新建的用户。
此时就可以用新建的用户登录了。
8.设置Debug模式
导入源码后,如何进行源码的单步调试呢?
可以通过设置tomcat服务器实现。
但是,前提前提条件是Eclipse必须安装LifeRayIDE和LifeRaySDK。
配置LifeRayIDE和SDK:
(已经配置安装的可以跳过此步)
首先:
从liferay官网下载LifeRayIDE
(liferay-ide-eclipse-updatesite-1.3.1.zip)和LifeRaySDK
(liferay-plugins-sdk-6.0.6-20110225.zip)。
从Eclipse中,选择Help---InstallNewSoftware…
选择add,Name:
LifeRayIDE,Location就是本地的IDE压缩包,确定。
只选择LifeRayIDE,下一步,直到安装成功,重启Eclipse。
如果出现下面图标,OK,LifeRayIDE安装成功。
安装LifeRaySDK,如下,NewLifeRaySDK:
选择解压后的SDK目录,OK。
确认后就成功了
下面,就可以设置LifeRayPortal的Debug模式了。
先添加一个Liferay服务器。
在Servers面板内右键newserver,添加一个LifeRayv6.0CEServer.
或者在通过如下按钮直接NewLifeRayServer
下一步,选择自定义的Tomcat的目录:
其他默认设置,直接Finish。
查看我们的server,会发现出现下面的标准:
OK,我们的自定义tomcat服务器设置完了。
现在设置它关联的源码:
1.双击新建的服务器:
选择OpenLunchConfiguration
2.在弹出框内,选择Source选项卡,Add,JavaProject,选择我们的Portal源码,确认。
现在,直接右键LifeRayV6.0CEServer,选择Debug模式就可以单步调试程序了。
Ctrl+Shif+R,输入MainServlet.java,在其service方法上添加断点,尝试调试下源码。
搞定!
9.基于Struts2的Portlet示例开发
9.1新建一个LifeRayProject
新建一个LifeRayProject:
StudentMan
右键项目StudentMan,BuildPath----ConfigBuildPath,在project下添加portal源码应用,如下图所示:
9.2使用buildservice生成简单表的CRUD操作
在src下新建包com.ecdata.liferay.student
在student包下新建service.xml,内容如下:
xmlversion="1.0"?
>
DOCTYPEservice-builderPUBLIC"-//Liferay//DTDServiceBuilder6.0.0//EN""
Library
remote-service="true">
--PKfields-->
--Otherfields-->
--finder-->
Student
保存后,会发现service.xml变成了一个小齿轮,如下图:
右键service.xml,选择liferay---BuildServices
此时会提示正在使用buildservice构建项目代码:
构建成功后,刷新项目工程,会发现在student包下多了很多的类:
在docroot/WEB-INF下也多了很多java文件
这就是通过配置service.xml文件,使用buildservice工具生成基类源码的过程(至于service.xml参数含义以及buildservice的其他使用方法,以后再解释)。
在包com.ecdata.liferay.student.service.impl下找到
StudentLocalServiceImpl.java文件,发现里面什么内容都没有,添加对student对象的CRDU方法如下:
publicStudentcreate(Studentmodel)throwsSystemException{
//注意portalUUID的获取是通过公共接口CounterLocalServiceUtil.increment产生滴
longid=CounterLocalServiceUtil.increment(Student.class.getName());
model.setStuId(id);
StudentnewModel=StudentUtil.create(model.getPrimaryKey());
newModel.setStuName(model.getStuName());
newModel.setAddress(model.getAddress());
newModel.setBirthday(model.getBirthday());
newModel.setSex(model.getSex());
StudentUtil.update(newModel,true);
returnnewModel;
}
publicStudentremove(longid)throwsNoSuchStudentException,
SystemException{
returnStudentUtil.remove(id);
}
publicStudentupdate(Studentmodel)throwsNoSuchStudentException,
SystemException{
StudentnewModel=StudentUtil.findByPrimaryKey(model.getStuId());
newModel.setStuName(model.getStuName());
newModel.setAddress(model.getAddress());
newModel.setBirthday(model.getBirthday());
newModel.setSex(model.getSex());
StudentUtil.update(newModel,true);
returnnewModel;
}
publicListfindAll()throwsSystemException{
returnStudentUtil.findAll();
}
publicListfindByStuName(StringstuName)throwsSystemException{
returnStudentUtil.findBystuName(stuName);
}
再次对service.xml文件执行buildeservice操作---一定要再次执行哦!
如下(其实和上面的buildeservice操作一样)
在包com.ecdata.liferay.student.service.impl下找到
StudentServiceImpl.java文件,发现里面什么内容都没有,添加对student对象的CRDU方法如下:
publicStudentcreate(Studentmodel)throwsSystemException{
returnStudentLocalServiceUtil.create(model);
}
publicStudentremove(longid)throwsNoSuchStudentException,SystemException{
returnStudentLocalServiceUtil.remove(id);
}
publicStudentupdate(Studentmodel)throwsNoSuchStudentException,
SystemException{
retu