1、LifeRay Portal606学习手册Liferay Portal6.0.6学习笔记 作者:李少华 邮箱:xiaosanshaoli QQ:3054099132011-11-03 初稿刚刚开始学习使用Liferay Portal,希望能在上面做二次开发。网上的资料非常丰富,为了学习方便,自己也整理了两周来学习的笔记,以作后面的参考。因为比较仓促,所以内容可能有错误,希望能指出并更正。文档也以doc文档而不是pdf,就是方便大家能继续添加内容,发扬开源的精神,互相学习。开发环境:JDK1.6Eclipse 3.7Tomcat6.0.33MySQL5 (Oracle10g)Winows7旗舰版
2、示例源码请联系我获取。1.LifeRay Portal初体验登录LifeRay Portal官网liferay-portal-tomcat-6.0.6-20110225.zip liferay-plugins-sdk-6.0.6-20110225.zip - liferay portal SDKliferay-ide-eclipse-updatesite-1.3.1.zip - liferay portal IDEliferay-portal-src-6.0.6-20110225.zip - liferay portal源码把liferay-portal-tomcat-6.0.6-201102
3、25.zip解压在本地磁盘,目录结构如下:不多做解释,网上入门的资料很多。它里面自带了一个tomcat-6.0.29,进入tomcat的bin目录(D:liferay-portal-6.0.6tomcat-6.0.29bin)下,双击startup.bat启动tomcat,启动成功后就会自动打开一个IE窗口:http:/localhost:8080test修改显示类型的语言为简体中文,OK,好好的体验LifeRay Portal吧。2.安装一个纯净版的Eclipse、下载一个Java EE版本的Eclipse,网址:http:/www.eclipse.org/downloads/package
4、s/eclipse-ide-java-ee-developers/indigosr1选择工作空间 D:workspaceI,windows-preferences,选择general下额Workspace项,设置工作空间编码格式为UTF-8;3.解压LifeRay portal源码把liferay-portal-src-6.0.6-20110225.zip放入工作空间D:workspaceI,右键解压到当前文件夹,重命名解压后的文件夹liferay-portal-src-6.0.6名字为portal;目录结构如下:4.导入LifeRay portal源码File-Import-General-
5、Existing Project。选择 D:workspaceIportal,finish工程编译后不报错就导入成功了!如下图所示:5.配置开发环境参数找到工程目录下的app.server.properties文件,打开,配置Tomcat的主要配置信息截图如下: 参数解析:app.server.parent.dir=$project.dir/./bundlesapp.server.tomcat.dir=$app.server.parent.dir/tomcat-6.0.29上面两个参数指定了Tomcat的所在地和版本信息:首先,Tomcat位于工程同等目录下的bundles目录下;其次,tom
6、cat的文件夹名是tomcat-6.0.29;当前我的Eclipse工作空间是D:workspaceI ,工程名字是portal,因此,新建文件夹bundles,和工程portal同级目录,准备在它下面存放tomcat服务器。app.server.tomcat.zip.name=apache-tomcat-6.0.29.zipapp.server.tomcat.zip.url=http:/archive.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/$app.server.tomcat.zip.name这两个参数主要用于指定tomcat的zip文件夹路
7、径,因为在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下,然后指定一下三
8、个参数:app.server.tomcat.dir=$app.server.parent.dir/apache-tomcat-6.0.33app.server.tomcat.zip.name=apache-tomcat-6.0.33-windows-x86.zipapp.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-tomc
9、at-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目录下的。找到工程目录下的r
10、elease.properties,打开查看:这里指定需要编译的源码的路径,我们就是存在工程源码,所以指定到当前工程所在的文件夹即可,修改参数如下:lp.source.dir=$project.dir/.6.ANT编译部署Windows-show view-ANT,把ant放入控制台;拖放工程目录下的build.xml,build-dist.xml和portal-web下的build.xml到ant工作空间,如下所示:先执行portal-dist下的build-dist-tomcat,配置tomcat环境依次顺序执行portal下的clean,compilerdefaule,deploy,st
11、art;(- ANT执行异常处理 -如果执行ant时候抛出一下异常Buildfile: D:workspaceIIportalbuild.xmlBUILD FAILEDD:workspaceIIportalbuild.xml:6: The following error occurred while executing this line:D:workspaceIIportalbuild-common.xml:245: .Please set the environment variable ANT_OPTS to the recommended value of-Xmx1024m -XX:M
12、axPermSize=256m.Total time: 1 second需要配置ANT运行时的环境变量。Ernal onfigurations邮件build.xml-Run As - External。选择Enviroment选项卡,创建新的环境变量重新执行ant脚本。)执行完ANT任务,到目录D:workspaceIIIbundlesapache-tomcat-6.0.33bin执行下startup.bat,启动tomcat;启动tomcat成功后会发现,主动打开了IE窗口:http:/localhost:8080/zh/但是页面为空,查看tomcat日志信息:这是因为LifeRay内置的t
13、heme木有安装,在Ant控制台,执行portal-web下的build-themes和deploy;成功后看控制台提示信息:build-vaadin:compile:build-common-web.deploy: copy Copying 1189 files to D:workspaceIIIbundlesapache-tomcat-6.0.33webappsROOTBUILD SUCCESSFULTotal time: 12 secondsTheme安装到tomcat下了;刷新IE页面,成功。7.数据库切换LeftRay portal默认的数据库是HSql,只做演示使用。因此,我们需要
14、考虑切换它的数据库到我们的开发数据库中。从portal6的版本后,只需要修改配置文件就,启动时候可自由的切换数据库,而且会自动为数据库创建表结构。建议使用MySQL数据库。这里以Oracle10g数据库为例,说明如何切换数据库。1.创建Oracle数据库ORCL,创建用户lportallportal;2.在portal源码的portal-impl/src目录下新建portal-ext.properties,内容如下:#Oracle 10gjdbc.default.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.default.url=jd
15、bc:oracle:thin:10.10.10.76:1521:ORCLjdbc.default.username=lportaljdbc.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.defa
16、ult.password=roothibernate.dialect=org.hibernate.dialect.Oracle9Dialect不需要解释含义吧!注意:一定要指定hibernate的数据库方言,尤其是切换为ORACLE数据库;3.重新执行ANT下的build.xml的clean,compilerdefaule,deploy,start四个任务;执行完后,到Tomcat的webappsROOTWEB-INFclasses下会发现(D:workspaceIIIbundlesapache-tomcat-6.0.33webappsROOTWEB-INFclasses)portal-ext
17、.properties已经存在其下了。4.在Tomcat下添加驱动文件D:workspaceIbundlesapache-tomcat-6.0.33lib下放入oracle的驱动文件ojdbc14.jar;5.重新启动tomcat;查看oracle数据库,发现多出159张portal所需要的表信息。测试一下表的数据添加:Test用户登录,管理控制面板,选择门户用户,新增用户,保存,添加密码!OK,查看数据库,会发现,在user_新增了一条记录,就是刚新建的用户。此时就可以用新建的用户登录了。8.设置Debug模式导入源码后,如何进行源码的单步调试呢?可以通过设置tomcat服务器实现。但是,前
18、提前提条件是Eclipse必须安装LifeRay IDE和LifeRay SDK。 配置LifeRay IDE和SDK:(已经配置安装的可以跳过此步)首先:从liferay官网下载LifeRay IDE(liferay-ide-eclipse-updatesite-1.3.1.zip)和LifeRay SDK(liferay-plugins-sdk-6.0.6-20110225.zip)。 从Eclipse中,选择Help-Install New Software 选择add,Name:LifeRayIDE,Location就是本地的IDE压缩包,确定。只选择LifeRay IDE,下一步,直
19、到安装成功,重启Eclipse。如果出现下面图标,OK,LifeRay IDE安装成功。安装LifeRay SDK,如下,New LifeRay SDK:选择解压后的SDK目录,OK。确认后就成功了下面,就可以设置LifeRay Portal的Debug模式了。 先添加一个Liferay服务器。在Servers面板内右键new server,添加一个LifeRay v6.0 CE Server.或者在通过如下按钮直接New LifeRay Server下一步,选择自定义的Tomcat的目录:其他默认设置,直接Finish。查看我们的server,会发现出现下面的标准:OK,我们的自定义tomc
20、at服务器设置完了。现在设置它关联的源码:1.双击新建的服务器:选择Open Lunch Configuration2.在弹出框内,选择Source选项卡,Add,Java Project,选择我们的Portal源码,确认。现在,直接右键LifeRay V6.0 CE Server,选择Debug模式就可以单步调试程序了。 Ctrl+Shif+R,输入MainServlet.java,在其service方法上添加断点,尝试调试下源码。 搞定!9.基于Struts2的Portlet示例开发9.1新建一个LifeRay Project新建一个LifeRay Project:StudentMan右键
21、项目StudentMan,Build Path-Config Build Path,在project下添加portal源码应用,如下图所示:9.2使用build service生成简单表的CRUD操作在src下新建包 com.ecdata.liferay.student在student包下新建service.xml,内容如下:!DOCTYPE service-builder PUBLIC -/Liferay/DTD Service Builder 6.0.0/EN Library Student 保存后,会发现service.xml变成了一个小齿轮,如下图:右键service.xml,选择li
22、feray-Build Services此时会提示正在使用build service构建项目代码:构建成功后,刷新项目工程,会发现在student包下多了很多的类:在docroot/WEB-INF下也多了很多java文件这就是通过配置service.xml文件,使用build service工具生成基类源码的过程(至于service.xml参数含义以及build service的其他使用方法,以后再解释)。在包com.ecdata.liferay.student.service.impl下找到StudentLocalServiceImpl.java文件,发现里面什么内容都没有,添加对stude
23、nt对象的CRDU方法如下:public Student create(Student model) throws SystemException / 注意portal UUID的获取是通过公共接口CounterLocalServiceUtil.increment产生滴 long id = CounterLocalServiceUtil.increment(Student.class.getName(); model.setStuId(id); Student newModel = StudentUtil.create(model.getPrimaryKey(); newModel.setSt
24、uName(model.getStuName(); newModel.setAddress(model.getAddress(); newModel.setBirthday(model.getBirthday(); newModel.setSex(model.getSex(); StudentUtil.update(newModel, true); return newModel; public Student remove(long id) throws NoSuchStudentException, SystemException return StudentUtil.remove(id)
25、; public Student update(Student model) throws NoSuchStudentException, SystemException Student newModel = StudentUtil.findByPrimaryKey(model.getStuId(); newModel.setStuName(model.getStuName(); newModel.setAddress(model.getAddress(); newModel.setBirthday(model.getBirthday(); newModel.setSex(model.getS
26、ex(); StudentUtil.update(newModel, true); return newModel; public List findAll() throws SystemException return StudentUtil.findAll(); public List findByStuName(String stuName) throws SystemException return StudentUtil.findBystuName(stuName); 再次对service.xml文件执行builde service操作- 一定要再次执行哦!如下(其实和上面的buil
27、de service操作一样)在包com.ecdata.liferay.student.service.impl下找到StudentServiceImpl.java文件,发现里面什么内容都没有,添加对student对象的CRDU方法如下:public Student create(Student model) throws SystemException return StudentLocalServiceUtil.create(model); public Student remove(long id) throws NoSuchStudentException, SystemException return StudentLocalServiceUtil.remove(id); public Student update(Student model) throws NoSuchStudentException, SystemException retu
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2