Liferay 6.0开发指南
1. 介绍
1、已有的应用集成方法:
将应用重写为一个Portlet
创建一个简单的Portlet整合应用(一般使用Web Service),可以使用iframehttp 代理(可以使用Liferay's WebProxy portlet)
已有的应用要像部署门户插件一样,把WAR文件部署到应用服务器里,可以使用控制面板或直接复制的方式完成。Liferay可以自动创建一个Portlet通过iframe集成已有应用。
2、自定义主题风格(Themes)
3、自定义布局模板(Layout Templates)
4、自定义或扩展门户功能:Hook plugins)
Hook plugins可以用来扩展Liferay的核心功能。
5、高级扩展方式:Ext plugins
扩展插件可以允许开发人员修改Liferay的核心部分,可以修改任何一个类。
扩展插件部署之后需要重新启动应用服务器。
Liferay 6.0之后用Ext plugins的开发方式替换了原来的Ext Environment开发方式,这样可以简化部署。之前的扩展环境可以转换为一个独立的插件。
2. 插件开发工具包(THE PLUGINS SDK)
2.1 安装Liferay
1、 下载Liferay Portal bundled with Tomcatwww.liferay/downloads
2、 下载Plugins SDK
3、 删除liferay-portal-[version]/tomcat-[tomcatversion]/webapps ROOTtunnel-web
录的其他所有文件夹。
4、 打开liferayportal-[version]/tomcat-[tomcat-version]/bin目录,运行startup.bat,启动Liferay
5、 localhost:8080,默认帐号/密码:test@liferay/test
6、 设置环境变量ANT_HOME,将$ANT_HOME/bin加入到PATH环境变量中。
2.2 配置Plugins SDK
创建一个文件,名为build.${user.name}.properties,添加如下内容:app.server.dir={应用服务器目录}。如:liferay-portal-[version]/tomcat-[version]
2.3 SDK结构
在每一个Plugins SDK目录下都有一个创建相应类型新的plugins的脚本。新创建的plugins放在相应plugins的子目录下。例如:一个新的portlet叫“greeting-portlet”,那么相对应的就会有liferayplugins-sdk-6/portlets/greeting-portlet文件夹。
Plugins SDK可以放在一个统一的项目中,也可以为每一个插件(Plugins)创建一个项目。也可以创建单独的主题风格项目。
3. 开发PORTLET
3.1 创建Portlet
创建一个Portlet,必须指定两个名字,一个项目名称,另一个是Portlet的标题(显示名称)。例如,创建一个“my-greetingPortlet项目,标题可以命名为 "My Greeting"。创建方法如下:
1、 打开命令窗口,定位到SDK目录的portlets目录;
2、 执行如下命令:
create.bat my-greeting "My Greeting"
3.2 部署Portlet
部署方法如下:
1、 打开命令窗口,定位到创建的Portlet所在目录;
2、 执行如下命令:
ant deploy
3、 命令执行成功后,上一步创建的Portlet会被复制到应用服务器的deploy目录下;启动应用服务器,应用服务器会自动部署deploy目录下未部署的Portlet
3.3 剖析Portlet
一个Portlet项目最少包含如下三个部分:
1Java程序(存放在/PORTLET-NAME/docroot/WEB-INF/src目录下)
2、配置文件(存放在/PORTLET-NAME/docroot/WEB-INF目录下)
3. 客户端文件(*.jsp, *.css, *.js)(存放在/PORTLET-NAME/docroot目录下)
以上文件会存放在如下一个标准的目录结构下:
/PORTLET-NAME/       
l
/docroot/
/css/
/js/
/WEB-INF/
/src/
l
liferay-plugin-package.properties
l
l
l
icon.png
view.jsp
一个新的Portlet使用默认的MVCPortlet框架进行配置,MVCPortlet框架为每一个Portlet使用独立的JSP页面进行配置。不同的JSP页面完成不同模式的操作,例如:edit.jsp 用来编辑, help.jsp用来显示帮助,view.jsp用来显示内容。
JSR-286规范的portlet配置文件lLiferay特有的Portlet配置文件都存放在/docroot/WEB-INF目录下。
l:这个配置文件描述每一个Portlet的分类结构,会在添加应用页面上显示。
l:这个配置文件描述部署在应用服务器中Liferay特有的符合JSR-286规范的Portlet。例如,可以在一个页面上放置多个portlet实例,每一个实例可以访问各自的数据。详细说明查看Liferay源代码存放目录下的DTD文件。
liferay-plugin-package.properties:这个文件描述了热部署到Liferay服务器中的插。如果一个Portlet插件依赖于服务器中已有的某些.jar文件,可以在这个配置文件中配置相应的.jar文件列表,服务器在热部署的时候会自动将相关的.jar文件部署到当前Portlet的相应目录下,不需要人工去复制。
1docroot/l
portlet默认配置信息如下:
<portlet>
<portlet-name>my-greeting</portlet-name>        //Portlet名称(ID),要唯一
<display-name>My Greeting</display-name>        //Portlet标题(显示名)
<portlet-class>                                    //Portlet引用的类名
com.liferay.util.bridges.mvc.MVCPortlet
</portlet-class>
<init-param>                    //Portlet初始化参数,须name/value配对使用
<name>view-jsp</name>
<value>/view.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>        //Portlet的失效时间,-1表示永不失效
<supports>                                    //Portlet支持的mime文件类型
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>My Greeting</title>
<short-title>My Greeting</short-title>
<keywords>My Greeting</keywords>
</portlet-info>
<security-role-ref>                        //定义哪些角可以访问当前portlet
<role-name>administrator</role-name>
</security-role-ref>
jsp使用el表达式<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
2docroot/l
此配置文件是Liferayl的扩展。
<liferay-portlet-app>
<portlet>
<portlet-name>my-greeting</portlet-name>
<icon>/icon.png</icon>                                //portlet所使用ico文件的路径
<instanceable>false</instanceable>                    //是否可以在页面上添加多个实例
<header-portlet-css>/css/main.css</header-portlet-css>        //页面头包含的css文件
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>    //包含的js文件
<css-class-wrapper>my-greeting-portlet</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>