Liferay 管理员手册(中文)

wang_yuan 贡献于2014-08-20

作者 999宝藏网  创建于2010-08-25 05:46:00   修改者微软用户  修改于2010-08-25 05:46:00字数189832

文档摘要:Liferay门户是市场上领先的开源门户。 这本书的写作充分考虑了服务器管理员的方便。它可以知道任何想要安装并运行Liferay门户服务器的人,会一步步指导你安装及配置的过程。这本书可以作为使用手册使你顺利的安装Liferay,之后配置维护你的网站时仍可以使用。 这里包含的信息以一种容易定位信息的方式组织。我们从下载配置Liferay绑定开始。我们为门户管理员讲述了所有手工安装Liferay到应用服务器上的多种方法。你可以看到用一套Portlet来使你的工作更有效率更简单。从那里,我们进入高级管理主题和企业配置,包括Liferay和其他服务器的聚类和集成。我们告诉你怎么优化Liferay的最优性能,怎么安装Liferay,怎么配置,如果你用的老版本,还告诉你怎么更新。
关键词:

Liferay使用手册 《使用手册》 Liferay管理员手册 2010年08月 / 235 Liferay使用手册 《使用手册》 序言 10 1、介绍 12 1.1、为企业创造个性化和方便定制 12 1.2、适应工作流 12 1.3、品牌友好 12 1.4、灵活的组织 12 1.5、基于终端用户考虑 12 1.5.1、一流用户界面 12 1.5.2、一键变换外观和感觉 13 1.5.3、网络操作系统 13 1.5.4、帮助开发者的技术 13 1.6、符合标准 13 1.7、即将整合 13 1.8、Liferay插件目录 13 1.9、支持的技术 13 1.10、语言 14 2、初始安装 14 2.1、Liferay的版本 14 2.2、获取Liferay 14 2.3、安装一个捆绑 15 2.4、为企业安装Liferay 16 2.5、样本数据 16 2.6、Liferay 家园 17 2.7、数据库安装 17 2.7.1、默认方法:自动 17 2.7.2、手工方法 17 2.8、将一个绑定变成一个企业门户 18 2.9、PORTAL-EXT.PROPERTIES文件 19 2.10、在现有的应用服务器中安装Liferay 20 2.11、10步轻松安装Liferay 20 2.12、TOMCAT 5.5.X 20 1、下载安装Tomcat 5.5.X。 20 2、创建编辑ROOT.xml 21 3、下载Liferay门户的相依文档。 21 4、编辑$TOMCAT_HOME/conf/catalina.properties: 21 5、确保数据库服务器已安装且工作。 21 6、为你的数据库配置数据源。 21 7、编辑$TOMCAT_HOME/conf/Catalina/localhost/ROOT.xml。 21 8、确保在上述文件输入你的数据库的用户名和密码。 22 9、创建一个邮件会话绑定到mail/MailSession。 22 10、配置JAAS。 22 11、创建$TOMCAT_HOME/conf/jaas.config。 22 12、编辑$TOMCAT_HOME/bin/catalina.bat 22 13、删除$TOMCAT_HOME/webapps/ROOT目录下的内容。 23 / 235 Liferay使用手册 《使用手册》 14、解压liferay-portal-x.x.x.war 23 15、为支持UTF-8 URI编码,编辑$TOMCAT_HOME/conf/server.xml: 23 16、运行Tomcat,浏览http://localhost:8080。 23 2.13、Liferay和其他Java EE应用共存 23 2.14、总结 24 3、配置 24 3.1、Liferay用户接口 24 3.1.1、Liferay导航 25 3.1.2、控制面板导航 27 3.2、门户架构 27 3.2.1、用户 28 3.2.2、用户组 28 3.2.3、角色 28 3.2.4、组织 29 3.2.5、社区 29 3.3、使用控制面板 29 3.3.1、添加用户 30 3.3.2、用户管理 31 3.3.3、组织 31 3.3.4、社区 33 3.3.4.1、社区条款 34 3.3.5、用户群 36 3.3.5.1、用户群和页面模板 36 3.3.6、角色 39 3.3.6.1、在一个角色上定义权限 40 3.3.6.2、特别注意有关超级用户角色 41 3.4、全球的服务器 41 3.4.1、密码政策 41 3.4.2、设置 42 3.4.2.1、一般 42 3.4.2.2、认证:一般的设置 42 3.4.2.3、认证:轻量级访问协议 43 3.4.2.4、单点登录 46 3.4.2.5、中央验证服务(CAS) 47 3.4.2.6、身份验证:NTLM 48 3.4.2.7、身份验证:OpenID 48 3.4.2.8、身份验证:OPENSSO 48 3.4.2.9、身份验证:SiteMinder 49 3.4.2.10、默认用户关联 49 3.4.2.11、预留认证 49 邮件主机名: 50 电子邮件通知 50 身份属性 50 3.4.2.12、其他项:显示设置 50 / 235 Liferay使用手册 《使用手册》 3.4.2.13、监测 50 3.4.2.14、插件配置 50 3.4.3、服务器管理员 50 3.4.3.1、资源 51 3.4.3.2、日志级别 51 3.4.3.3、系统属性 51 3.4.3.4、门户属性 51 3.4.3.5、关闭 51 3.4.3.6、OpenOffice 52 3.4.3.7、门户网站实例 52 3.4.3.8、插件安装 52 3.4.3.9、总结 53 4、Liferay协作组 53 4.1、作用域 53 4.2、存档的设置 55 4.3、权限 55 4.4、分享 55 4.4.1、任意网站 55 4.4.2、Facebook 55 4.4.3、好友 56 4.5、博客 56 4.5.1、博客Portlet容器 57 4.5.1.1、配置博客Portlet容器 58 4.5.2聚合网络日志条目 60 4.6、日历 61 4.6.1、配置日历容器 62 4.6.1.1、事件From 62 4.6.1.2、事件提示邮件 62 4.1.6.3、显示设置 62 4.6.2、使用日历容器 62 4.7、聊天 63 4.8、邮件 64 4.9、消息板 66 4.9.1、邮件表格 66 4.9.2、添加到邮件中的消息 66 4.9.3、更新邮件的消息 66 4.9.4、线程优先级 66 4.9.5、用户级别 67 4.9.6、RSS 67 4.9.7、许可 67 4.9.8、添加类别 67 4.9.9、使用消息板 68 4.9.9.1、留言板管理功能 69 4.9.9.2、移动线程 71 / 235 Liferay使用手册 《使用手册》 4.9.9.3、删除线程 71 4.9.9.4、禁止用户 71 4.9.9.5、分裂线程 71 4.9.9.6、编辑帖子 71 4.9.9.7、权限 72 4.10、维基 72 4.10.1、维基门户网站入门 72 4.10.2、管理维基百科 73 4.10.3、添加3和编辑维基页面 73 4.10.4、页面详情 75 详情 75 4.10.4.1、历史 76 4.10.4.2、进出链接 76 4.10.4.3、附件 76 4.10.5、维基portlet导航 76 4.10.6、概要 76 5、高阶Liferay配置 77 5.1、Portal-ext.properties文件 77 5.1.1、属性覆盖 78 5.1.2、LIFERAY HOME 78 5.1.3、门户环境 78 5.1.4、资源库根路径 78 5.1.5、技术兼容包 79 5.1.6、模式 79 5.1.7、更新 79 5.1.8、核查 79 5.1.9、自动配置 80 5.1.10、HOT DEPLOY 82 5.1.11、HOT UNDEPLOY 82 5.1.12、插件 83 5.1.13、PORTLET 83 5.1.14、PORTLET COORDINATION 83 5.1.15、主题 84 5.1.16、资源配置 84 5.1.17、MODEL HINTS 84 5.2、服务生成 85 5.2.1、SPRING 85 5.2.2、HIBERNATE 86 5.2.3、JDBC 87 5.2.4、CUSTOM SQL 89 5.2.5、DB2 89 5.2.6、DATABASE 89 5.2.7、MYSQL 89 5.2.8、二级缓存 89 / 235 Liferay使用手册 《使用手册》 5.2.9、JAVASCRIPT 90 5.2.10、SQL DATA 93 5.2.11、公司 94 5.2.12、用户 95 5.2.13、GROUPS AND ROLES 96 5.2.14、组织 98 5.2.15、LANGUAGES AND TIME ZONES 99 5.2.16、LOOK AND FEEL 100 5.2.17、请求 100 5.2.18、会话 101 5.2.19、JAAS 102 5.2.20、LDAP 103 5.2.21、CAS 105 5.2.22、NTLM 105 5.2.23、OPENID 105 5.2.24、OPENSSO 105 5.2.25、SITEMINDER 106 5.2.26、AUTHENTICATION PIPELINE 106 5.2.27、AUTO LOGIN 109 5.3、SSO 和 MAC (消息身份验证代码) 109 5.3.1、密码 110 5.3.1、权限 111 5.3.1、验证码 112 5.3.1、启动事件 112 5.3.1、关机事件 113 5.3.1、门户事件 113 5.3.1、登录事件 113 5.3.1、登出事件 114 5.3.1、默认登陆页面 114 5.3.1、默认注销页面 114 5.3.1、默认 GUEST 公用布局 114 5.3.1、默认用户私用布局 115 5.3.1、默认用户公用布局 116 5.3.1、默认管理 117 5.3.1、布局 117 5.3.1、默认设置布局 118 5.3.1、PORTLET URL 122 5.3.1、参数选择 122 5.3.1、STRUTS 122 5.3.1、图像 122 5.3.1、FILESYSTEMHOOK 123 5.3.1、编辑器 123 5.3.1、域 124 5.3.1、MIME 类型 124 / 235 Liferay使用手册 《使用手册》 5.3.1、AMAZON 125 5.3.1、浏览器启动 125 5.3.1、控制面板 125 5.3.1、即时通讯 125 5.3.1、LUCENE 搜索 126 5.4、开源版本 129 5.4、值对象 130 5.4、通信链接 130 5.4、内容发布网络 130 5.4、计数器 131 5.4、锁 131 5.4、MAIL 132 5.4、CYRUSHOOK 132 5.5、FUSEMAILHOOK 133 5.6、SENDMAILHOOK 133 5.7、SHELLHOOK 133 5.8、OPENOFFICE 133 5.9、POP 134 5.10、QUARTZ 134 5.11、调度器 134 5.12、搜索容器 135 5.13、SHAREPOINT 135 5.14、社交书签 135 5.15、速度引擎 135 5.16、HTTP 136 5.16.1、SERVLET过滤器 137 5.16.2、上传SERVLET请求 138 5.16.3、网站服务器 138 5.16.4、WEBDAV 138 5.16.5、主SERVLET 138 5.16.6、AXIS SERVLET 139 5.16.7、JSON TUNNEL SERVLET 139 5.16.8、LIFERAY TUNNEL SERVLET 139 5.16.9、SPRING REMOTING SERVLET 139 5.16.10、WEBDAV SERVLET 139 5.16.11、WIDGET SERVLET 139 5.16.12、管理 PORTLET 140 5.16.13、公告 PORTLET 140 5.16.14、ASSET PUBLISHER PORTLET 141 5.16.15、博客 PORTLET 141 5.16.16、日历 PORTLET 141 5.16.17、COMMUNITIES PORTLET 142 5.16.18、DOCUMENT LIBRARY PORTLET 142 5.16.19、IMAGE GALLERY PORTLET 143 / 235 Liferay使用手册 《使用手册》 5.16.20、INVITATION PORTLET 144 5.16.21、JOURNAL PORTLET 144 5.16.22、JOURNAL ARTICLES PORTLET 146 5.16.23、JOURNAL CONTENT SEARCH PORTLET 146 5.16.24、MESSAGE BOARDS PORTLET 146 MY PLACES PORTLET 147 5.17、PORTLET导航条 148 5.17.1、NESTED PORTLETS PORTLET 148 5.17.2、nested.portlets.layout.template.unsupported 148 5.17.3、PORTLET CSS PORTLET 148 5.17.4、SHOPPING PORTLET 149 5.17.5、软件目录PORTLET 150 5.17.6、标签编译程序PORTLET 150 5.17.7、标签PORTLET 150 5.17.8、任务 PORTLET 151 5.17.9、翻译器 PORTLET 151 5.17.10、WIKI PORTLET 151 5.18、 插件管理 153 5.18.1、Portlets 153 5.18.2、Themes 154 5.18.3、Layout Templates 155 5.18.4、Hook Plugins 155 5.18.5、Web Plugins 155 5.18.6、从Repositories安装插件 155 5.18.7、Installing Plugins Manually 158 5.18.8、Plugin Troubleshooting 159 5.4.1.1、运行的是哪个Liferay的容器 161 5.4.1.1、改变多个位置的配置选项 162 5.4.1.1、 LIFERAY怎样开始启动 162 5.18.9、创建你自己的插件库 163 5.4.1.1、软件目录 164 5.4.1.1、手工创建软件目录 170 5.4.1.1、连接到一个软件目录 170 5.19、Liferay 服务导向构架 170 5.20、访问 Liferay的 WSDL 173 6. 企业配置 173 6.1、Liferay 聚类 175 6.1.1、所有的节点都应该指向同样的Liferay数据库 175 6.1.2、文档库的配置 176 6.1.3、Jackrabbit共享 176 6.1.4、搜索配置 177 6.1.4.1、配置Solr搜索服务器 177 6.1.4.2、安装Solr的Liferay插件 178 6.1.5、Lucene配置 179 / 235 Liferay使用手册 《使用手册》 6.1.6、分布式缓存 181 6.1.7、Hibernate缓存设置 182 6.2、工作流 184 6.2.1、安装与测试 184 6.2.2、使用不同的数据库 185 6.2.3、工作流Portlet的工作机理 185 6.2.3.1、进程定义 185 6.2.3.2、数据类型和错误检测 187 6.2.3.3、示例流程定义 189 6.2.3.4、错误信息 190 6.2.4、管理 191 6.2.4.1、部署工作流 191 6.2.4.2、管理任务 194 6.2.5、未来增强的功能 195 6.2.5.1、日志记录 195 6.2.5.2、可自定义前端 195 6.2.5.3、文件上载数据类型 195 6.2.6、常见问题 195 6.2.6.1、您编写一个新的过程定义的方式? 195 6.2.6.2、当我改变JBPM时的数据库为什么有“DUPLICATE FILE”异常? 195 6.3、 部署一个自定义的 Liferay 196 6.3.1、直接在服务器上部署 196 6.3.2、从客户机部署 197 6.4、 性能调试 197 6.4.1、内存 198 6.4.2、垃圾收集 198 6.4.3、Java内存结构说明 199 6.4.4、属性文件的变化 200 6.4.5、Servlet过滤器 200 6.4.6、Portlets 201 6.4.7、读写数据库配置 201 6.4.8、数据库共享 202 / 235 Liferay使用手册 《使用手册》 序言 Liferay门户是市场上领先的开源门户。它已收到来自多个领先行业出版物奖,并有令人印象深刻的下载率(每月超过60000的下载,总计过百万)。它为什么如此受欢迎?因为Liferay使你需要运行一个成功网站所需的所有功能立即可用,不论是公共网站还是公司内网或任何介于两者之间的任何网站。 这本书的写作充分考虑了服务器管理员的方便。它可以知道任何想要安装并运行Liferay门户服务器的人,会一步步指导你安装及配置的过程。这本书可以作为使用手册使你顺利的安装Liferay,之后配置维护你的网站时仍可以使用。 这里包含的信息以一种容易定位信息的方式组织。我们从下载配置Liferay绑定开始。我们为门户管理员讲述了所有手工安装Liferay到应用服务器上的多种方法。你可以看到用一套Portlet来使你的工作更有效率更简单。从那里,我们进入高级管理主题和企业配置,包括Liferay和其他服务器的聚类和集成。我们告诉你怎么优化Liferay的最优性能,怎么安装Liferay,怎么配置,如果你用的老版本,还告诉你怎么更新。 第3版里的新内容 当然,从上一版之后Liferay门户一直在努力改进。这个版本以更新,它涵盖版本5.2,第五章(Liferay高级配置)里以完全修改覆盖了所有的新的门户属性。本书剩余部分也都详细检查并更新了。 门户管理那一章(第三章)以全面修改,用新控制面板覆盖Liferay管理。这一章也仔细修改过列出了你在Liferay门户中创建网站所用的东西。 从书的这个版本开始,多加了一章关于Portlet的空前的合作套装。这一章会指导你的用户使用Liferay提供的强大的工具集:博客,日历,聊天,邮件,留言板和wikis。 其他章节扩展以包括更多附加信息。比如,第七章(维护Liferay门户)现在覆盖了数据库分片和更新Liferay的部分。 约定 每部分被分成很多层级以易于找到信息。 小贴士:这是一个贴士,贴士用来表明意见或周围讨论到的东西。它们通常用灰框框起来,且左边有图标。 源码和配置文件目录这样显示。如果源码有多行,每行用\反斜杠分割。 斜体用来表示超级链接或用户接口中可以点击的按钮,表示一个标签或Java类的名字。 粗体用来描述字段标签和portlets。 页头指示章节,页脚指示章节中的详细说明。 出版说明 我们希望这本书对你有价值,它能成为你开始成为一个Liferay门户服务器管理员的必不可少的资源。如果你需要这本书以外的帮助,Liferay公司提供培训,咨询,支持服务以满足你的需要。请访问http://www. liferay .com/web/guest/services 以得到更多我们能提供的信息。 同以往一样,我们欢迎反馈。如果你想到可以让这本书更好的方法,请随意在我们论坛上提出。你也可以用我们的联系我们页面上的任一个邮件地址(http://www.liferay .com/web/guest/about_us/contact_us)。我们会服务你,我们的用户和客户,让你使用Liferay门户的体验尽可能的好。 作者声明 这本书的第一版是在一个小笔记本(纸质的,不是电脑)里概述的。几个月后,它在一个Liferay雇员的小组手里变成电子版的概述,内容最终完成。这看起来是另一个世界了,改变了那么多,不只是产品,还有公司,这些年来,Liferay以成长了那么多。 / 235 Liferay使用手册 《使用手册》 这一版,我面对一个大难题:这本书必须为5.2企业版的发行做准备。很多问题要修复,要尽量无误。当然,人无完人,如果我们找到任何错误,会在这本书的勘误页更正(http:// wiki.liferay.com)。 我已经尽力感谢有贡献的人(在版权页),但是如果我漏掉一些人-有这种可能-请让我知道,你的名字会出现在下一版。我不能表达在这么多有才能的人中间有多么奇妙,他们尽力使产品完美,即使那个特别任务不是他们的主要工作。 Liferay的工程师队史一群不可思议的人,如果不是我时常用一些问题(有时候很愚蠢)打断他们,及他们的耐心解答,我的工作会更加困难。所以特别感谢Ray Auge, Nate Cavanaugh, Brian Chan, Alex Chow, Bruno Farache, Jorge Ferrer, and Mike Young。 我也想谢谢我的女儿Julia,她常帮我办手续,带给我很多欢乐。当然,也要感谢我的妻子Deborah,她不得不忍受长时间作为一个电脑寡妇,感谢她的理解和支持。没有她我做不到这些。 / 235 Liferay使用手册 《使用手册》 1、介绍 Liferay portal 是世界领先的开源企业门户解决方案,它使用最新的Java和web2.0技术。 可以运行在所有主流应用服务器和servlet容器,数据库和操作系统中,拥有超过700个部署组合。 符合JSR-286 预先绑定60多个porlets,即装即用。 内置内容管理系统(CMS)和协作套装。 为每个用户提供个性化的页面。 使用LogicLibrary的Logiscan套装成为最安全的门户平台的基准。 对于企业,Liferay门户提供一个虚拟平台,可以集中,共享和协作。 为终端用户考虑,Liferay 门户的一流用户界面简单到技术水平很低的用户都可以轻松掌握。 Liferay门户也是开发者社区力其中一个最受欢迎的门户技术,有很多持续增长的功能,帮助你的开发团队用最短的时间和经历部署业务解决方案。 1.1、为企业创造个性化和方便定制 给不同的用户不同的应用程序和文件的入口!高粒度权限系统允许在组织和个人层面上定制用户体验。 1.2、适应工作流 Liferay技术能快速适应商业和组织的变化,在如今快速变化的市场中保证最小停机时间。 1.3、品牌友好 Liferay门户被编码成易于适应您的组织渴求的品牌及外观和感受。 1.4、灵活的组织 Liferay门户对大的,日益增长的用户群具有高度可伸缩性。它能适应最复杂企业的功能需求,比如,你的子组织可以获得它自己的门户体验,拥有独立的URL,登录,外观和感觉及安全许可。 1.5、基于终端用户考虑 Liferay门户的一流用户界面提供动态,直观,节省时间的功能,促使您整个组织的用户采用。 1.5.1、一流用户界面 Liferay门户的一流用户界面提供动态,直观,节省时间的功能,促使您整个组织的用户采用。我们是第一个引进拖放Portlet重定位的门户,并为即使几乎没有技术的用户持续提供创新的实用功能。 / 235 Liferay使用手册 《使用手册》 1.5.2、一键变换外观和感觉 一键配置新的外观和感觉,无需接触任何代码。 1.5.3、网络操作系统 使用Liferay的文件库就像网络带着你熟悉的文件夹开上你的桌面。一个可选的自由浮动的portlet主题会模拟你的桌面环境的外观和感觉。 1.5.4、帮助开发者的技术 保护您的开发投资。Liferay门户的积极成熟的社区总是为开发者的体验考虑。 1.6、符合标准 Liferay门户遵守主导行业标准,使得它易于工作和集成。 1.7、即将整合 和领先的开源玩家如Alfresco,ICEsoft,Spring-source,Pentaho建立合作伙伴关系,支持这些广泛支持的技术,确保空前的集成。 1.8、Liferay插件目录 这种独有的Liferay门户的特征保持跟踪软件最新版本,无需令人讨厌的重启即可更新技术。 Liferay支持所有的主要应用服务器,数据库和操作系统,有超过700种的部署配置。 更多信息请查阅我们的部署模型。 1.9、支持的技术 使用的技术: 标准: ● Apache ServiceMix ● AJAX ● ehcache ● iCalendar & Microformat ● Hibernate ● JSR-286 ● ICEfaces ● JSR-127 ● Java J2EE/JEE ● JSR-170 ● Jbpm ● Seats on the JSR-286 (Portlet 2.0) and ●Jgroups JSF-314 (JSF 2.0) committees ● jQuery JavaScript ● OpenSearch Framework ● Open platform with support for web services ● Lucene including: ● MuleSource ESB ○ JSON ● PHP ○ Hessian ● Ruby ○ Burlap / 235 Liferay使用手册 《使用手册》 ● Seam ○ REST ● Spring & AOP ○ RMI ● Struts & Tiles ○ WSRP ● Tapestry ● WebDAV ● Velocity 1.10、语言 Liferay支持任何其他语言的国际化,本身默认翻译为22种语言。大部分这种翻译由Liferay开源社区的本土语言者进行维护。其他语言也可以很容易添加进去,这在产品的生命周期中已经做过好多次了。 2、初始安装 Liferay门户是当今市场上应用服务器方面最灵活的应用之一。你可以安装Liferay门户到任何地方从一个共享的Tomcat安装到一个运行商业应用服务器的多点聚集群,及两者间的任何东西。事实上,Liferay每天都这这些场景上成功的运行。 你会这样认为是因为Liferay在它的部署选项中实在是太灵活了,也也很容易安装。如果你已经安装了应用服务器,你可以简单的使用这个工具来和应用服务器一起部署。如果你没有应用服务器,Liferay提供了几种捆绑的应用服务器供选择。这些都是很容易的安装和少量配置,可被归入生产就绪系统。 2.1、Liferay的版本 Liferay分成两个不同的版本:Liferay门户标准版和Liferay门户企业版。标准版是已经使用多年的Liferay门户:经常更新,有最新的功能,标准版提供,需要商业友好的MIT开源许可。Liferay企业版是Liferay门户对企业的支持版。 拥有强化的安全和坚如磐石的稳定设计,企业版提供订阅和支持包,使组织在稳定版本的产品上创建它们自己的门户。 因为企业版的发布周期比标准版长,每个企业发布版提供4年的支持。在您订阅期间所有的Liferay门户bug修复都将发给您的Liferay版本。这使得组织有一个平和的心态,因为他们知道他们基于Liferay的网站是稳定的可以运行好几年,使他们能够在一个以证明稳定性的平台上建站。此外Liferay的专业服务团队提供企业版的培训和咨询以确保我们的客户得到长期的支持和稳定。 2.2、获取Liferay 标准版Liferay可免费从我们网站上下载,http://www.liferay.com.点击页面顶部的下载链接,你可以看到几个选项以得到Liferay的一个附件,包括我们方便的绑定或一个.war包以安置你的应用服务器。 如果你有订阅会提供给你企业版的Liferay。你会得到一个下载链接使你能够得到一个附件,包含Liferay绑定或一个.war的可选包以安装你的应用服务器。 如果你想要安置一个绑定,有一个可用绑定的列表。如果你现在没有应用服务器,最好下载Tomcat绑定的那个,因为Tomcat是最小且配置最简单的绑定之一。如果你有偏好的应用服务器,你也可以从可用的Liferay门户绑定中根据你的喜好选择。要运行任何的绑定的包必须首先安置JDK(Java开发包)。 / 235 Liferay使用手册 《使用手册》 请注意Liferay不能提供有专利的应用服务器的绑定,比如WebLogic,WebSphere,或Oracle应用服务器,因为这些服务器的许可不允许重新分配。然而,Liferay门户在这些应用服务器上也同开源的应用服务器一样运行的很好。你需要使用.war包来在这些应用服务器上安装Liferay。 对于手工安装,你需要Liferay的.war文件和Liferay的依赖文件.jars.这章后面会介绍在现今主流应用服务器上安装Liferay。 2.3、安装一个捆绑 Liferay捆绑不论什么应用服务器都包含同样的目录结构。最高层的文件夹以Liferay的版本命名。这个文件夹有时也叫做Liferay Home。 图1:绑定目录结构 在这个文件夹里你会找到各种用途的文件夹: 数据:这个文件夹里存储捆绑使用的嵌入的HSQL数据库,还有参考实现JSR-170目录仓库和Lucene的搜索索引的配置和数据。 部署:你希望部署到Liferay的插件可以复制到这个文件夹。也可以用于Liferay的图形插件安装,可以从控制面板找到。 许可:包含Liferay的许可和一个描述别的Liferay内部使用的开源项目的许可。 [应用服务器]:你下载的绑定不同会得到不同的应用程序服务器文件夹。 这个文件夹包含Liferay所安装的应用服务器。 大多数情况下,安装绑定就像解压存档的文件然后启动应用服务器一样简单。比如,你要在Tomcat上安装Liferay门户,你只需要解压绑定到你选择的地方。 现在如果你已手动下载,请用同样的方式启动Tomcat。Tomcat的启动要到它的bin文件夹里找到它的脚本文件。 如果你在命令提示符里到这个文件夹,你可以通过下面的windows命令启动Tomcat。 Startup 或在Linux/Mac/Unix中输入下面的命令: ./startup.sh Liferay/Tomcat绑定启动。如果你在Windows系统中,你会看到别的命令提示窗口,显示Tomact的控制台。如果是Linux中,你可以用以下命令看到Tomcat控制台。 tail -f ../logs/catalina.out 一旦Tomcat完成启动,它会自动启动一个浏览器,你可以看到主页。如果没有,启动你的浏览器,访问下面的地址:http://localhost:8080。默认的Liferay主页会出现在你的浏览器里。它会使用一个嵌入的数据库用于配置,但它会是全功能的。你可以开始浏览Liferay的各种功能。 / 235 Liferay使用手册 《使用手册》 图2:Liferay绑定的默认页面 Liferay默认包含一个样品网站,叫做 7 Cogs.你可以访问网站以多种用户的方式登录以熟悉Liferay且知道它能做什么。 用相同的方式来安装不同的绑定:解压绑定到你选择的文件夹,启动应用服务器,然后查看你的WEB浏览器的门户。 正如你所看到的,绑定是启动Liferay的最简单的方式。他们事先配置运行中的Liferay可以立即探索所有Liferay可以做的事情。最小的配置方式(一会会看到),绑定会转化为全面的准备就绪系统。 2.4、为企业安装Liferay 最终,你评价Liferay之后想要开始你自己的网站建设,你会想要把Liferay安装到一个真正的服务器上。这样最简单的方式是由一个绑定启动然后配置绑定就可以作为企业应用了。因为这是至今运行Liferay系统最快最简单的方法,我们会先介绍这个方法。然而通常企业会在安装Liferay之前建立Java EE环境。这种情况下,一个绑定就不能满足了。因此,这章的大部分集中在将Liferay安装在一个已建立环境的应用服务器上。 2.5、样本数据 样品7Cogs数据时Liferay应使用的数据的好例子,当你准备要建立自己的网站时,你不会想让数据库被数据搞得乱七八糟。所以,连接Liferay到你的产品数据库之前,你会想要确信你已经将样品7Cogs数据从你的Liferay安装中除去。这非常简单,即从绑定中不配置内置的7Cogs应用。 绑定中有3个应用你必须去除。这3个应用修正Liferay的默认配置以使7Cogs应用生效。因为我们想要恢复Liferay的默认行为,你要删除: • sevencogs-hook • sevencogs-theme • wol-portlet 如果你连接Liferay到你的真正的数据库中之前忘记移除这3个应用,样本数据就会产生在你的数据库中,会出现问题,尤其是你的数据库中已经有数据的话。所以设置你的服务器前务必确认你已经移除这3个应用。用你的应用服务器的方法解除配置应用以移除它们。 / 235 Liferay使用手册 《使用手册》 2.6、Liferay 家园 在Liferay5.2.0及更高版本中,有一个新的文件夹叫做Liferay家园。对于大多数应用服务器来说,这个文件夹比应用服务器本身位置更高级。一个服务器对不同的实例而定义不同的范围的情况下,这个文件夹比Liferay运行的范围更高级。 如果Liferay不能创建它所需要的资源,或它发现自己运行在某些应用服务器上时,它会回退以定义主文件夹,这个主文件夹在正运行Liferay的用户ID的主文件夹里。 正如前面讨论绑定那部分描述的一样,这个主文件夹对Liferay的运行非常重要。实属提到的文件夹(数据,部署和许可)会在那里创建,你还可以把一个特别的配置文件叫做portal-ext.properties放在那。 这个文件在第五章会详细介绍:Liferay高级配置,但是这章你会用它做一些基础配置,包括配置Liferay到我们的数据库。 2.7、数据库安装 2.7.1、默认方法:自动 如果你建立你的数据库并赋予它一个完全存取权限的ID,Liferay就可以用那个ID自动建立它的索引和表格。这是推荐的安装Liferay的方法,它使你可以利用Liferay来自动维护它的数据库,在各种插件安装时可能会各自安装自己的表格,平台升级时也可能影响数据库。这是目前最好的安装Liferay的方法。 如果你按照推荐的许可安装Liferay的数据库,你可以跳过下面的部分。 2.7.2、手工方法 虽然Liferay可以自动安装它的数据库,一些企业不想要允许应用服务器的用户ID被配置以使Liferay和插件的必要的数据库可以得到维持它们表格的许可。对于这些组织仅允许选择,插入,更新和删除操作,所以我们必须学习怎样手工安装。如果你的组织允许Liferay用户ID创建删除数据库中的表格——即被推荐的设置——你可以跳过这部分。 令一个警告:当Liferay更新成新版本时数据库自动更新。如果访问数据库的用户ID没有权限创建、修改、删除数据库中的表格,你要在第一次启动更新后的Liferay时授于这个ID这些权限。一旦更新完成,你可以删除这些权限直到下次更新。此外,很多Liferay提供的插件需要添加新的表格到Liferay的数据库。如果Liferay没有许可自动创建这些表,那这些插件就不能安装。如果你想安装这些插件,你必须在安装前赋予数据库中建表的权限。 Liferay在网上提供了一个SQL脚本档案下载。对标准版来说,它是下载页的附加文件部分。对企业版,你会得到一个这个档案文件的链接。下载并解压。你会发现它包含一个被脚本类型(完整的,最小的,或更新的)和数据库供应商类型破坏的文件夹结构。 如果你在开发,品质测试或产品服务器上安装最新版本的Liferay最好应用最小创造脚本。这个脚本用最小的配置为数据库创造必要的Liferay表格。这对于新安装的Liferay非常适当。 相比之下,创造的脚本用http://www.liferay.com嵌入进的一部分内容安装配置Liferay。 从开发的角度,这可有用,因为它包含了很多使用Liferay功能的可行的例子,包括日志内容管理系统。 / 235 Liferay使用手册 《使用手册》 creat或creat-minimal文件夹内是Liferay所支持数据库的脚本。数据库管理员可以使用提供的脚本连同对最佳性能所必须的索引创建Liferay数据库。一旦完成,确保门户要使用的连接到数据库的ID至少要有选择,插入,更新和删除许可。然而,这个ID最好也有创建,修改删除表格和索引的权限,以使得更新更容易。然而这对于Liferay日常操作是不必要的。 一旦你的数据库管理员创建了数据库且提供了访问的证书,你就可以1)做一个企业就绪的绑定或2)手动安装Liferay到你的应用服务器。 2.8、将一个绑定变成一个企业门户 Liferay门户由下述Servlet容器和完全Java EE应用服务器的绑定选项部署: ● Geronimo+Tomcat ● Glassfish 2 and 3 ● JBoss+Tomcat 4.2 ● JBoss+Tomcat 5.0 ● Jetty ● JOnAS+Jetty ● JOnAS+Tomcat ● Resin ● Tomcat 5.5 ● Tomcat 6.0 选择你偏好的绑定,从Liferay网站的下载页下载或通过提供给你的EE连接。机器上运行任一绑定的前提是你安装Liferay的机器上要事先安装合适版本的Java开发包(1.5或更高)。确保你创建了JAVA_HOME环境变量且指向你的Java安装。 解压绑定到你准备运行它的位置。比如,你可以在Windows中使用D:\apps或 在Linux或UNIX变体中使用/opt 。默认的Liferay门户绑定安装用一个内置的数据库。这是一个让它快速发展的好方法,然而也有一些缺点:每次只能一个人访问。这是因为它存储在硬盘上,当改变时会被HSQL锁上。数据存储在绑定里,可能会在重部署时丢失。这个配置不能很好的扩展,当多个用户共同访问系统时会有性能问题。明显的,你不会想要Liferay运行时使用在内置的数据库。幸运的是,Liferay对很多产品化的数据库有很好的支持,并且很容易配置Liferay来使用它们。精确的指令依赖于应用服务器和数据库,但是可以总结如下: 在你选择的数据库管理系统中创建数据库(更多信息请查看上面标示的数据库安装)。 【可选的】在你的应用服务器中创建一个数据源叫做 jdbc/LiferayPool,它指向你的数据库而且有正确的访问证书。 【可选的】在你的应用服务器中建立一个邮件会话叫做 mail/MailSession,它指向你的邮件服务器,所以Liferay可以发送邮件。 在Liferay主文件夹中建立一个portal-ext.properties文件,它要么直接指向数据库或邮件会话,要么指向应用服务器的数据源和邮件会话。 启动Liferay。Liferay会自动创建表并启动。否则你必须首先运行正确的创建脚本准备好数据库。 更多在不同应用服务器上安装配置的细节请参考下面的手工安装指南。Liferay绑定和通常的分布档案应用服务器没有什么不同,因为他们都是从自己的站点可用的,除非Liferay已经事先安装且Java虚拟机以为使用Liferay做了最优化设置。 / 235 Liferay使用手册 《使用手册》 2.9、PORTAL-EXT.PROPERTIES文件 为使你的Liferay绑定指向你的数据库,建立一个叫做portal-ext.properties的文件在你的Liferay主文件夹中。这个文件重写Liferay默认的属性。你将要重写默认的将Liferay指向内置HSQL数据库的配置。 两种方法来建立连接: •用应用服务器的连接池。 •用内置的连接池。 如果你想使用你的应用服务器的连接池,你必须在应用服务器中建立一个连接池指向你的数据库。它可以叫做jdbc/LiferayPool.为使Liferay使用这个连接池,加入下面的命令到你的portal-ext.properties文件中: jdbc.default.jndi.name=jdbc/LiferayPool 想要为你特定的数据库使用基于C3P0的内置的连接池则要加入第五章介绍的模板。MySQL的模板作为样例提供如下。 # # MySQL # jdbc.default.driverClassName=com.mysql.jdbc.Driver jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEn- coding=UTF-8&useFastDateParsing=false jdbc.default.username= jdbc.default.password= 你要提供数据库的用户名及密码作为用户名和密码指令的值。 对于邮件,步骤类似。同样的,有两种方式配置你的服务器: •用你的应用服务器的邮件会话。 •用内置的邮件会话。 使用你的应用服务器的邮件会话,你必须在你的由于服务器中创建一个邮件会话指向你的邮件服务器。之后,加入下面的指令到你的portal-ext.properties文件中: mail.session.jndi.name=mail/MailSession 使用内置的邮件会话,加入下面的指令到你的portal-ext.properties文件中,替换你的邮件服务器信息: mail.session.mail.pop3.host=localhost mail.session.mail.pop3.password= mail.session.mail.pop3.port=110 mail.session.mail.pop3.user= mail.session.mail.smtp.auth=false mail.session.mail.smtp.host=localhost mail.session.mail.smtp.password= mail.session.mail.smtp.port=25 mail.session.mail.smtp.user= mail.session.mail.store.protocol=pop3 mail.session.mail.transport.protocol=smtp 保存文件。你可以启动你的应用服务器。 / 235 Liferay使用手册 《使用手册》 2.10、在现有的应用服务器中安装Liferay 这部分包含用WAR安装Liferay门户的具体指令。这使得系统管理者能够在现有的应用服务器设备上部署Liferay。你最好很清楚怎样在你选择的应用服务器上部署Java EE应用程序。 2.11、10步轻松安装Liferay 在已有应用服务器上安装Liferay有10个一般的步骤: 1.获得Liferay .war文件和相关依赖文档。 2.确保你的服务器根目录下没有应用监听。如果有,把它移到另一个环境或卸掉它。 3. 决定是要使用你的应用服务器的数据源还是你想要用Liferay包含的那个。如果要用你的应用服务器的数据源,为Liferay建立一个数据源叫做jdbc/LiferayPool. 4.确定是使用你的应用服务器的邮件会话还是使用Liferay包含的那个。如果想用你的应用服务器的邮件会话,创建一个叫做mail/MailSession. 5. 关掉你的应用服务器。 6. 提取相关文档到你的服务器的全局类路径。这使得Liferay和插件都能访问这些依赖。 7. 创建一个portal-ext.properties文件把它放在Liferay主文件夹。通常的,在你安装应用服务器文件夹的上一级。查看你的应用服务器的这个文件夹的位置上的特定的应用服务器的说明。 8. 把你的数据源的Java命名和目录接口名字或Java数据库连接参数加上以便连接Liferay到你的数据库。 9. 添加你的邮件会话的Java命名和目录接口名字或邮件参数以连接Liferay到你的邮件服务器。 10. 启动你的应用服务器,配置Liferay.war文件,启动它。 下面是Liferay支持的应用服务器的具体指令。Liferay支持各种应用服务器和数据库的广泛组合。因此,简单来说,这个章节以MySQL数据库为例,这个数据库已经创建,且你正应用你的应用服务器的邮件会话和数据源。想要使用其他数据库,替换MySQL的JDBC驱动和URL构成。 假定你的应用服务器以安装好切运行正常。如果你需要先安装你的应用服务器,请先遵循供应商的说明。 下面的指令假定是本地安装的。如果安装到远程服务器上,用服务器的主机名或IP代替本地主机。 记住,对所有的应用服务器,在Liferay的主文件夹里创建你的Portal-ext.properties文件,确保它指向你的数据库连接池和邮件会话。 注意:Liferay需要安装JDK1.5或以上版本。不要试图在运行Java1.4或更低版本的应用服务器上安装Liferay5.X;它会不工作。如果你正运行的服务器上是JDK1.4或更低版本,你需要更新你的应用服务器来使用Liferay5.X.然而,Liferay4.X会在这些服务器上工作良好。 2.12、TOMCAT 5.5.X Liferay主文件夹在Tomcat安装位置的上一级。 1、下载安装Tomcat 5.5.X。 现在开始你安装Tomcat的目录叫做$TOMCAT_HOME。 / 235 Liferay使用手册 《使用手册》 注意:对于JDK5用户:移动$TOMCAT_HOME/webapps/ROOT/WEBINF/lib/xercesImpl.jar到$TOMCAT_HOME/common/endorsed。JDK1.4已经不支持Liferay 5.x及以上版本。 2、创建编辑ROOT.xml $TOMCAT_HOME/conf/Catalina/localhost/ROOT.xml以设置门户网络应用。 3、下载Liferay门户的相依文档。 创建一个目录$TOMCAT_HOME/common/lib/ext directory 解压相依文档到该目录。如果文件没有抽取在这个目录,确保把他们移动到正确的位置。 4、编辑$TOMCAT_HOME/conf/catalina.properties: common.loader= ${catalina.home}/common/classes,\ ...\ ${catalina.home}/common/lib/ext/*.jar 5、确保数据库服务器已安装且工作。 如果安装在不同的机器,确保安装Liferay的机器可以连接到它。 6、为你的数据库配置数据源。 确保你的数据库的JDBC驱动可以被Tomcat访问。获取你的数据库服务器的版本的JDBC驱动。在使用的mysql-connector-java{$version}-bin.jar的情况下。下一步,复制JAR文件到$TOMCAT_HOME/common/lib/ext。 7、编辑$TOMCAT_HOME/conf/Catalina/localhost/ROOT.xml。 / 235 Liferay使用手册 《使用手册》 8、确保在上述文件输入你的数据库的用户名和密码。 9、创建一个邮件会话绑定到mail/MailSession。 编辑$TOMCAT_HOME/conf/Catalina/localhost/ROOT.xml,配置一个邮件会话。 10、配置JAAS。 编辑$TOMCAT_HOME/conf/Catalina/localhost/ROOT.xml应配置一个安全范围。 11、创建$TOMCAT_HOME/conf/jaas.config。 PortalRealm { com.liferay.portal.kernel.security.jaas.PortalLoginModule required; }; 12、编辑$TOMCAT_HOME/bin/catalina.bat (Windows里)或$TOMCAT_HOME/bin/catalina.sh (Linux / Mac / Unix里),这样Tomcat可以参考登录模块。 rem ----- Execute... set JAVA_OPTS=-Xms128m -Xmx512m -Dfile.encoding=UTF8 -Duser.- timezone=GMT -Djava.security.auth.login.config=%CATALINA_HOME %/conf/jaas.config / 235 Liferay使用手册 《使用手册》 13、删除$TOMCAT_HOME/webapps/ROOT目录下的内容。 这修改了Tomcat默认的主页。 14、解压liferay-portal-x.x.x.war 到 $TOMCAT_HOME/webapps/ROOT。 15、为支持UTF-8 URI编码,编辑$TOMCAT_HOME/conf/server.xml: 16、运行Tomcat,浏览http://localhost:8080。 你可以看到默认的Liferay主页。 2.13、Liferay和其他Java EE应用共存 Liferay门户默认配置在你的应用服务器的根(也就是/)。让你的应用服务器只运行Liferay门户是一个好的做法,允许你的门户环境和web应用环境之间分离。这对于门户是个好的做法,定义上来说它们是应用开发平台。因为这个原因,你的Liferay的实例可能集合了很多应用程序,甚至一个页面上有几个它们的集合。因为这个原因,你想要确定你的门户环境有它做这些所需要的资源配置它以便它是其他任何一个.war文件的唯一用户,.War文件由应用服务器配置帮助确保你的系统表现最佳。 然而,如果你想要Liferay和其他的应用程序共享一个应用服务器,那也无可厚非。这种情况下,你可能不想让Liferay做服务器根上下文的默认应用。 有两步来修改这种行为: 在除根外的其他上下文里配置Liferay(如example /portal)。 修改portal-ext.properties文件以告知Liferay已经部署的上下文。 想要修改这个文件,用文本编辑器打开它。在文件的顶部放置portal.ctx属性: portal.ctx=/ 这个默认设置定义了Liferay门户作为根上下文环境中的应用。如果你把它改变到其他地方,如/portal,你可以在那个上下文中部署Liferay,它会生存在那里而不是根上下文。 portal-ext.properties文件的详细讲解见第4章。 WebLogic用户注意:WebLogic也需要你修改Liferay中的weblogic.xml文件。 这个文件中是上下文根的标签: / 235 Liferay使用手册 《使用手册》 / 把它改成与你在portal-ext.properties文件中设置的相匹配的路径。你不得不修改Liferay.war文件中的weblogic.xml。从.war文件中抽取它,修改然后放回.war文件。然后部署修改的Liferay .war文件到服务器合适的上下文环境中。 2.14、总结 这一章是指导安装Liferay。无论你选择一个Liferay绑定还是一个已存在的应用服务器,Liferay都可以无缝地集成到你的企业Java环境中。相比其他门户平台,它被更多的应用服务器支持,可以节省你应用服务器的投资,给你移动到不同应用服务器平台的自由。你可以自由选择:Liferay门户不会参与,你知道自己可以放心自由地选择对你的组织最好的软件。 3、配置 一旦Liferay成功安装,就可以开始配置它以适合你的特定环境和门户项目。可以通过Liferay的portlet驱动用户接口来完成许多配置任务。 通过配置各种不同的设置可以来定制你自己的门户,例如邮件通知,如轻量级目录访问协议(LDAP)整合服务,创建用户,用户群,组织和角色,并准备推出的门户网站,其内容和应用可以由开发者加载。这一章主要包括以下内容: l Liferay用户接口:如何在Liferay之上实现导航和利用控制面板。 l Liferay管理:如何去管理一个Liferay门户。 l 全局门户设置:密码策略,设置,监测和其他更多。 3.1、Liferay用户接口 Liferay是一个门户服务器。这就意味着它被设计成一个单一的环境,用户可以在这个环境上运行所有的应用程序。并且这些应用程序可以以一致和系统的方式集成到这个环境之上。假如有一个应用程序在门户之外成活,那么这个门户应当能够消耗这个应用程序的某些资源(例如系统相对敏感性的供应或在仪表板的功能子集的应用),这样最终用户可以一目了然的看到与自己打交道的一切。 为了去实现这一目标,Liferay门户的所有应用功能性存在于portlet页面碎片之上。Portlets是一些运行在一个web页面的局部web应用程序,门户web网站的核心是它的portlets组件,因为portlets里面执行了所有的功能性。Liferay的核心是portlet容器,并且这个容器的任务是统计那些需要在特定页面显现的portlets集合并且恰当的将它们展现给用户。在这种方式下,一个或者多个应用可以定居在一个页面上,并且用户能够(从管理者的方向)以更好的为用户工作的方式去安排它们。 Portlet应用程序就像servlet应用程序一样已经变成了Java标准,各个门户服务器卖方都实施了这个标准。这个Java标准定义了portlet说明书。一个JSR-168或者JSR-286标准的portlet应当可以部署在任何能够支持这些标准的portlet容器上。Portlets由最终用户以一定的秩序布置子页面上并且由门户服务器动态提供服务。 门户应用程序有两种形式:(1)多个被写入少量功能的portlets聚合到门户服务器上形成一个更大的应用程序。或者(2)整个应用程序被写入居住在仅有的一个或者几个portlet窗口里。选择设计哪种形式的门户是由应用程序的设计来选择的,开发者只需要关系内部portlet自身的行为;门户服务器负责处理呈现给用户的页面之上的搭建。 Portlets是很难去搭建的,并且Java标准的portlets能够被任何有开发web应用程序的Java开发者编写。Liferay提供一个插件软件开发工具包,这样可以很容易测创建portlet工程。想要进一步了解插件软件开发工具包,请参阅Liferay开发向导。 / 235 Liferay使用手册 《使用手册》 另外,Liferay支持其他语言编写portlets,例如PHP,Ruby,Groovy,或者Python。其他语言编写的portlets样例可以从我们的资源站点上下载(http://sourceforge.net/projects/portal)或者可以从我们的Subversion存储库里检索到(https://portal .svn.sourceforge.net /svnroot/portal)。 3.1.1、Liferay导航 当你第一次看Liferay默认接口时,你将会看到在屏幕的右上角有一个我们所谓的码头。这个码头是给现有Liferay主题导航的关键所在;它提供到用户所需要的所有全局函数的链接,例如登陆与退出和不同社区与组织页面直接的切换。默认的它仅仅包含两条链接:主页与登录页面。为了显示这些链接,所有你所需要做的是在这个码头上滚动你的鼠标光标,并且它会展开。 第一次登录到Liferay,你可以点击登录链接,然后呈现在你面前的是登录portlet。这个portlet允许用户(或者潜在的用户)去做很多事:登录到Liferay,在门户上创建一个新的账户,或发一封密码提醒邮件如果用户忘记了自己的密码。第一次登录的时候,不要为你自己创建一个账号,我们之后会为你创建的。假设你现在在门户上为你自己创建了一个新的账户,,它实际上是用Liferay默认的方式创建的,这就意味着这个账户没有进入管理portlets的特权,而你需要进入这个portlet为你的组织安装Liferay。由于这个缘故,你需要去作为默认的管理用户登录。这个用户的凭据是: 用户名:test@liferay.com 密码:test 继续用这些凭据登录你的新门户。正如你所看到的,Liferay用默认的邮件地址作为用户名。这可以在稍后被修改如果你不喜欢这个功能,但是这种方式不失为一个好的惯例去保存它。用户的邮件地址通常不容易被他们忘记,并且这些邮件对于每个用户而言是独一无二的,因此他们是很好的用户账号的很好凭据。 展现在用户第一次注册登入的第一个页面是使用条款页面。这一页在用户允许进入门户之前呈现给用户。默认情况下,只有在用户同意了你的服务条款后才能运行进入门户。这一页能够定制成包括你想要的任何文本信息,要么这个特征可能完全丧失的。要继续下去的话,你需要去同意相关的服务条款。 / 235 Liferay使用手册 《使用手册》 一旦你作为管理用户登陆的话,你不会看到什么大的变化的。登入portlet窗口现在显示的是登录者的用户名(就是那些无趣的Test Test用户名),假如你现在在这码头上滚动你的鼠标将会在码头上显示的文字信息是“欢迎你,Test Test!”,然后,你会看到看到上面有很多链接: 首页:带你进入首页。 控制面板:带你进入Liferay的管理功能。 我的账号:让用户编辑自己的信息。 退出:退出的日志信息。 添加应用:打开添加应用窗口,允许你在这个窗口上添加新的portlet应用到页面上。 设计模板:展现设计模板窗口,允许你为页面选择不同的设计风格。 管理页面:带你进入管理模式下,你可以在哪里添加删除页面,修改页面的顺序和配置一些页面其他的事项。 切换编辑控件:这允许你去打开关闭portlet窗口顶部的编辑控件。这对管理者们来说是有帮助的,他们想去查看他们正在工作的页面并且以一个普通用户的方式去查看它。 我的位置:向你呈现门户中为你导航的社区和组织页面。 如果你在我的位置上滚动鼠标,码头将会展开,显示所有你进入的门户网站的地址。最初,你当前所处的位置是突出的。你将看到你是处在来宾社区的,在公共页面里,Liferay为最终用户提供各种页面配置:你可以通过配置它使一些或者所有的用户拥有他们自己公有或者私抑或者两者皆有的页面,在这些页面上他们可以去放置他们需要用到的portlet窗口。默认的管理员账号拥有它自己的页面。因为你登录的账号拥有管理员的特权,你能看到门户里的所有事件。 / 235 Liferay使用手册 《使用手册》 Liferay5.2新添加了控制面板,一个提供单一地址到Liferay的管理函数的新接口。在Liferay5.2之前的版本,不管哪个页面你都需要为它添加管理portlet窗口,并且实施这个操作的一个好地方时在管理员的私人页面里。现在你需要去做的所有事情就是去码头并且选择控制面板。这是一个进入管理功能更加简单快速的方法并且也是用户扩展的用户接口。 照那样说来,管理portlet窗口仍然是有效的,只要你愿意你仍然可以进入他们。 3.1.2、控制面板导航 非常容易为控制面板导航,左边是是一些在标题下面的功能标题列表。这些标题是按字母排列的,但是这些功能项是按逻辑顺序排列的。 用户名:第一部分通常是用户私人空间的信息。在这里,你可以更改你的账户信息和管理你自己的私人页面。 目录:目录部分包括所以到Liferay的内容管理功能的链接。你可以维护网页内容,文件,图片,书签,日历,管理信息公告栏,设置一个威客并且更多。 门户:门户部分允许门户管理者去创建和维护门户。在这里你可以添加和编辑用户,机构,社团,角色和配置门户的设置。 服务器:服务器部分包括配置门户实例,插件和更多其他的管理功能。 你需要维护门户或者目录的所有函数可以在控制面板中找到。另外,开发者能够编写portlet添加到控制面板中。想要了解更多信息,你可以进修Liferay门户开发课程或者参阅Liferay开发向导。 3.2、门户架构 为了添加和维护各种门户资源而去专研用户接口前,最好浏览下Liferay用来组织门户的一些概念。 / 235 Liferay使用手册 《使用手册》 用户入口。 添加用户到用户组。 用户可以属于组织。 组织可以分层,例如家庭办公室→区域办公室→卫星办公室。 用户,用户组和组织可以属于有共同利益的社区。 考虑这面最简单的方式是你要有用户和用户分到一组的多种方式。某些分组遵循一个有管理组织的层次,其他的分组可能由用户自己来完成(例如来自多个组织的不同用户创立对狗有共同利益的爱狗社区)。并且其他分类可能是通过角色管理来完成的,而这种角色是为其他抄捷径到门户的门户设计而设计的(例如一个留言板管理员角色由来自多个社会和用户组织,允许这些用户中的任何门户网站管理留言板)。 这种组织门户的理念将以下面的方式来说明: 在下面的说明中,每个剪头可以用“可以是其中一员”来代替,这就意味着组织可以是社区的成员,社区可以是角色的成员,用户可以是任何的成员等等。尽管这似乎非常复杂,但是它为门户管理员以协调和健壮的方式配置门户资源和安全提供了一个强大的机制。重要的是 要注意,图中只显示用户和他们的集体化。权限不能贯彻到所有的这些集成中,它只被分配到给角色。 3.2.1、用户 可以通过多种途径收集用户。他们可以是分层组织中的成员,例如Liferay包含→安全→因特网安全。他们可以归属于专门的用户群,例如博客,这样用户可以在他们的私人空间创建博客载体。他们也可以是有相同兴趣的社区当中的成员。用户可以拥有自己的角色来描述他们系统中的功能,这些角色可以作用到门户,组织,或者社区。 3.2.2、用户组 用户组是由管理员创建的简单独断的用户集合。他们可以是社区或者角色中的成员。权限不能分配给用户群。尽管用户组像一些其他的用户集合(例如社区或者组织)没有页面。它们没有可以用来定制用户私人页面集的页面模板。这在后面会详尽的描述。 / 235 Liferay使用手册 《使用手册》 3.2.3、角色 里面有三种角色: l 门户角色 l 组织角色 l 社区角色 这些叫做角色域。角色通过定义权限作用到它的范围:贯彻到门户,组织或者社区。例如,考虑一个角色被允许去创建一个信息公告栏。一个门户角色是允许进入作用到门户,这里存在一个消息公告portlet。一个社区角色紧紧只能进入一个简单的社区。一个组织角色也仅仅只能进入到一个组织里。 因为角色是严格用于门户安全的,它们也像社区和组织一样没有自己的页面。 用户,用户群,社区,或者组织可以是角色的成员。 3.2.4、组织 组织是分层的用户集合。它们是两类页面门面资源中的其中一类。它们也是特殊组织场所,这个场所可以定义用户所处的特殊位置。 组织用户定义一个用户所属的特殊层。例如,如果你为一个大的组织实现了Liferay门户,通过Joe Smith在组织图表中的位置来有助于定义用户Joe Smith。如果他是位于新泽西州办公室的一个销售工程师,在东北部的销售部工作,那么他可能是以下组织的一员: l 销售部 l 东北公司 l 新泽西州区 现在假设你把一个资产发行人的portlet作为静态的portlet放置在用户的首页(通过一个用户群页面模板),那么你就可以通过目录管理系统来向录用者发送各种公告。假如你适当的标记你的目录,那么你可以保证Joe Smith能够收到来自销售部,东北公司或者新泽西州区的任何通知。 组织可以是社区的成员。 3.2.5、社区 社区是具有共同兴趣用户的结合。Liferay的默认页面就在来宾社区,因为每个人不管它是匿名还是门户的成员在默认公共的站点页面有一个共同的兴趣。有三种类型的社区: l 公开的 l 权限的 l 隐藏的 一个公开的社区默认的允许门户用户任何时候加入或者脱离这个社区,用控制面板或者一个社区portlet来添加一个页面到他所在的页面。一个权限社区要求管理员将用户添加到这个社区中去。用户可能用控制面板或者社区portlet去请求加盟。一个隐藏社区就像权限社区一样有添加设计理念,在社区portlet或者控制面板上根本不会显示出来。 3.3、使用控制面板 门户的控制面板部分承担着大部分的管理任务。它有创建和维护以下内容的接口: l 用户 / 235 Liferay使用手册 《使用手册》 l 组织 l 用户群 l 角色 另外,它允许你去配置许多服务器设置的,包括: l 密码规则 l 验证选项,包括单点登录和轻量级目录访问协议的集成 l 默认用户关系 l 保留屏幕名 l 邮件主机名 l 邮件通知 你可以用门户的控制面板部分来创建你自己的门户结构,安全设施并且管理你的用户。注意只有具有管理角色——一个门户范围角色,才有权限去查看控制面板角色。 3.3.1、添加用户 从你自己创建一个账户开始来说,我们来配置这个账户使它就有和默认管理员账号一样的管理进入权限。如果你还没有到码头的控制面板去,那么去那里点击控制面板链接。然后在控制面板列表里点击用户,点击添加按钮。 一个添加用户表格将出现在你的面前,用你的名字和邮件地址填写表格。完成填写后点击保存。 这一页面会带着一个保存成功的消息对话框再次出现,并且会有一个展开的表格让你去填写更加详细的用户信息。你不需要立即去填写任何其他的信息,但是有一重要的事是要注意的:当用户账号创建后,密码是自动产生的,假如Liferay有正确安装的话(参阅第二章),密码讲通过邮件的方式方式给用户。这个过程要求Liferay在你的组织里能够和你的SMPT邮件服务器正常通信。 如果你还没有建立你的邮件服务器,你需要用下面这个屏幕将默认的用户密码改成你容易记忆的密码。你可以通过点击右边的密码链接对话框,在两处输入新的密码,点击保存来完成这个操作。 / 235 Liferay使用手册 《使用手册》 下一步,你需要做的就是给你的用户账号赋予和默认管理员账号一样的管理权限。这可以允许你去用自己的账户代替用默认的账户去执行管理任务。这样也可以通过删除或者销毁默认账号来使你的门户更加安全。 点击角色链接,你讲进入显示你的账号当前所分配角色的屏幕。默认情况下,你应当有一个角色:强大用户。默认情况下,所以用户分配到强大用户角色。如果你愿意可以给角色分配某些权限或者销毁所有的(你讲在后面看到如何去操作)。你也可以定义新用户可以收到的默认角色;我们将在后面讲解这些。 使你自己成为一个管理员的方法就是点击选择链接。将弹出一个包含所有系统角色列表的窗口。从列表中选择管理员角色,窗口会消失并且你将看到这个角色被添加到分配给你的角色列表当中。下一步,点击右边蓝色链接栏底部的保存按钮。你现在就是门户的管理员了。退出这个门户然后返回到你自己用户账号的页面去。 3.3.2、用户管理 假如你点击控制面板左边的用户链接,你将看到用户列表中有两个用户。如果你想去更改某一特殊用户的信息,你只要点击靠近那个用户的活动按钮就可以了。 编辑用户:这个按钮带你进入编辑用户页面,在这个页面上你可以更改用户的任何信息。 权限:这个按钮允许你定义哪些角色具有权限去编辑用户。 管理页面:假如用户有页面的话,这个按钮允许你去编辑这些页面。 模拟用户:这个按钮打开另一个浏览窗口,即使你是用户你也可以通过这个窗口浏览站点。 冻结:点击这个按钮将会冻结一个用户的账户。 注意大部分的用户不能去执行以上的大部分操作(事实上,他们是无权进入到控制面板这个部分),因为你有管理进入权限,所以你可以执行以上的所有功能。 / 235 Liferay使用手册 《使用手册》 3.3.3、组织 Liferay中的组织实际上是现实生活中的组织模型。他们可以用作代表不同的公司,非盈利的组织机构,教堂,学校,俱乐部等等。他们已经被作用代表一个运动联盟,这个运动联盟拥有各种运动(橄榄球,棒球,篮球等)并且他们的球队是作为子组织的。假如你有一组属于同一群体的用户集合,你可能可以把它变成一个组织模型。 你的门户可能拥有一个组织或者几个组织,依赖于你所创建的站点类型。例如,一个公共站点可能在Liferay中设立分层的组织的,然而一个社会网络站点可能有来自许多独立的组织的访问者。组织可以有一个层次以到达没有限制的水平,用户可以是一个或者多个内部层或者交叉层的组织中的成员。 另外,组织可以和角色有联系。这其中的一个公共设置方面应用在应该属IT安全小组了。你可能有一个控制公司范围所有应用安全的IT组织中的一个组织。假如你有作为这个组织成员的用户,你能够给你的账号一个能够到整个组织的管理员角色,因此可以让IT安全小组的成员可以进入到这个门户中。假如这个组织中的一个用户后面被人类资源部录用的话,最简单的将该用户从IT安全小组转移到人类资源部的管理程序就是撤销该用户的特权,因为该用户在这个组织中不再有管理员角色。为人类资源部添加用户,人类资源部拥有的任何角色都可以转换成用户。这样,你可以设计和你存在的组织表有关的门户和拥有反映用户在表中位置的用户权限。 当然,这只是设计门户的一种方式而已,假如你有更加复杂的要求的话,你可以将你的组织和用户群与范围角色联合去集成权限集合,这些权限集合你可以赋予给任何特殊用户。 组织是两种拥有自己页面的Liferay资源的其中一种。它允许组织成员(假如你有管理页面的权限)去维护自己的页面。这些用户可以拥有一组包含可供非组织成员或者访客利用的合适信息与应用的公共页面(例如进入一个IT页面的桌面桌面帮助售票系统),并且也可以拥有一组为组织自己用户的私人应用页面(例如相同售票系统的后端portlets)。 添加一个组织,点击控制面板左边的添加组织链接,然后点击添加按钮。 名字:组织名 类型:用这个按钮区选择该组织是否是一个合法的或者当地的组织。 父组织:点击选择连接可以产生一个窗口,在这个窗口中尼被允许选择系统中的组织作为你创建组织的直接父组织。点击删除按钮来删除当前设定的父组织。 / 235 Liferay使用手册 《使用手册》 填写你组织的信息并且点击保存。 就像之前的用户,会重新弹出一个表格让你来填写组织更详细的信息。组织可以由多个邮件地址,门户地址,web站点,和相关的多个电话号码。服务器链接可以被用来注明组织的运营时间, 现在点击所有的可见按钮。这个操作将带你返回组织列表。 点击你创建的新组织旁边的活动按钮。你可以看到很多用来操作这个组织的活动按钮。 编辑:允许编辑组织 管理页面:允许创建和管理组织的公共和私人页面。 分配用户角色:运行你给用户分配组织范围内的角色,默认情况下,组织创建是带有三个角色:组织管理,组织成员和组织主人。你可以在组织中分配这些角色中的一个或者多个给用用户。所有的组织成员都能够获取组织成员角色。 分配成员:这个按钮带你进入选择添加门户中用户到该组织作为成员的屏幕。 添加用户:从门户中添加一个新的用户作为组织成员。 查看用户:显示组织成员中的用户列表。 添加合法组织:允许添加孩子组织到该组织中,这就是你如何用父子关系来创建组织分层的。 添加本地组织:允许添加一个子本地组织,这是一个比较特殊的不能添加任何孩子的组织。 查看字组织:显示该组织的所有孩子组织的列表。 删除:从门户中删除该组织,你首先得保证没有任何用户在该组织的情况下删除它。 3.3.4、社区 社区与组织是非常相似的除了没有分层以外。他们设计来替代进入它们的孤岛,来自任何组织的任何人都可以加入。因此在你需要抄近路到达门户组织结构或者要创建一个对任何用户都适用的站点的任何情况下,你可以使用社区。 例如:一个运行Liferay的公司以太网可能公司所有组织的站点:销售部,市场部,生产小组,信息技术组,人力资源部等等。但是公司医疗和医疗中心呢?那是公司中不考虑组织的每个人都潜在感兴趣的并且可能加入进来的。这种情况社区就是一个很好的选择。在任何门户成员都可以进入的社区中为以太网使用相同的脚本和首页可能是最好的布置。 对于其他类型的web站点而言,你可能想用社区去将有共同兴趣爱好的人聚集起来。加入你创建了一个Liferay门户外的照片共享web站点,这些社区就是基于人们想要共享的照片类型的。因此这些爱好拍摄风景照片的人可以加入一个风景社区,这些爱好拍摄夕阳的爱好者可以加入夕阳社区,并且如果他们失去兴趣了,他们也可以离开这些社区。 Liferay中社区默认的首页叫做访客,在这里你可以放置你公共的web站点。正如你所看到的,有许多像社区而不是组织的脚本是可供你使用的。这就是为什么他们在Liferay门户中有一个截然不同的角色的原因。 / 235 Liferay使用手册 《使用手册》 社区可以用两种方式来创建和管理。第一种是通过控制面板,就像Liferay中的每一个其他的用户或者页面集一样。第二种方式是通过我的社区portlet,在这里你可以在Liferay中添加任何的页面。为什么是两种方式?因为我的社区portlety 也是双层导航方式从社区到社区。,并且允许用户浏览社区列表和选择他们是否想要加入的一个(假如是公开的或者受限的)。这使你能够作为门户管理员为用户提供功能性,而不需要让他们进入控制面板。 添加一个社区,点击门户中控制面板左边的社区链接,然后点击添加按钮。 名字:输入你希望创建的社区名。 描述:输入一些描述社区的文字。 类型:有三种类型的社区:公开的,受限的,私人的。公开社区出现在我的社区portlet中并且用户可以任何时候可以加入或者脱离这个社区。受限的社区和社区一样除了用户可以请求加入外。社区管理员必须精确的批准或者否认用户的请求加入。私人社区不会出现在我的社区portlet中并且用户由管理员手动加入。 激活:社区可以是激活的或者未被激活的,如果一个社区是未被激活的,那么不可以往里面添加数据。 标签:你可以在社区中用Liferay的标签机制,这个事非常有帮助的,如果社区在门户中有特殊的,典型的目的。 一旦你创建了一个社区,它会出现在控制面板的社区列表中,对社区的操作非常类似于对组织的操作。 编辑:允许你编辑社区。 管理页面:允许你为社区创建和管理公共和私人的页面。 分配用户角色:允许你分配社区角色给用户。默认情况下,社区创建可以带有三种角色:社区管理,社区成员和社区主人。你可以为社区中的用户分配这些角色中的一个或者多个。所有的社区成员是可以获取社区成员角色。 分配成员:你可以进入搜索和选择门户中的用户作为成员分配给社区的屏幕。 加入/退出:假如你不是社区的成员,可以由一个加入或者请求成员的选项。加入你已经是社区的一个成员,你也可以看到你有权限去脱离这个社区。 3.3.4.1、社区条款 社区是合作公共项目团队的理想工作场所。他们可以提供一个独立的场所,在这个场所一群人可以放置所有属于同一个特殊话题的数据。这也是一个远比用邮件和网络上一个共享文件夹好的多的共享数据的方法。然后,Liferay的文件图书馆portlet授权用户同步存取和更新数据文件夹,并且所有版本的文件夹都被保持下来。日历portlet可以被用来跟踪团队任命和会议和发送通知给该团队。威客portlet可以用来记载工程的进展。消息布告栏portlet可以作为所有团队讨论的一个地方。 为了这一目创建临时社区,Liferay5.2.3和它之前的版本允许门户管理者基于模板创建社区,这意味着你可以用之前定义好的页面和portlets集来创建模板社区,然后用那个模板非常快速的创建多种多样的预先用这些页面和portlets填充的社区。 你可以分别为开放的,受限的和私人的社区创建模板。另外,你也可以创建一个默认的模板应用到所有类型的社区。拿我们的例子来说,我们就是默认的模板上工作。 到控制面板去点击社区。点击添加按钮创建一个叫着默认模板的社区。把它设为私有社区,一旦这个社区被创建了,点击活动下的管理页面按钮,然后点击设置表。选择活动分段。 / 235 Liferay使用手册 《使用手册》 现在继续用公有页面或者私有页面表来创建模板中的页面并且让它们和portlets共存。你通常也可以用页面查看按钮来查看你所创建的页面,添加portlets和改变版面设计风格。这些页面由一个红色边框围绕着。这说明你正在分段环境下工作。 那你需要去做的就是不要公布对模板的修改,让它处在分段模式下。你将来所创建的任何社区都有相同的版面设计风格和portlets,那就是你已经放置在默认模板下。 简而言之,你可以用相同的方式为特殊类型的社区创建其他类型的模板。 如果社区是公有的,为公有社区创建一个名为公有模板的模板。为受限社区创建一个名为受限模板的模板。为私有社区创建一个名为私有模板的模板。我们刚刚已经创建的应用到所有类型社区的是默认模板。假如你想要所有新建的社区有一个带有消息布告的论坛页面,你可以在默认模板上来创建。 这特征使得管理者创建社区过程流水线化了。非常容易快捷的为团队创建社区。 / 235 Liferay使用手册 《使用手册》 3.3.5、用户群 用户群是蛮横的用户分组。这些群是由门户管理者创建的,用来对那些并没有明显组织或者社区属性或者某些可以将他们集聚到一起因素的用户分类的。群组和角色一样没有权限,但是用户群可以添加到角色中去。那么为什么要用用户群呢?它将在我们有更加复杂的安全需求和页面模板的情况下起到作用,这个将会再下面讨论到。 创建一个用户群是非常简单的,只需要点击用户群链接然后点击添加按钮。只有两处需要去填写:用户群名和这个用户群的描述选项。点击保存然后你可以返回到群组列表。 就像门户中其他的资源一样,你可以通过点击活动按钮来对用户群执行各种操作。 编辑:允许更改用户群名和该群的描述信息。 权限:用来定义那些用户,用户群,或者角色有权去编辑该用户群。 管理页面:尽管用户群没有自己的页面,但是你可以为该群组创建页面模板。当一个用户群有了自己的页面模板后,然后添加都这个用户群中的用户都可以将这个群的页面复制到自己的个人页面。这就允许你做很多操作就像用用一个页面模板创建博客用户群一样,这些页面模板拥有博客和近期博友portlets。添加到这个群组的用户第一时间登录到门户的时候,这一页可以被复制到他们的私人空间,这样他们就自动拥有一个可以使用的博客页面。 分配成员:进入一个可以搜索和选择门户中的用户添加到这个用户群的屏幕。 查看用户:允许你查看该用户组中的用户。 删除:删除该用户组。 3.3.5.1、用户群和页面模板 Liferay允许用户有一个公有和私有页面的私人集,每个用户都可以自愿地定制这个私人集。这些页面的默认配置是由门户管理员通过门户扩展来决定的。属性文件和可选的LAR公司提供一个文件中的配置。虽然这是Liferay的一个长期的时间特征,它不是很灵活和容易使用的。 Liferay5.1模板介绍了和用户群相联系的页面模板的概念。这使管理员能够为所有的用户私人页面提供相同的配置,用Liferay的GUI接口来代替属性文件,在某些情况下你可以为每个依赖自身应用需求的用户提供不同的配置。例如,大学学生,员工,大学肄业生门户可以在他们的私人页面获取不同的默认页面和portlets。你也可以把它搭建起来这样不同的群是连接在一起去创建期望的默认配置。当一个用户被分配到一个用户群时,配置页面模板是直接复制到用户私人页面。 用户群页面模板:为用户群定义页面模板 用户群模板可以用控制面板来管理。用户群链接列出了所有存在的用户群并且允许你去对它们执行某些操作。 / 235 Liferay使用手册 《使用手册》 管理员凭借选择页面管理活动来进入通用的Liferay用户接口,这些用户接口是用来在某一层创建页面和组织这些页面的 。 注意有可能创建公有和私有两种页面的。当用户变成了用户群的成员时,每一个页面集将各自被用作模板被复制到用户个人公有或者私有的页面集合中。 在以上的短屏中,管理员创建一个新的名为你是学生群组中的一员的私人页面。一旦这个页面被创建起来它就是一个portlet页面,管理员现在可以点击查看页面按钮来打开页面和添加期望多的portlets到页面并且按需要来配置它们。假设借款数目和日期portlets是被选中的。 用页面模板来分配用户到用户群 / 235 Liferay使用手册 《使用手册》 下一步是分配一个存在的用户给用户群,保证页面模板是被复制到用户的私人页面的。为了实现这个,点击存在用户群列表中的行为列表下的分配成员行为。 点击下一个屏幕中可用的表,所有可以获取的用户列表显示出来。从哪个列表中,我们可以选择一个或者多个用户作为用户群的成员。当点击更新关系按钮时,用户变成了用户群的成员并且任何用户群配置好的公用或者私人页面都被复制到他们的页面集合中。 在之前的例子中,当用户下一次进入自己的私人空间时,用户已经存在叫做欢迎的页面的前提下,现在会有一个叫做你是学生的新页面。那个页面包括两个portlets:被用户群管理员配置的借款数目和日期。 图45:模板复制到用户页面设置 更多详细资料: 由于页面复制到用户的设置的网页,现在用户拥有这些网页,他们可以在任何时间改变这些页面,如果门户网站设置为允许用户编辑自己的个人网页。当用户从一个用户组中删除相关的网页不会被删除:他们已成为用户的网页。但是,如果该系统足够智能的话,当一个用户被再次添加到一个组,而该用户已经是该组的一员时,则页面不会再次被添加。 如果在一个用户组的用户添加完成之后管理员修改页面模板,这些变化将从新加入的用户开始使用。但是,这些变化不会在先前的那些用户中使用。 由几个用户组构造一个页面 用户可以属于多个用户组。如果你有一组模板数量界定,这可能会导致有很多网页模板复制到用户的网页。为了防止这种情况,您可以由不同用户组组合成一个单一的页面。 让我们拓广前面的例子,分为一年级学生,二年级的学生,三年级学生,国际学生,和准学生。对于这些类型的学生,我们希望他们有一个 / 235 Liferay使用手册 《使用手册》 有贷款计算器和日历的页面,但是这取决于他们的类型,我们也希望其他不同的portlet将在该网页显示。 这可以通过使用网页的命名来实现。如果两个或多个不同的用户组的网页具有相同的名称,当他们被复制到一个用户的个人页面设置时,它们将合并成一个单一的网页。在上述例子中,用户被添加到一个学生组,它的网页叫做你是一个学生。 如果管理员创建一个一年级学生组页面模板时,命名相同的名称(你是学生),并把一个RSS的portlet指向他们感兴趣的信息,该网页将与你是一个学生页面所在的学生组合并,和由此产生的页面将包含两个用户组配置的Portlet: 页面组合规则: 当由不同的用户组的页面组合一个页面的时候使用如下规则: 如果用户成为一个用户组的成员,该用户组有一个页面模板,且与已经有的模板页面(公共或私营)同名,这些网页将被合并。 如果任何网页已翻译成几种语言的名称,只是默认的语言被认为是在比较之中。 新页面上的portlet将被复制到现有的网页下方的等效列。 如果现有的和新的页面有不同的布局模板,保存现有那个。 如果新的布局模板列中有现有的页面中不存在的Portlet,这些Portlet的将被自动复制到现有的布局模板的第一列。 正如你所看到的,不可能有一个默认的非常灵活的门户网站用户配置页。此外,使用UI管理员,该配置可以在任何时候改变,然后将用户分配给新的用户组。 虽然这些例子有点简单,系统可按你的意愿允许尽可能多的用户组。通过使用匹配页面名字的规则,是不可能建立任何你想你的用户拥有的默认页组成。 3.3.6、角色 在特定的范围内,角色是用户共享一个特定的功能组别内的门户网站。在portlet应用程序中,角色可以被授予权限的各项职能。把角色作为一个功能,如留言板管理员的作用。一个具有该名称的角色是有可能的留言板portlet的职能权限下放给它。那个用户是这个角色,就 / 235 Liferay使用手册 《使用手册》 继承这些权限。 角色是通过门户网站,组织,或社区界定的。控制面板,让你指定用户角色和权限分配给角色。你只有去一个地方:角色链接。在那里,你可以通过户网站,组织,或社区从一个接口界定一个角色。 要创建一个角色,按角色链接,然后点击添加按钮。键入你的角色和一个可选的描述名称。在底部的下拉框表单可让您选择是否这是一个经常,社区或组织的角色。当你完成后,点击保存。 你会回到角色列表。点击动作按钮,看看你的新角色可以执行那些功能。 编辑:点击此行动,编辑的作用。您可以更改其名称或说明。 权限:这允许您定义那些用户,用户组或角色有权限编辑角色 定义权限:按这种方法来定义这个角色有什么权限。这将 在下一节中介绍。 指定成员:带您到屏幕上,您可以搜索并选择用户门户网站分配得到这个角色。这些用户将继承任何权限给角色。 查看用户:让您查看在角色中的用户。 删除:删除角色。 3.3.6.1、在一个角色上定义权限 角色作为一个容器存在,给他的用户赋予权利。所以,一个角色做主要任务之一是角色的成员赋予你想要他们有的权利 当你在门户的范围角色上点击定义权限时,你有一个选择两种权限可以定义这个角色:门户权限和Portlet权限。对于其他角色,你只要看portlet权限。 门户权限所涵盖的门户范围的活动在好几个类别上,例如:社区、位置、组织、密码政策等等。这允许你去创建一个角色,例如,可以在门户上创造新的社区。这将允许你给予用户特定的权限没有使他们成为整体门户网站管理员。 Portlet权限所涵盖的权限被定义在各种portlets之内,点击Portlet权限按钮可以带你进入一个网页,在那里你可以浏览当前安装在你门户上的portlets的名称。一旦你选择一个portlet, 然后你可以定义行为在 如果我们坚持我这个portlet之内,这个角色将有权限去执行。们的例子:一个留言版管理员的角色,我们将找到留言板portlet在这个列表上,并且点击它。新的一页带有配置权限将被显示(看右图)。 / 235 Liferay使用手册 《使用手册》 每个可能的行为到被准许的权限被列出。为了准许一个权限,要选择权限的范围。你有两个选择:企业和社区。准许企业的权限意味着权限到行为将被准许穿过门户,在任何一个企业或是社区,在那里有留言板portlet。 如果你选择社区,一个呈现在权限旁边的按钮允许你选择一个或多个社区,在那里权限是有效的。这让你挑选一个特定的社区(对一个门户范围角色),在那里这些权限对于用户是有效的在这个角色上。 一旦你已经选择的权限被准许到这个角色,就点击保存。对于一个留言板管理员角色,你将会准许企业权限到每个行为都被列出来。在你点击保持之后,你将看到一个列表上的所有权限当前被准许到这个角色上。从这里你可以添加更多的权限(通过点击添加Portlet权限或添加门户权限),或返回通过点击一个链接在列表的底部上或返回到整页的链接。 角色是非常强大的,并且允许门户网站管理员来定义各种权限在任何一个他们喜欢的组合上。这给你太多的灵活性,可以建造你已经设计好的场所。 3.3.6.2、特别注意有关超级用户角色 在默认情况下,许多portlets在Liferay被配置内,这样有机会接近他们,但是普通用户并没有这个机会,如果你决定要从默认用户协会上消除超级用户角色(看下面102页),你将需要在某些portlets上修改这个权限。要想这样做,请看下面插件配置那节(114页)。 3.4、全球的服务器 既然你已经在控制面板上操纵,你应该很熟悉它是如何工作的,并且希望你现在在左边的多种选择中舒适的探索。到目前为止,我们已经在维护用户和门户安全。剩下的链接在门户范畴上专注于不同的门户设置,其涵盖了门户如何与其他你可拥能的系统的操作和整合。 3.4.1、密码政策 密码政策可以帮助提高你的门户的安全。使用密码的政策,你可以设置密码的规则,例如:密码强度,密码满期的频率和更多其他的。另外,你可以运用不同的规则集到不同的门户网站的用户集。 如果你正在浏览页面以外的控制面板,回到码头并且选择控制面板。接下来,点击密码政策链接到门户范畴上的屏幕的左边。你会看到这已经有一个预设密码政策在这个系统上。你可以在这个门户上编辑这个预设密码政策以相同的方式你编辑其他资源:点击动作,然后点击编辑。 然后你会看到密码政策设置形式: 可变的:用户可以选择是否改变他或她的密码。 改变要求:用户选择是否必须改变他或她的密码在第一次登录。 最小年龄:你可以选择一个密码必须保持多久才可有效改变。 语法检查:允许你选择是否可以在字典词条密码以及最低密码长度。 密码的历史:保持一个密码的历史(用一个定义的长度)并且不允许用户将密码改变为先前使用的那个密码。 密码满期:让你选择一个区间,在其中密码在它们满期之前还可以是有效的。 封锁:允许你在用户帐户被锁之前设定尝试失败记录的数量。你可以选择是否一个管理员需要不锁的帐户或如果在一个特定的时间里它被解锁。 从密码政策的列表上,你可以执行其他的活动。 编辑:带你进入上面的形式并且允许你修改密码政策。 / 235 Liferay使用手册 《使用手册》 权限:这允许你定义用户,用户群,或角色有权限编辑密码政策。 指派成员:你需要一个屏幕,在那里你可以在门户上搜索和选择用户用来指派到这个密码政策,密码政策将被加强对每一个已经添加到这里的用户。 删除:这可以为你已经添加超出默认政策之外的任何密码政策。你不可以删除默认政策。 3.4.2、设置 这个设置连接是大部分的全球门户网站设置: 一般:这可让你设定全球的设置,例如:公司的名字,领域,虚拟主机,全球门户的标志和更多其他的。 认证:允许你设定登录账号、连接到轻量级访问协议和单点登录。 默认用户协会:让你设定默认会员到角色,用户群和社区的新用户。 预订资格:让你储备屏幕名称和邮箱地址,这样用户不能注册使用它们。你可以用这个来防止用户在门户上用用户的名字登记,用户的名字是亵渎的或是听起来是官方的。 邮件主人名字:你可以添加列表之外的其他邮件服务器在这里。 邮件通知:Liferay为某些事件寄电子邮件通知,例如:用户注册,密码更改等等。在这里你可以自定义这些信息。 下面我们将这些设置成细节。 3.4.2.1、一般 一般的链接允许你设置该公司的名称、组织、地点,其在门户上运行。你也可以设置虚拟主机,邮件域,和其他关于组织的繁杂信息的项目。 3.4.2.2、认证:一般的设置 认证链接有几个制表符,所有这些都是用来设置用户将如何鉴定到Liferay。因为Liferay支持一定数量的认证方法,这里有每个设置。 一般的设置仅仅影响Liferay功能,并且与在其他制表符上的任何整合选择都没有关系。这个制表符允许你定制Liferay的窗口之外关于鉴定。特别的,一般的制表符允许你从一些全球认证设置中选择: ●认证通过邮箱地址(默认),屏幕名字,用户帐户(一个数字帐户自动生成在不被推荐的数据库)。 ●开启/关闭自动登录,如果开启,Liferay允许用户来检查窗口,这个窗口将导致网站“记忆”用户的登录通过放一个饼干在他或她的浏览器。如果关闭,用户只能用手动操作来登录。 ●开启/关闭忘记密码功能。 ●开启/关闭陌生人创造的帐号。如果你正在运行因特网,你有可能想要推出这个网站,这样访问者可以创造帐户在你的网站上。 ●开启/关闭帐号,账号是由在公司正在运行的网站的领域上使用电子邮件地址的那些人创造的(你正好在这个网站上设置一般制表符)。 ●开启/关闭的电子邮件地址验证。 如果你开启它,Liferay,将发送用户带有链接回到门户的证实邮件去证实他们进入的邮件地址是有效的,这样他们就可以进入。 在默认情况下,所有设置除了最后是开启的。默认的那个是很重要的,用户用邮件地址来认证,Liferay默认这个有几个原因: / 235 Liferay使用手册 《使用手册》 1. 通过定义,一个邮件地址对于拥有它的用户是唯一的。 2. 人们可以记住他们的电子邮件地址。如果你有一个用户在一段时间内没有登录到门户,那么有可能他或她忘记了他或她的屏幕名字,特别的,如果用户不被允许使用他或她的屏幕名字(因为某些人已经使用了)。 3. 如果用户改变了他或她的邮件地址,如果不能用来认证,那么很有可能用户忘记在他或她的个人资料去下载他或她的邮件地址。如果用户的邮件地址不能被下载,那么所有由门户发送的通知将不能到达用户。因此,将邮件地址保存在用户的头脑里是很重要的,当他或她登录时可以帮助用户保持更新。 对于这学原因,Liferay默认使用邮件地址作为用户名。 3.4.2.3、认证:轻量级访问协议 将Liferay连接到一个轻量级访问协议目录变得容易多了并且是一个直截了当的过程来通过控制面板。然而,仍然有两个地方可以配置轻量级访问协议设置:门户扩展属性文件(这将会在接下来的章节覆盖)和控制面板,在那里所有的设置都将被储存在数据库里。注意,如果你两个都使用,那么数据库里的所有设置将会被门户扩展属性文件的设置给废除。基于这个原因,我推荐大多数用户使用控制面板来配置轻量级访问协议设置,这样既方便又不要求有Liferay的启动。使用门户扩展属性文件的唯一理由是如果你有很多Liferay节点,这些被配置运行在相同的轻量级访问协议项目。在这样情况下,对于你的最初的部署,很容易将门户扩展属性文件拷贝到所有的节点,这样他们第一次启动,所有的设置都是正确的。无论你用哪一种方法,所有的设置都是一样的。 轻量级访问协议设置时非常详细的,因此我们需要分块的去看它。 全局值 有两种全局轻量级访问协议的设置。 激活:寄存窗口使轻量级访问协议有效。 请求:寄存如果轻量级访问协议请求是有效的。Liferay不允许用户区登录的除非用户能首先能成功连接上轻量级访问协议。不要寄存窗口如果你想去让用户拥有Liferay账户而没有轻量级访问协议账户去登陆到门户中去。 默认值 一些重要的服务器是列出来的。假如你要用它们中的一个,选中它其他的表将直接被合适的默认值填充的。 连接 这些设置包括基本的轻量级访问协议连接。 基地提供的网站:这告诉门户LDAP服务器的地址。确保按装Liferay的机器能够和LDAP服务器通信。如果两个系统中有防火墙,确保适当的端口是打开的。 基本DN:这是LDAP目录的基础名,通常是在你的组织建立后设计的。对于一个商业组织来讲,你可能看到一些这样的标记:dc等于公司名,dc等于科姆。 代理:默认情况下,管理员账号是存储在这里的,假如你已经删除了默认的LDAP管理员。你需要去使用管理验证码的权限名。你需要一个管理证书,因为Liferay用这个账号使用户账号和LDAP中的账户同步。 验证码:管理用户的密码。 这就是你所要的所有为了和LDAP目录建立一条合法的连接。其他的配置是可选的:一般情况下,默认的属性映射是充足的数据同步返回到Liferay数据库当用户尝试去登录时,测试你到你的LDAP服务器的连接,点击测试LDAP连接按钮。 / 235 Liferay使用手册 《使用手册》 假如你在加密套接字协议层的模式下运行LDAP目录来保护经过未必加密的网络的验证码信息,你不得不去执行额外的步骤去共享加密的核心和两个系统的验证码。 例如,假设你的LDAP目录碰巧是Windows 2003服务器的微软的活动目录,你可以执行以下步骤来共享验证机制: 在windows 2003 域名控制器中,打开授权的多媒体控制器。导出授权验证证书的根目录通过选择证书(本地计算机)多媒体控制器→监督的证书授权根目录→我的根目录证书名。好了点击这个证书和选择所有的任务→导出→选择二进制X.509.CER编码DER.。复制导入的.cer文件到你的Liferay门户服务器。 安装了CAS(见下面的单点登入部分),你需要导入证书到cacerts密码库中,导入控制通常像一下的方式: 密码库用处是作为JAVA 开发环境包的一部分的。 完成这些后返回到控制面板的LDAP页面。在基层DN区域更改LDAP网址到安全版本当中,通过更改Http协议和636协议如下: 保存这些更改。你的Liferay门户现在用LDAP安全模式作为验证。 用户 这一部分包括在你的LDAP目录下寻找用户设置。 授权搜索过滤器:过滤器的搜索框可以用来确定用户登录的搜索条件。默认情况下,Liferay以用户的电子邮件地址作为登录名。如果您已在控制面板授权模块上LDAP选项卡旁边的常规选项卡更改此设置,你还需要在这里更改授权搜索过滤器,因为默认情况下,是以LDAP上的邮件地址属性做为搜索条件的, 例如,如果你改变Liferay的身份验证方法,比方说网名,而不是电子邮件地址,您将修改搜索过滤器,以便它可以匹配登录时的输入。 导入搜索过滤器:不同的LDAP服务器,对用户来说需要不同的验证方式,通常情况下,默认设置是好的,但如果您要搜索只是一个用户子集不同的对象类别的用户,你可以改变它。 用户映射:下一系列的字段允许你从LDAP的属性域自定义映射。相比LDAP服务器对LDAP服务器的属性,您的LDAP用户属性可能会有所不同,不过Liferay依然要求有5个字段被映射使得用户可以被识别。你必须在以下Liferay域上定义一个LDAP中相应的属性映射, 密码 邮件地址 名 姓 控制面板为通常使用的LDAP属性提供缺省映射。如果你愿意,你也可以添加自己的映射。 / 235 Liferay使用手册 《使用手册》 测试LDAP用户:一旦你建立了你的属性映射,点击Test LDAP Users按钮,并且liferay将试图拉来LDAP用户和把他们与先前的映射相匹配。 插图49:测试LDAP用户 这部分包含从LDAP组到liferay映射的设置。 输入搜索过滤器:这是寻找你想要从LDAP组到liferay映射的过滤器。为了映射,键入你想要检索的LDAP组属性。以下属性可以被映射: 组名 描述 用户 测试LDAP组:点击Test LDAP Groups显示你搜索过滤器返回的一列组。 输入/输出 输入可行:勾选这个选项,Liferay将导入LDAP目录,如果用户只希望Liferay在他们登陆后运行,则不能打开该选项。当用户工作在聚类环境下,必须不打开,否则,每个节点在启动是都会导入LDAP目录。 如果打开该选项,会有其他几个选项变的可用。 开机状态输入:勾选这个选项可使Liferay在启动时进行输入,该选项只有在上个“输入可行”选项勾选的时候可用。 输入间隔:输入是时间表进行的,勾选该选项可用选择两次输入的时间间隔,该选项只有在上个“输入可行”选项勾选的时候可用。 输出可行:勾选这个选项,Liferay从数据库中将用户账户信息导出到LDAP。Liferay利用监听器来跟踪用户对象,而且当用户信息更新时,Liferay会将出现的更改输进LDAP服务器。要注意的是,每次默认登录是,上次登录文件中日期等值将为被更新。所以,当是可输出状态时,用户每次登录都会造成异常输出。不过,可以通过在portal-ext.-properties文件中修改如下属性来禁止该功能。 用户名路径:在这输入用户名路径,即用户名存放在LDAP树中的路径。当Liferay导出是,会把用户信息导到该路径。 用户默认对象分类:当用户信息被导出时,用户会被分配到默认对象分类中。若要查询是哪个类别,可利用LDAP浏览器如JXplorer来定位用户和用户LDAP中的查看对象类别属性。 组路径:在这输入组路径,即组存放在LDAP树中的路径。当Liferay导出是,会把组信息导到该路径。 / 235 Liferay使用手册 《使用手册》 使用LDAP密码策略:Liferay使用它默认的密码策略,控制面板左边的Portal项可以配置密码策略。如果您想使用自己的LDAP目录来定义密码策略,请选此框。启用之后,密码策略选项卡将显示一条消息,说明你没有使用一个本地密码策略。现在你将不得不使用您的LDAP目录机制来设置密码策略,这由Liferay通过解析从LDAP服务器返回控制信息来完成。默认情况下,Liferay所寻找的LDAP控件上的消息是Fedora目录服务器返回的。如果您使用的是不同的LDAP服务器,您将需要定制Liferay Portal的portal-ext,文件属性等相关信息,因为没有用来配置密码策略的图形用户界面。参见下面的说明描述。 当您完成LDAP配置,点击保存按钮。 没有可用的LDAP的GUI选项 虽然大多数的LDAP可以从控制面板配置,有一些配置参数却只能通过编辑portalext的来实现。在GUI在Liferay Portal的未来版本这些选项将是可用的,但现在,只能通过编辑编辑文件属性来实现。 如果你需要更改任意选项,从Portal属性栏上拷贝LDAP片段到你的portal-ext中,请注意,GUI把这些设置保存到数据库中,它的配置优先级高于属性文件,所以如果你已经从GUI上配置了LDAP,对于已经配置过的任何设置,再从属性文件上配置都会被忽略。 不管采用BIND比较还是密码比较的方法做LDAP的身份验证,BIND对于大多数厂商是首选,因为不必担心加密策略。而密码比较是更为精确的的策略,它会从LDAP之外读取用户密码,对其加密,然后同步地与Liferay上的密码相比较。 如果需要采用ldap.auth方法的性能,就通常使用密码对比的方法加密密码 如果您对用户采取此设置,Liferay会从LDAP树中的导入指定的用户,如果你把它设置为群,Liferay会查找所有群,然后导入每个群的用户,而不在任何群内的用户不会被导入。 这些属性是一些列可能从LDAP服务器返回的错误词组信息组成的清单,当一个用户连接到LDAP,服务器会返回一个代表连接成功或者失败的控制信息,这个控制信息包含描述错误或者服务器传回来的回应内容的消息,虽然从服务器上传来的控制信息是一样的,但是这些消息却可以是不同的,它们的各碎段包含各种属性信息,并可以在红帽的Fedora目录服务器上运行,而如果您不使用Fedora目录服务器,这些碎段信息可能无法在您的LDAP服务器上运行,这样的话,你就得寻找其他信息来替代这些碎段包含的属性信息的功能,以求Liferay可以识别控制信息。 3.4.2.4、单点登录 单点登录解决方案,允许在您提供一个单一的凭据登录多个系统。这可以让人们在使用Liferay上的某单一产品时自然地切换到其他系统中。 Liferay在写入时提供了几种的单点登录解决方案,当然如果你的产品还不能支持,您可以通过扩展自己的环境来得到支持或者通过你的团队可以选择赞助商支持它。你可以链接 / 235 Liferay使用手册 《使用手册》 sales@ liferay .com得到更多的信息。 3.4.2.5、中央验证服务(CAS) CAS是一个身份验证系统,最初是在耶鲁大学创建的。它是一种广泛使用的开源单点登录解决方案,是Liferay支持的第一个SSO的产品。 请按说明在你的应用服务器选项上安装CAS,你可以使用Liferay官网上提供的版本或者JA-SIG网上的提供的版本。存在两种版本差异的原因很简单,新版本只支持JDK5及以上,我们为老用户提供Liferay 4.4.2及以下版本,以便用户可以有充分的环境,在JDK 1.4上运行。 您的第一步将CAS.jar文件复制到Liferay的文件夹。对于Tomcat,是在/webapps/ROOT/WEB-INF/lib目录上,如此,下次你启用CAS客户端时在Liferay就是可用的了。 CAS 服务器应用需要在您的服务器上进行适当的SSL配置才能运行。如果你想生成一个你自己的,你将需要使用JDK自带的keytool工具。第一步,是生成1个密钥。接下来将密钥导入文件中。最后,您导入到这个密钥到本地的Java密钥库。至于公共互联网为基础的生产环境中,您将需要向认可的认证机构(比如Thawte,Verisign)购买签署的密钥或你的钥匙已经由认可的认证机构签署。内联网,你应该让你的IT部门预先设定用户的浏览器接受该证书,使他们不会得到该证书的警告信息。 生成密钥,使用如下的命令: keytool -genkey -alias tomcat -keypass changeit -keyalg RSA 使用您能记住的密码代替示例中的密码(changerit)。如果你不是使用Tomcat,你也将需要使用不同的alias。 至于姓名,输入localhost或者服务器的主机名,但不能是IP地址。 密钥导入文件,使用如下的命令: keytool -export -alias tomcat -keypass changeit -file server.cert 最后,您导入到这个密钥到本地的Java密钥库,使用如下的命令: keytool -import -alias tomcat -file %FILE_NAME% -keypass changeit -keystore $JAVA_HOME/jre/lib/security/cacerts 如果你使用Windows系统,使用% JAVA_HOME %代替上面的$JAVA_HOME。当然,上面的这些都是在要运行CAS的系统上操作的。 一旦你的CAS服务器已经启动,你能配置Liferay使用它。导航到控制面板中的设置->认证->CAS选项卡是一件很简单的事。开启CAS认证,修改URL属性为你的CAS服务器。 / 235 Liferay使用手册 《使用手册》 激活:设置这个为真开启CAS的单点登录 从LDAP导入:一个用户可能已经被CAS认证但在门户网站上还不存在。选择这个使得自动从LDAP导入门户网站中不存在的用户。 剩下的设置都是一些带有默认的值URL。改变默认的localhost值为CAS服务器。完成后,单击保存。当用户Dock的登录链接,他们将被引导从CAS服务器登录Liferay。 3.4.2.6、身份验证:NTLM NTLM是微软的协议,可用于通过微软IE进行身份验证。尽管微软在现代版本的Windows服务器上采取Kerberos,当对一个工作组身份验证时仍然采用NTLM。 开启: 选中这个选择框启用NTLM身份验证。 域控制器:输入您的域控制器的IP地址。这是包含Liferay用户的服务器。 域:输入域/工作组名。 3.4.2.7、身份验证:OpenID OpenID是一个由多个供应商实施的新的单点登录标准。这种想法是多个供应商可以实现该标准,然后用户可以向他们信任的与供应商注册一个ID。由该供应商发出的证书可以在所有支持OpenID的网站使用。比较好的OpenID供应商有AOL(http:// OpenID.aol.com / screenname),LiveDoor(http://profile.livedoor.com/username),以及LiveJournal(http://username.livejournal.com)。你可以在OpenID的网站上(http://www. openid.net)看到一份完整的清单。 使用OpenID对用户最明显的主要的好处是,他或她不必再为要参加他或她每一个网站注册一个新的帐户。用户可以在一个网站(OpenID提供商的网站)上注册,然后使用这些凭据在其他支持OpenID的网站进行身份验证。许多网站所有者经常挣扎着建设社区,因为最终用户不愿意注册这么多不同的帐户。支持OpenID使得这变得简单,因为障碍(注册多个帐户,并跟踪)都被移除了。该帐户的所有信息存放与OpenID提供者,使其更容易管理这些信息并保持最新。 Liferay门户可以作为一个OpenID的消费者,让用户自动注册和使用其OpenID帐号登录。实际上,产品使用OpenID4Java实现该功能。 OpenID是在Liferay中默认是启用的,但可以在这个选项卡禁用。 Atlassian Crowd Atlassian Crowd是基于Web的类似于CAS的单点登录产品。Atlassian Crowd可以用来管理许多不同的web应用和目录服务器身份验证。 由于Atlassian Crowd是一个OpenID的生产者,能在Liferay上运行,并已 经测试过。使用Crowd能在Liferay上简单的实现OpenID登录验证特性。 3.4.2.8、身份验证:OPENSSO OpenSSO是一个开放源码的单一登录解决方案,来自Sun的系统访问管理产品代码库。 Liferay与OpenSSO集成,让您使用OpenSSO将Liferay集成到包含了针对不同身份验证库的 / 235 Liferay使用手册 《使用手册》 不同身份认证模式基础设施中。 你在Liferay的服务器或不同的服务器上建立OpenSSO。按照OpenSSO网站(http:// opensso.dev.java.net)上的说明安装OpenSSO。一旦你安装后,在上面创建Liferay的管理员。使用昵称来映射用户。默认情况下,Liferay的管理员有1个为test的昵称。因此在OpenSSO中,你将注册一个ID为test,邮箱地址为test@liferay.com的用户。一旦你用户创建之后,使用这个用户登录OpenSSO。 在同一个浏览器窗口,跳转到运行Liferay的服务器的网址,使用同一个用户在使用的电子邮件地址test@liferay.com的登录。转到控制面板并单击设置- >身份验证 - > OpenSSO。修改三个URL字段(登录URL,注销URL和服务URL),使它们指向您OpenSSO的服务器(只修改了URL的主机名称部分),单击启用复选框,然后单击保存。当用户点击了登录链接Liferay将重定向到OpenSS的。 3.4.2.9、身份验证:SiteMinder SiteMinder是一个来自Computer Associates的单点登录实现。 Liferay 5.2现在已经内置与SiteMinder的集成。 SiteMinder使用一个自定义HTTP头实现了单点登录解决方案。 要在Liferay启用的SiteMinder认证,选择SiteMinder标签的启用框。如果您还在Liferay中使用LDAP,你可以选择从LDAP中导入这个选择框。如果此框被选中,SiteMinder认证不存在的用户从将从LDAP导入。 最后一个字段定义报头,SiteMinder用来跟踪用户。默认值是已填充。如果安装过程中您自定义了该字段,在这里输入自定义值。 当你完成后,点击保存。 3.4.2.10、默认用户关联 默认用户关联的链接有三个字段(每行一个),列出您希望新用户被默认设置的团体,角色和用户组。 Liferay的默认值是有新的用户都是用户角色和Power用户角色的成员。 Power用户角色使得用户有自己的网页,他们可以添加他们自己的信息组件,如博客,邮件,或日历。现在这是提供给所有用户,可以在protal-ext.properties文件中进行修改。现在,您可以使用power用户角色对一般的用户和你想在门户中给更多的权限,或者移除一些权限的用户进行不同的设置。 如果你定义了其他您希望新创建的用户默认的用户组,团体或角色,在这里输入他们。例如,您可能为某些用户组定义了预填充最终用户私人网页的页面模板。如果有希望每一个人都有的一个特定配置,你可以在这里输入这些用户组。 3.4.2.11、预留认证 下一个链接是预留认证。您可以在这里输入不希望别人使用的昵称和电子邮件地址。Liferay的会阻止这些称和电子邮件地址的注册。您可以使用此功能,以防止创建看上去像管理的ID或使用名字预定的用户。 / 235 Liferay使用手册 《使用手册》 邮件主机名: 下一个链接是邮件主机名。您可以输入(每行一个)其他邮件主机名除了一个已经在常规选项卡上配置的那个。当主机失效时,Liferay将故障转移到在这些主机上。 电子邮件通知 电子邮件通知 链接下有3个选项卡。发件人选项卡允许您设置门户网站管理的姓名和电子邮件地址。 默认情况下,这是Joe Bloggs 和test@liferay.com。你可以将它更改为任何你想要的。此姓名和地址将出现在由门户发送的所有电子邮件的发件人字段。另外两个选项卡(帐户创建通知和密码更改通知)允许您自定义发送到这两个事件给用户的电子邮件消息。给出了一些空位,如果你想使用的话,可以插入一定的值(如门户网站的网址)。 身份属性 身份属性部分有几个链接,地址、电话号码和其他您可以配置您的门户网站的信息,。这可以让你与运行门户网站的组织建立联系。 3.4.2.12、其他项:显示设置 该部分允许您设置默认门户语言和时区。您还可以设置门户的Logo,它会在已经配置的主题的左上角显示。使用此选项时,注意选择适合的图像文件来适应该空间。如果你挑选的图像太大,它会了混乱了导航的布局。 3.4.2.13、监测 关于控制面板的左侧下一个链接是监测。利用他,你可以看到在门户网站的所有活动的会话。出于性能的考虑,在产品中该设置通常是关闭,但如果开启它,你可以在这里查看活动着的会话。 3.4.2.14、插件配置 插件配置链接,对每一类安装在Liferay的插件都有选项卡。您可以使用这些选项卡来配置什么门户角色可以访问插件。例如,如果你想限制留言板组件的使用仅限于power用户,您可以使用组件的选项卡,在该字段删除用户角色,只留下power用户。要做到这些,只需点击你想要的组件,然后在该字段输入角色名。您在此处输入任何角色将能够使用该组件。 请注意,这是基本的配置和安全设置。如果你要完全禁用或启用访问某些组件,你可以这样做。如需更细粒度的权限,使用控制面板的角色和动作→定义权限按钮配置更具体的权限。 3.4.3、服务器管理员 服务器管理链接让您可以执行各种与整个门户网站服务器的管理相关的任务,管理的门户资源。点击链接就显得更为清楚:一个显示JVM可用的资源图立即展现在您面前。 / 235 Liferay使用手册 《使用手册》 3.4.3.1、资源 第一个选项卡称为资源。此选项卡包含了上述图形加多个服务器范围内采取行动,管理员可以执行。它们是: ●垃圾收集:您可以发送一个请求到JVM,开始垃圾回收任务。 ●清除缓存:您可以发送一个请求到JVM,对一个单独的虚拟机来清除缓存,集群缓存,或者数据库缓存。 ●重新建立索引:您可以发送一个请求,以重新生成所有的搜索索引。如果你不使用的Solr搜索服务器(更多信息参照第6章)这会影响网站的性能,所以尽量不要做,除非在非繁忙时间段。 ●生成线程转储:如果你在进行性能测试,您可以生成线程转储,一边等下进行检查,确定是否有死锁和可能发生死锁的地方。 3.4.3.2、日志级别 在这里,您可以动态地修改门户中任何类层次的日志级别。如果您有自定义代码,您已经部署了这不是在列表中,您可以使用添加分类选项来添加它。如果你改变了类层次结构顶级附近的日志级别(如com.liferay),所有该层下的都将改变他们的日志级别。如果您正在测试一些具体的事情,当您更改日志级别时,最好是设置得尽可能的具体,因为通过在类层次中修改的等级太高,可能会产生比你需要多得多的日志信息。 3.4.3.3、系统属性 此选项卡显示了JVM系统属性的详尽清单,以及许多Liferay系统属性。这些信息可用于调试,或检查当前运行的门户的配置。 3.4.3.4、门户属性 此标签显示了一个门户属性的详尽清单。在下一章我们会看到这些属性可以被定制。如果您需要检查的特定属性的当前值,它可以从这个屏幕上,而不必关闭门户或打开任何属性文件。 3.4.3.5、关闭 如果您需要关闭有用户登录的Liferay门户服务器,你可以使用关闭选项卡通知登录的用户服务器即将关闭。您可以定义离关机的分钟数和将显示的自定义信息。 你指定置的持续时间内,用户将在他们门户网站页面顶部看到你的消息。当时间到期时,所有的门户网站页面将显示一条消息说,门户网站已经被关闭。之后,该服务器将需要重新启动以恢复访问。 / 235 Liferay使用手册 《使用手册》 3.4.3.6、OpenOffice Liferay门户包含一个兼容JSR-170的文档库。这个库允许用户上传许多格式的文件到它们定义一个文件夹结构。 OpenOffice.org是一个开源的办公套件,它通常是在图形化模式下运行以创建文件,但它可以“服务器”模式运行。在服务器模式下运行,OpenOffice.org可以用于它支持的文件类型文件之间的转换。 Liferay的文档库组件可以利用这个功能进行联机自动转换文档。 你可以使用这个选项卡来告诉Liferay的如何连接到您的OpenOffice.org运行实例。你可以在正在运行Liferay系统的同一台服务器上安装OpenOffice.org。一旦你安装之后,你可以使用下面的命令以服务器模式启动OpenOffice.org: soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirst-startwizard 正如你可以看到,上面的命令指定OpenOffice.org运行端口为8100,这是在控制面板中的默认端口。如果你可以使用这个端口,你需要做就是选中启用选择框,这样Liferay将与OpenOffice.org集成。 如果你有别系统在这个端口上运行,找到一个可用的端口,并在上面的命令和控制面板上的OpenOffice.org配置页上指定它。当你完成后,点击保存。 3.4.3.7、门户网站实例 Liferay Portal允许您在一台服务器运行多个门户网站实例。每个门户网站实例的数据是分开的。但是,所有的门户网站的数据保存在同一数据库中。 每个门户实例需要自己的域名。 Liferay将根据域名引导用户到相应的网站实例。所以,在你你配置一个实例之前,先配置他在网络中的域名。当你准备好添加一个实例,单击这里的添加按钮。 你会被提示输入三个字段: Web编号:一般惯例是使用域名。这是一个用户生成的实例ID。 虚拟主机:在这里输入您的网络中配置的域名。当用户通过这个域名指向您的Liferay服务器, Liferay将送他们到正确的网站实例。 邮件域:输入此实例的邮件主机的域名。 Liferay的会使用它来发送来自门户的电子邮件通知。 当您填写完毕表单,单击保存。现在使用新的域名导航到门户网站。你会看到,你被带到了一个Liferay全新安装。这是您的新门户实例,现在可以按任何你喜欢的方式配置。 3.4.3.8、插件安装 插件安装链接显示了当前已经安装的所有插件。这些被分成一些选项卡,信息组件,主题,布局模板,钩子插件和Web插件。如果你想安装一个新的插件,点击安装更多的信息组件按钮。你将被带到插件安装程序,在这里您可以浏览Liferay的 / 235 Liferay使用手册 《使用手册》 组件仓库或安装自己的插件。插件安装程序将在下一章讲述。 3.4.3.9、总结 本章描述了在Liferay门户可以配置的资源,建立你需要建立的网站。我们已经看到了如何导航到Liferay的用户界面,使你可以到你需要的地方。我们还研究了门户网站的整体架构,以及如何使用Liferay着手设计您的网站。 下一步,我们对Liferay的控制面板进行深入讲解。使用控制面板,我们学会了如何管理用户,组织,用户组和角色。我们还学习了如何配置各种服务器设置,比如身份验证、LDAP集成和单点登录。我们还学会了用户与不同的用户组,团体和角色的默认关联,我们看到了如何保留昵称和电子邮件地址,使得用户不能在门户注册。 接下来,我们看到了如何查看和配置整个服务器的设置。我们看到了如何查看目前的服务器使用的内存,以及如何启动垃圾收集,线程转储,搜索引擎重新索引,以及清除各种缓存。我们学会了如何改变日志级别来调试门户的部分组件,和查看在门户网站中定义的各种属性。 最后,我们学会了如何正确地通知用户的门户网站即将关闭,以及如何与OpenOffice.org集成。还涉及了如何在一个已经安装Liferay的门户网站上运行多个实例和如何查看当前已经安装的插件。 所有这些信息都应该有助于使你也成为一位经验丰富的Liferay门户管理员。 4、Liferay协作组 Liferay门户附带有一个健壮的协作应用套件,你可以用它来建立用户社区网站。这些应用程序套件能满足所有你期望的功能应用需求,它是一个开源的门户开发套件。不同的Liferay的协作套件有差异,但是所有的应用程序都有一个共同的界面,安全模型和框架。它们继承了Liferay开发平台的所有优势,所以你可以使用与Liferay的用户管理和内容管理功能,建立一个良好集成和功能丰富的网站。本章将集中在介绍Liferay的协作套件的使用。你将学习如何建立和管理Liferay的协作套件: • 博客 • 日历 • 聊天室 • 邮件 • 留言板 • 维基 你将会看到如何使用这些套件,提供一个增强的用户体验和工具,以协助建立一个社区网站。 4.1、作用域 在5.2的Liferay的新概念中,它使用作用域替代了原来的角色管理。正如我们前面学到的,作用范围可以是门户网站、一个社区或一个组织。这意味着作用范围只在它驻留的区域产生影响。 / 235 Liferay使用手册 《使用手册》 例如,一个留言板管理员角色拥有完全访问权限对留言板会根据角色的范围有不同的权限。如果它是一般的角色,成员允许管理留言板通过门户。如果它是一个社区角色,成员有权限管理留言板在社区。如果它是一个组织成员,权限管理只能在留言板该组织在它们的作用的成员。 在一些类似的方式,一些Liferay portlet可以有范围不仅止于特定社区或组织的放置。你可以通过页面上的范围。 首先,字的范围是什么意思?范围是一个在门户网站数据库中存储的数据集孤立的数据。例如, 如果你在两个不同的社区,每个留言板会有们它自己的数据集。这使得可能有两个,20,或20000 在门户网站的留言板,因为每个都有它自己的数据的范围。 在Liferay的早期版本,域范围是硬编码仅限于组织和社区。如果你要叫一个非i迫切的portlet中, 这是另一种说法是区域范围 portlet的方式。是的,它们不是真正的单词,但它们是为了传达事实的每一个实例 portlet的设置有其自己的数据,该数据集是由一个被定义为范围有限,属于社区或组织。 在5.2版本的Liferay,你现在可以对任何网页设置范围。这可以允许t添加任何数字在一个社区或组织,只要出现在不同的页面,他们将有不同的数据集。这可以让你有一个以上的信息板,每社区或组织。 除非另有说明,本章所有的portlet支持作用域。这给你更多的灵活性在你设置你的门户网站。默认情况下,作用域保持不变,因为它总是由社区或组织设置的。如果你想改变作用范围,只需要几个简单的步骤。 1. 点击在portlet窗口(与三个点一)菜单图标。 2. 选择配置。 3. 选择范围标签。 4. 修改的当前页的作用范围。 5. 点击保存。 这一切都需要改变特定的portlet实例的范围。通过设置页面范围,你可以添加很多的这些portlet到一个特定社区或组织只要你想,都将被添加到不同的网页。 插图51:更改portlet范围 / 235 Liferay使用手册 《使用手册》 4.2、存档的设置 5.2 版本Liferay的另一个新特点是存档的设置。这意味着一旦你配置一个portlet容器,你可以保存在“档案”的设置,以便该门户可跟踪。如果有人在变化接着一个特定portlet的设置,它然后变得容易恢复这些更改回原来的归档配置。 要创建一个存档的设置,点击portlet容器的标题栏的菜单中的配置选项。如果你正在配置的portlet容器是那些你要存档,单击存档选项卡。如果没有,更改并保存设置直到你的portlet容器配置您想要的方式,然后单击存档标签。 只有一个字段填写:为你的档案名称取。创建一个名称为你的存档,然后点击保存。现在,你将在列表中看到您的存档。如果由于某种原因你需要恢复的portlet这些存档的设置,你可以点击操作旁边的存档还原设置要恢复。 除非有注明,本章所有的portlets容器都支持此功能。这是特别有用的,portlet有许多的配置选项,例如留言板portlet容器。 4.3、权限 所有的Liferay的portlet容器支持Liferay的强大的,细粒度的权限系统。如果你需要更多的基本的权限,portlet容器还支持标准的JSR - 286的权限,它定义于是否用户可以看到一个portlet。要配置这些权限,进入配置菜单,你会看到一个权限菜单。这将显示你在门户网站中定义的角色表。选择其中的角色是和配置更改的角色,然后点击提交。所有的Java标准的portlet都支持这些权限。 4.4、分享 正如网络的概念是一种应用而不是单纯的用户占用率一样被大家接受,组件的应用如今已经是非常流行了。网络这个概念经常被称为“Web2.0”,而且是组件使这个定义变成了现实。那么什么是组件呢?组件是一小段代码,且这段代码可以包含在任何的网页中,又不用安装在网站服务器中利用该代码可以提供某些特别的小功能。如果你曾经将一段YouTube的视频嵌入到你自己的网站中,以便其他人观看而又不用访问http://youtube.com,,那么你就使用组件了。 Liferay支持利用本身自带的portlets作为组件,你可以嵌入你自己网站上特定的portlets到其他可允许添加插件的网站中,例如Facebook。这项功能开辟了一种新的网站开发方式,并且这是你从未体验过的。 想要分享或者上传portlets组件,你可以在portlets标题栏的Configuration配置选项中找到Sharing标签,单击会有三个子选项。 4.4.1、任意网站 复制黏贴一小段代码到你自己的网站,将其作为portlets组件,这样就可以实现当用户访问你的页面时,就会将相关的portlets组件装载到页面上并显示。 4.4.2、Facebook 你可以将任何Liferay的portlets作为应用组件上传到Facebook,在上传时必须首先有开发授权key,同时Facebook的工具栏选项中提供了key的链接。然后,你需要在Facebook中建立页面,获得key并复制相关的网址。做完以上这些,最后就可以将网址黏贴在Facebook的工具栏选项中就完成了。 / 235 Liferay使用手册 《使用手册》 插图52:在Facebook Liferay的论坛 4.4.3、好友 最后分在共享选项卡的标签被称为朋友。此标签有一个单选框该对话框允许你给你的朋友允许添加为一个Widget应用到另一个网站。这是特别有用的对你的博客或日历如果你想分享。 4.5、博客 博客是web日志的意思。博客,首先,如Slashdot的网站(http://slashdot.org)有推广一个运行的条目列表,用户可以添加评论。以上时间,越来越多的网站如Digg,del.icio.us和在NewsVine采用的形式,使用户能够分享他们的意见和产生热烈的讨论。 经过一段时间的过程中,博客网站和应用开始出现,如blogger.com,blogspot.com。 TypePad,WordPress和Web的混合使用。这些应用允许个人经营他们在自己的网站使用相同的格式:运行列表条款是与网站的注册读者可以附加线程意见。人们运行一个博客被称为博客,有时他们建立一个完整的社区的读者是在他们的博客感兴趣。此外,还有一些几个谁经营自己博客的名人。它给人一种自我表达插座他们本来不会有,而无处不在的和广泛的影响互联网的保证,如果你有一些重要而有趣地说,有人会读到它。 / 235 Liferay使用手册 《使用手册》 插图53:Slashdot互联网上的第一个博客 Liferay Portal容器有一个博客容器允许你为你的网站用户提供博客服务。事实上,Liferay扩展功能使用博客容器在http://www.liferay.com提供顾客他们自己的博客。在增加一个博客portlet容器,这也有一个Blogs Aggregator portlet容器,它提供多种用户博客,放在一个列表中。我们将检查如何使用portlets容器创建博客网站,为你的用户。 4.5.1、博客Portlet容器 该博客portlet是可以从新增的应用协作菜单。你会发现这是一个Instanceable portlet中,这意味着它一旦被添加到任何社区或组织,这允许你使用博客portlet可以创建一个共享的博客,以建立一个像Slashdot的网站或创建多个个人博客建立一个像http://blogger.com网站。有什么区别?添加博客的portlet到一个社区或组织的网页创建一个成员共享博客社区或组织。博客portlet中添加到用户的个人空间刚刚创造了该用户的博客。无论哪种方式,博客portlet的作品一样。 插图54:在博客portlet容器的初步看法 默认情况下,博客的portlet将显示新的全部项目。我们添加portlet容器到一个页,我们没有全部的,因此portlet容器将是空。在我们增加整个的时候,我们将配置portlet容器以便显示整个方式我们想要做到的。 / 235 Liferay使用手册 《使用手册》 4.5.1.1、配置博客Portlet容器 单击菜单按钮(在上有三个点),然后点击配置。你将看到一个页面配置博客Portlet容器的各种选项: 图55:博客配置 最大可显示的项目:在初始页面允许选择的博客项目的总数。你可以选择多达100条显示。 显示方式:选择显示全部内容,显示摘要,或是仅显示标题。Liferay的摘要只显示前30字,如果你想了解更多内容,可以点击链接进入完整阅读。 启用评分:允许你使你的用户从从的博客评级,从1至5星级。 启用评论:允许读者评论你的博客条目总数。 启用评论评分:允许读者评论你评论,张贴到您的博客条目。 最大可显示的项目:允许你配置出现的条目数在你的RSS提要。 显示方式:像Web显示样式,但随着RSS提要。 格式:让你在RSS 1.0 ,RSS 2.0 ,Atom格式之间为种子做出选择 用你想要的方式设置选项并且点击Save 取决于是否这是一个个人博客还是一个共享博客,你可能想要修改博客许可。在默认情况下,为了个人博客,许可被建立,所以只有被添加容器的社区拥有者才能够添加条目。如果你想要和多个用户共享博客,很容易实现。 首先,为你的博客创建一个角色并且把它们添加到那个角色中。接下来,点击网路日志容器上的Permssions按钮。你将会看到一列门户网站和社区/组织角色,并且目前只有拥有者被检查。登记其他应该能够添加博客条目的角色,然后点击Save。 / 235 Liferay使用手册 《使用手册》 现在你准备开始添加博客条目。点击Add Blog Entry按钮。你将会看到以下数据条目屏幕: 插图56:添加博客条目 在liferay门户网站这个屏幕和任何其他的数据条目屏幕之间没有多大的区别。你可以得到一个标题,当条目将要出现时一种时间安排方式和一种丰富的编辑器,这种编辑器允许你格式化你的想要的条目,连同嵌入的图像,视频等等。 注意到当你打字时,条目每隔一个周期自动地保存在为草稿。当在浏览器出现故障或者网路中断情况下,你又不想失去条目,这样在你使用浏览器内部的容器时就可以给你几分内心的宁静。 你也可以使用相同于在门户网站任何地方发现过的标签机制对你的条目做标签。 博客容器也支持引用地址。这些是专门让你或者另外网站知道是否你或者有人链接到到一条博客条目的连接。例如,要是你想要在你的博客中写一条目并且参考其他人的条目,你可能把URL放到Trackbacks to Send域中的其他条目中。相似地,如果你想要链接到你博客中的其他人通过引用地址了解连接,保持检查Allow Incoming Trackbacks工具箱。这将会产生一个可以连同博客条目一起显示的URL。其他想要连接到你的条目中的可以使用这个URL用于连接,并且每次点击这个连接时,你的Liferay网站将会了解它并且能够跟踪点击。 一旦你完成博客条目,点击publis。你将回到条目列表,并且你将会看到你的条目。当显示格式被设置为Abstract并且条目数设置为10,效果如下: / 235 Liferay使用手册 《使用手册》 插图57:添加的第一个博客条目 你可能想在概括性视图中,你看不到引用地址连接,并且你只能看到已经添加的评论数目。要是你点击Read More连接,你将会看到文章的条目,在线程视图中的所有的评论和其他人能够使用的用于链回你的博客条目的引用地址连接。 另外,一个博客的完全视图包含添加博客条目到流行的聚合网站的方便的连接,例如Digg, del.icio.us和其他的。这给读者提供一种提交你的博客条目到这些聚合器的简便的方式,潜在的把流量带到你的网站。 正像你所看到的,博客容器是一种完全特征化的网络日志应用,这种应用将会提供给你和你的用户进入带有一种支持博客所需要的任何东西的博客世界的能力。 4.5.2聚合网络日志条目 如果你愿意,你可以建立一个完整的网页仅仅为了登记网络日志。网络日志聚合容器允许你发布来自一页上的多个博客的词条,它能进一步地可视网络日志条目。这种容器也是非常容易而且直截了当的安装。你可以把它添加到码头的添加应用菜单的协作目录中,作为一页。 如果你点击这个容器的标题栏中的菜单按钮的配置,你将看到网络日志聚合器的配置页面。从这里,你可以设置许多配置选项: / 235 Liferay使用手册 《使用手册》 插图58:网络日志聚合器的的配置 选择方法:你可以选择用户或者作用域。如果你选择用户,网络日志聚合器将会聚集你的系统中的每一个博客的条目。如果你想要简化聚合,你可以选择一种过滤用户的组织。如果你选择作用域,网络日志聚合器将仅仅包含在当前作用域内的用户的条目。这本质上将会限制博客聚合容器所驻留的社区或者组织的成员的条目。 显示格式:就像网络日志聚合容器,你可以选择许多不同的格式用于显示博客条目。 可显示的最大项目数:选择这种容器将会显示的最大条目数 实现RSS订阅:聚合的条目能够使自身成为一个RSS种子。如果你想要人们能够订阅你的聚集的博客条目,保持选择这种工具箱。 当你已经完成对聚合容器的设置之后,点击保存。然后点击返回到整个页面。 正如你愿意看到的,除了条目来自多于一个作者,网络日志聚合容器看起来非常像博客聚合容器。 4.6、日历 Liferay的日历容器是一个完整的日历解决方案。你可以安排任何数目的不同类型的事件,通过电子邮件或者文本消息接收警报,输入和输出你的日历等等。另外你可以输入和输出这种日历为iCalendar格式以用于其它方面。 利用一种相似于博客聚合容器的方式,你可以使用日历容器作为一种社区或者组织的网页上共享的日历,或者你可以使用日历容器作为一种个人日历,或者两者兼有。 / 235 Liferay使用手册 《使用手册》 插图59:Liferay日历容器 4.6.1、配置日历容器 进入容器标题栏菜单中配置选项。三个允许你配置三种不同类型的选项的tab:事件提示邮件中的From域,用于事件提示邮件的模板,用于容器本身的显示设置。 4.6.1.1、事件From 设置事件From名和邮件地址允许你定义From;你从日历容器中接收到的邮件信息域。这可以和你的邮件客户中的能够运行这些信息的邮件规则很好的一起运作。在默认情况下,名字被设置为Joe Bloggs和邮件地址为test@liferay.com. 4.6.1.2、事件提示邮件 在你已经为一个事件配置了提示器,这个tab让你自定义从容器接收到的邮件信息。它包括在Liferay中任何地方都能发现同样丰富的文本编辑器,并且这允许你格式化你的信息以便于你能够容易的辨认它。另外,有许多变量允许你把运行时间值插入到信息中,并且这些被列举在文本编辑器下面以便于在你的模板中合适的位置能够使用它们。例如,你可能想要事件开始事件日期与时间,还有包含在你所接收到邮件提示中的事件标题。插入与那些值相关的变量到你的模板中将允许你去那样做。 4.1.6.3、显示设置 当容器第一次被显示时,日历中显示设置允许你定义在日历中哪一个tab是默认的。在默认情况下,概括性的tab被显示,但是你可以按日、周与月设置成默认。 有额外的设置用于概括性的tab:你可以选择是否它具有水平或者垂直的布局,选择是否它显示最小月或者选择是否它显示今天的事件。 4.6.2、使用日历容器 日历容器通常以你所期待的方式工作。它继承了来自liferay容器库剩余的接口,所以你应该像在其他liferay库中寻找它们一样的位置去寻找通常的任务。 / 235 Liferay使用手册 《使用手册》 开始,你可能想要点击Permissions按钮。在这里你可以找到一组带有check工具箱的角色,代表这个角色是否具有Add Event或者Export All Events许可。在默认情况下,只有拥有者有许可做这些事情,这意味着在默认情况下,日历容器被建立用在个人空间中。在工具箱之外,liferay默认把日历容器放在所有用户的私人页面中,所以这一点被期待。如果你将要一直使用日历作为一种共享的日历,你可以在这里想要修改一些事情。 首先,创建一个门户网站,社区或者组织角色并且把用户添加到你愿意授权访问日历的那个角色。然后返回到日历容器并且点击Permissions按钮。选择靠近那个角色的check工具箱,这个工具箱应该访问一个或者两个功能(Add Event或者Export All Events),后点击Submit。 现在你准备开始使用你的日历。点击Add Event按钮。你将会看到一种允许你填写所有事件信息。 开始日期/时间:事件开始的日期和时间 持续时间:事件将要持续多长时间 整天的事件:检查这个工具箱为了不把时间和事件相关联并且让它持续一整天 对时区敏感:保持检查工具箱为了确保不管时区的情况下,门户网站跟踪事件 标题:时间的标题 描述:事件的描述 类型:选择许多预先配置的类型。你可以在portal-ext.properties文件中改变这些 重复:如果在时间表中事件有重复,选择时间表 结束日期:如果事件在时间表中重复,但是有一个会议设置的结束,输入结束日期。 提示器:选择是否发送一个提示,在事件发出它之前多久和通过什么介质(邮件,文本信息或者即时信息)发送它。注意这个特征被集成到门户网站的个性简要描述中,所以你将需要填写你的手机号和即时信使Ids,目的是为了使用这些特征。 当你已经完成添加事件后,单击保存 你可以按日,周,月,年或者以一种简单的方式浏览日历。 4.7、聊天 Liferay的聊天容器给你提供一种方便的方式,当他们登陆到你的网页时,允许你的用户互相发送即时消息。在每一页的底部,似乎有一栏显示有谁登陆,什么状态和在线用户已经开放的聊天。 / 235 Liferay使用手册 《使用手册》 插图60:liferay的聊天容器 聊天容器非常易于使用。为了改变设置,点击settings。这里你能设置你的状态,如果你在线是否显示和如果有人给你发信息是否有声音提示,然而在背景中有窗口或者tab 容器显示在线朋友的数目。为了和其中之一聊天,点击Online Friends 连接,然后点击朋友的名字。然后你可以开始跟他/她聊天。在任何时候你可以和多个人公开聊天,并且让他们中的一个或者更多个最小化。 聊天容器分布在liferay中,但是不包含作为war分布,因为它是一个独立的插件。如果过去你手动在应用服务器上安装liferay.war,你可以通过进入Control Panel安装聊天容器,点击Plugins Installation,然后点击Plugins Installation按钮。找到列表中的聊天容器,点击它,然后点击Install。 4.8、邮件 Liferay的邮件容器能够使用户使用一种易于使用的、普遍存在的界面,交互式访问邮件。如果你的邮件系统支持IMAP协议,你可以使用邮件容器把你的用户的邮件集成到你网页中。你也可以把邮件容器连接到一个由Google提供的邮件帐户中。 邮件容器分布在liferay中,但是不包含作为war分布,因为它是一个独立的插件。如果过去你手动在应用服务器上安装liferay.war,你可以通过进入Control Panel安装聊天容器,点击Plugins Installation,然后点击Plugins Installation按钮。找到列表中的聊天容器,点击它,然后点击Install。 / 235 Liferay使用手册 《使用手册》 插图61:带有消息模糊级的保护个人帐户的liferay邮件容器 为了把邮件容器和邮件帐户连接,点击Add a New Email Account连接。从那里,你可以在IMAP帐户和Gmail帐户之间做出选择。选择你想要的,并且填写出现的表格。 对于一个IMAP用户,这些域是必要的: 邮件地址:帐户接收邮件的地址 用户名:登陆帐户的用户名 密码:登陆帐户的密码 正到达的IMAP服务器:IMAP服务器的主机名 正到达的端口:IMAP服务正在运行的端口 使用安全的正到达的连接:如果你的服务器支持它,检查工具箱为了使用加密的服务器连接。 即将到来的SMTP服务器:SMTP服务器的主机名 正到达的端口:SMTP服务正在运行的端口 使用安全的正到达的连接:如果你的服务器支持它,检查工具箱为了使用加密的服务器连接。 对于一个Gmail帐户,你需要做的是提供你的邮件地址和你的密码和容器将会考虑剩下的。 完成之后,点击Save,接下来点击Check Your Mail。你将被带到一个界面,该界面允许你读你的邮件和构建新的消息。为了读一条消息,点击它。为了构建一条新的消息,点击容器左边的Compose Email连接。你将会被带到一个表格,该表格允许你使用存在于liferay任何位置的同样丰富的文本编辑器构建一个邮件消息。 / 235 Liferay使用手册 《使用手册》 邮件容器是一种把一种熟悉的服务集成到liferay提供的其它协作性的特征中的好的方法。 4.9、消息板 Liferay的消息板是这种产品提供的最广泛使用的协作性的特征之一。这种应用是一种艺术论坛应用的状态,该状态类似于你可能参与的许多论坛。不同点在于liferay的消息板能继承liferay开发平台的能力,从而提供一种其它的不能匹配的集成经历。 在无数的网站里,显然在主页和消息板之间没有连接。在一些情况下,用户甚至需要注册两次:第一次为了主页,第二次为了消息板。有时可能需要三次:主页,消息板和购物车。通过提供消息板连同所有其他的应用,liferay能够提供一种独一无二的,集成的方法用于建立网页。所有的集成工作由你来完成,并且你可以集中在建立你想要建立的网页上。 消息板容器有许多配置选项,但是它们直接可以使用并且为什么这个容器是用于网页的完全特征的论坛。开始,添加一个消息板容器到你的网页上,一旦添加成功,点击容器标题栏中的菜单图标并且点击Configuration。 4.9.1、邮件表格 第一个tab被标记为Email From。这个tab允许你配置来自消息板容器消息来自的邮件地址。在默认情况下,名字是Joe Bloggs和邮件地址是test@liferay.com 4.9.2、添加到邮件中的消息 当一条消息被添加到一个他们订阅的主题中时,这个tab允许你自定义用户接收的邮件消息。 激活:不检查工具箱为了禁用添加到邮件中的消息 对象前缀:键入一个将要被预先计划到邮件对象中的前缀。这样做通常是用户为了能建立消息过滤器去过滤邮件客户中一个具体文件夹的通知。 主体:输入任何应该出现在邮件主体中的内容 署名:键入任何应该出现作为邮件署名一部分的内容 在这些域下面有一部分叫做术语的定义,它定义了上面域可以使用的某些变量用于自定义邮件消息。一些变量用于消息板类别名,社区名还有更多的。 4.9.3、更新邮件的消息 除了它定义主题更新时用户接收的邮件消息,更新邮件的消息tab与添加邮件消息的tab是相同的。 4.9.4、线程优先级 你可以为消息线程定义常规优先级。为了强调它们,这些允许管理员标记带有特别优先级的某些线程。在默认情况下,三种优先级被定义:紧迫的,难对付的,通知。为了定义一个线程的优先级,键入名字,URL到代表它的图像图标和一个表示优先级应该出现的顺序的优先级数。 在这个表格中也有一个域,该域允许选择一种局部语言用于优先级。如果你需要做这,你可以选择来自选择工具箱的语言。 / 235 Liferay使用手册 《使用手册》 4.9.5、用户级别 根据用户发送消息的多少,可以对用户分级别。你可以建立常规的级别。默认情况下,提供从0到1000的消息数。 除了级别之外,你也可以根据角色选择谁充当调停者。默认情况下出示给你怎样做这些: 正如你所看到的,所有你所做的是设置级别,集合类型和类型名。在以上的例子中,任何具有社区角色的人,组织角色的,规则角色的或者在一个被叫做Message Boards Administrator的用户组,或者任何组织拥有着的人都能得到调停者级别。 关于线程优先级,在这个tab上,你可以定义是否你的级别局部与一种特定的语言。 4.9.6、RSS 消息板线程可以被作为RSS种子发布。这个tab允许你定义种子怎样产生。 可显示的最大项目数:选择在种子中可以显示的项目数 显示格式:选择格式。你可以发布完全的内容,摘要,或者仅仅是线程的标题 格式:在RSS 1.0,RSS 2.0, Atom 1.0中选择格式 匿名发送 这个tab也包含一个简单的检查工具箱。如果你想要允许用户对发送的消息划分等级,检查工具箱。不检查工具箱为了禁用这个特征。 当你已经完成建立消息板时,在你使用的tab上点击Save,然后点击return到整页。 4.9.7、许可 消息板容器显示的默认页有两个按钮。点击标有Permissions的标签。这允许你定义哪一个角色有能力添加线程的类别或者禁止滥用的用户进入消息板。选择角色和你想要配置的许可,然后点击Submit。 4.9.8、添加类别 你现在准备添加类别到你的消息板中。点击Add Category按钮。键入一个类别目录和类别的描述。在表格的底部有一个允许你激活邮件列表功能的检查工具箱。 邮件列表功能跟消息通知邮件相一致工作。如果用户订阅一个消息板类别,当有人邮递消息到那个类别时,他/她将会得到邮件。激活邮件列表功能允许那些用户简单的回复邮件客户中的通知消息,并且那些回复将会被自动邮寄到线程。 为了激活这种功能,你将需要一个用于类别的邮件帐户。一旦你点击检查工具箱,许多其它的选项将会出现。 邮件地址:键入将会接收消息的帐户的邮件地址 接下来,有两个tab:Incoming 和 Outgoing,这些定义用于接收邮件和发送邮件的邮件设置。Incoming的tab具有以下选项: 协议:选择POP或者IMAP / 235 Liferay使用手册 《使用手册》 服务器名:键入你所使用的邮件服务器的主机名 服务器端口:键入你的邮件服务所运行的端口 使用安全的网络连接:如果你的服务器支持它,检查工具箱是否使用加密连接 用户名:邮件服务器上的登录名 密码:服务器上的帐户名 阅读间隔:liferay将会在这一时间间隔内探询服务器,为了寻找要邮递的新的消息 Outgoing tab具有以下选项: 邮件地址:键入来自这个类别消息应该来自的邮件地址。如果你想要你的用户能够使用邮件回复这类别,这应该和在Incoming tab具有相同的地址。 使用常规的即将到来的服务器:如果你需要使用一种不同与用于配置门户网站的邮件服务器,检查工具箱。如果你检查工具箱,许多选项将会出现。 服务器名:键入你所使用的SMTP邮件服务器的主机名 服务器端口:键入你的邮件服务所运行的端口 使用安全的网络连接:如果你的服务器支持它,检查工具箱是否使用加密连接 用户名:邮件服务器上的登录名 密码:服务器上的帐户名 当完成了添加类别之后,点击Save。添加许多类别到你愿意的消息板中。 注意类别可能具有子类别。你可以添加许多顶级的类别,然后在每一个上面点击,并且添加类别到一个无线级别上。为了可用性,你不需要深化你的类别,否则你的用户将会遇到麻烦。 随着消息板的扩大,你可以一直添加更多的类别。 4.9.9、使用消息板 通过看liferay消息板容器,你的用户将会立刻辨认出界面相似于以前看到的许多其他的实现。对于因特网,消息板没什么新的,并且在很长时间内许多人已经一直使用它们。因为那,你的用户非常熟悉liferay消息板。 线程能够通过许多方式被看到。在容器的顶部有一组tab:类别,我的订阅,最近的邮递和对于管理用户的统计和被禁止的用户。类别tab允许用户浏览合适位置的类别去邮递一个线程。My Posts tab显示目前登录所有用户的投递。为了检索一些恰当的信息,这是一种返回你曾经对话的方便的方法。My Subscriptions tab允许用户管理线程订阅。如果你对特定的话题失去兴趣,你可能想要访问这个tab并且取消订阅一个线程。Recent Posts tab根据日期显示所有类别的投递,所以你可以跟得上消息板中的所有最新的讨论。 对于管理员,Statistics tab显示类别数,投递数和消息板中参与者的数目。它也有一列你的消息板所在的前几个投递者。Banned Users tab显示所有已经被禁止在消息板上投递的用户。 为了投递一个新消息线程,转向Categories tab,点击类别,然后点击Post New Thread按钮。你将会看到一个消息编辑表格。表格主体域不同于liferay中的其他容器。原因在于支持BBCode,它是一种被用在许多消息板产品中涨价标准表格。在BBCode发明之前,许多消息板产品将会允许用户进入HTML格式化消息。然而,这使得攻击者能够把恶意代码插入到消息板。人们发明BBCode目的是在没有允许用户进入HTML情况下,提供给用户一种格式化消息的方法。相似的,liferay支持消息板容器中的BBCode,因为被用于内容管理系统,博客容器和其他容器的其他编辑器产生HTML。这适用于那些其他容器,因为它们仅仅被特权用户使用,但是它不适用于消息板。除了这之外,许多消息板用户都熟悉BBCode并且习惯于使用它,为liferay的消息板提供的编辑器非常容易使用。 / 235 Liferay使用手册 《使用手册》 具有调停者访问消息板的用户能够修改消息的优先级。你也可以使用编辑器引用你回复的消息,插入表情图标,添加预先格式化的文本等等。 插图62:编辑一个消息板投递。你可以看到编辑器中可用的表情图标 被投递到消息板中的消息按默认以一种线程的视图显示以便于回复能够粘附到到恰当的父消息中。这连同对话很容易理解。 当用户可视化一个消息板线程,用户可以做出多种选择。在线程的右上方有三个图标,允许用户以平面图,树状图,组合图方式可视化线程。平面视图按被投递的顺序显示所有消息。树状视图以剖面图的方式显示所有消息以便于回复邻近将要回复的消息。组合视图显示在平面视图之下的顶端线程仅仅作为对象。 当用户可视化一个线程时,用户可以点击允许他们投递新线程,订阅他们将会看到的线程的连接,否者如果他们具有管理员访问权限,那么就把一个线程移动到另外一个类别。不管新消息什么时候被投递到线程,订阅一个线程都会引起liferay给用户发送邮件。如果你已经激活线程驻留的邮件列表类别特征,为了投递回给线程,用户就可以在没有访问网站的情况下,简单地回复这些消息。 消息板容器也是高度集成了liferay的用户管理特征。如果你已经下载一个,消息板上的投递显示用户的画面,还有用户在你的网站上创建一个ID的日期。 4.9.9.1、留言板管理功能 留言板portlet提供了消息线程的的日常管理。你可能希望通过一个角色管理这个功能,然后将这个角色委派给你的一个或个更多用户。这样你就可以花更多精力专注于网站的其他方面。为了做到这个,你可以创建一个叫做留言板管理员的角色,这个角色作用范围可能是一个门户,一个组织或者一个社区。如果你有一个门户网站全局角色,这个角色的成员就能够管理门户网站任何留言板portlet。若这个角色是一个社区或组织的全局角色,且这个社区或组织拥有这个角色时,其成员将能管理其中的留言板Portlet。 / 235 Liferay使用手册 《使用手册》 进入控制面板然后创建这个角色。一旦它被创建,就可以单击ActionsàDefine Permissions.单击portlet权限按钮,浏览列表直到你找到留言板portlet然后点击它。你将会看到一个屏幕允许你去配置portlet上的各种权限。 授予权限时,你希望留言板管理员拥有权限然后单击保存。然后你可以向这个角色添加用户,这些用户能够继承这些权限。 留言板管理员可以执行已经呈现出来的所有功能,包括创建和删除类别以及发布线程。除了这些,还有一些功能可供选择。 Illustration 63: Message Boards permission / 235 Liferay使用手册 《使用手册》 4.9.9.2、移动线程 很多时候,一个用户会在一个错误类别中发布一个线程。在这种情况下,管理员需要将其移动到正确类别中。这很容易做到。首先点击线程。如果你有管理员权限,在这个线程的顶部有一个标记为“Move Thread”的链接,点击这个链接,将会呈现一个简单表格允许你选择一个将这个线程移入的类别以及一个复选框允许你发布信息来解释移动线程的原因。这些消息将会作为你移动线程的回复。当动作完成后,单击“Move Thread”按钮,线程就可以被移动了。 4.9.9.3、删除线程 拥有管理消息权限的用户能够删除线程。有时候用户可能会讨论一些不合适的话题或者透露一些不该透露的消息。在这种情况下,你可以从留言板上简单的删除线程即可。这是很容易实现的。首先,查看线程列表。下一步每一个线程就是一个按钮。点击操作→删除以删除该线程。但这并不能防止用户重新发布这类消息,所以你需要在删除线程或考虑未来选择时时刻保持警惕。 4.9.9.4、禁止用户 不幸的是,有时候某些用户行为很让人难以接受。如果你遇到这种用户,你当然可以试着去警告他(她)其行为让人难以接受。如果这样不起作用的话,你可以禁止这种用户在留言板上留言。 同样的,这很容易做到。找到所有这样的用户。在用户的名字/资料图片的下面有一个标记为“禁止该用户”的链接。点击这个链接就可以禁止用户在留言板发言。如果被禁止用户在事后能够道歉或者停止类似活动,你可以考虑回复用户相关操作。要做到这一点,点击留言板portlet顶部禁止用户标签,这样就会显示一个由被禁止用户组成的列表,在此列表中找到并单击取消禁止该用户的链接。 4.9.9.5、分裂线程 有时候,一个线程将持续一段时间,讨论却完全转到了其他地方。在这种情况下,你需要在讨论分离的地方分裂线程,并且在新主题的地方创建一个新线程。管理用户将看到一个线程拆分后的每个环节。为了分裂线程,单击链接。将会呈现一个表格允许添加一个解释后的分裂线程,点击“OK”分裂线程。 4.9.9.6、编辑帖子 管理用户不仅可以编辑他们自己的帖子,而且可以编辑其他人的。有时,用户会张贴受版权保护的材料或者不合适的图片。你就可以编辑这些帖子,这样可以允许你编辑不应该发布的信息或检查不允许在你的留言板上出现的信息。 / 235 Liferay使用手册 《使用手册》 4.9.9.7、权限 不仅可以在线程上进行权限设置,而且还可以对单独岗位进行设置。你可以选择限制一个特定的会话或帖子。为了做到这一点,点击帖子中的“Permission”链接,然后在“Delete”,“Permission”,“Subscribe”,“Update”以及“View”中选择权限来授予给特定的访问。 这个功能能够给一些特权用户在某个线程上快速操作,但是其他用户只允许查看,或上述权限的某种组合。 4.10、维基 Liferay的维基 portlet,和留言板portlet一样,是一个功能全面的维基应用,即拥有所有维基当前发展水平的功能再次,虽然,它拥有利用门户网站平台的所有功能的优势。因此,它是完全集成Liferay的用户管理,标签和安全平台。 那么维基是什么?简单来说,一个维基就是一个应用,这个应用允许用户在信息上进行合作。当然,这就有很多实际应用——最著名的就是维基百科,它是一个由全世界用户协作利用一个维基完成的完整的百科全书。另一个例子就是门户维基,这是用于对产品的标准版的合作文件。 一个维基应用允许用户创建和编辑文件并且进行相互链接。为了达到这个目标,要运用一种特定格式的标记,有时称为维基text。不幸的是,许多不同维基应用的繁衍导致各种不同产品中维基text的语法产生了轻微的变化,因为每一个新维基都试图专注于其他维基没有的新特性上。 由于这个原因,一个叫做维基creole的工程出现了。这个工程促使2007年维基creole 1.0版本的发布,此举是试图定义一种标准维基标记使得所有的维基都能支持这种标记。 门户维基不定义自己的维基text语法,而是把维基Creole作为自己的语法。此语法是最佳的维基语法且必须为其他维基的用户所熟悉。Portlet在页面编辑表格上为语法提供了轻便的备忘单,提供一个到完整的文档的链接,如果你想使用一些wiki-Creole的高级功能。 4.10.1、维基门户网站入门 维基 portlet动作原理同门户的其他portlet一样。利用“Add Application”菜单,然后点击维基portlet标题栏portlet菜单中的“Configuration” 来向页面中添加portlet,你应该会看到一些选择,这些你可能很熟悉。 在消息面板的protlet中还可以配置来自维基百科protlet的消息。通过在Email表格中的选项里填入用户名和邮箱地址,protlet就会将您的邮件发送出去。当增加新的维基页面时,页面添加邮件选项可以帮助您定制发送给其他用户的消息。当有维基页面被编辑时,页面更新邮件选项可以帮助您定制发送给其他用户的消息。 显示设置选项用来配置如何显示维基和维基页面给用户。用户通过拖拉进显示列表或者隐藏列表,选择显示哪些维基。用户还可以启动维基页面上的评论功能,有了评论功能,不同的用户便可以就操作相关的问题进行交流,相互协作。 / 235 Liferay使用手册 《使用手册》 RSS用来设定RSS对维基的显示数量,可以设置为显示全部或者一部分的项目和摘要。 在设置完所有的选项后,请点击保存按钮并点击返回,回到这个页面。 4.10.2、管理维基百科 维基百科protlet包含多个维基站点,在默认情况是只有一个,并成为主维基。在protlet窗口的左上部有个扳手图标,这个是主维基按钮,点击该按钮会进入一个窗口,在这个窗口中可以对维基进行增加、修改和删除的操作。同时还会看到主维基是默认为用户添加的。 在该窗口的上部是一个许可按钮,点击它可以让用户定义权限级别,只有权限够得才能创立维基。如果你已经定义了权限,点击增加节点栏并提交,那么就创建了一个有在protlet建立维基权限的角色。 点击增加维基按钮会进入一个窗口,在这个窗口中允许你设置维基的名字和描述,当然也可以用默认设置。创建了一个新维基后,该维基会显示在protlet主页面的顶部列表中。 在靠近维基列表的是一个执行按钮,该按钮包含如下几个选项: 编辑:用于编辑维基的名字和描述; 权限:用于编辑访问、增加页面、删除页面、导入页面、维基配置、订购维基、更新已有页面和查看维基的权限; 导入页面:通过该选项可以从其他维基页面导入你的页面。通过该选项实现将其他维基移植到新页面,以后执行用Liferay维基就可以访问到全部内容。你或许还想将一系列不相同的应用移植到你自己的页面,例如不同的论坛,不同的维基,不同的目录管理系统,这些在这里还并未全部实现的。 目前,只有维基百科可以实现上述功能,其他功能在不久的将来也是可能实现的。 订阅:一个用户可以订阅一个维基节点,并随时添加页面或者对其进行更新,Liferay将会发送一封电子邮件给用户,通知他或她发生了什么。 删除:删除维基节点。 要返回到您的维基,点击维基列表中的相应名称。 4.10.3、添加3和编辑维基页面 默认情况下,有一个页面添加到你的维基,此称为FrontPage。要想将数据添加到你的维基,请按一下portlet右上方的Edit链接。您将会进入一个空白的编辑页面。 / 235 Liferay使用手册 《使用手册》 Illustration 64: Editing the default page in the 维基 portlet 你现在可以开始在页面中添加内容了。请注意,有一个非常方便的“备忘录”,可以帮助检查维基语法。你可以使用这种语法来格式化您的维基页面。例如考虑下面的维基文件: 根据这个将会产生如下的维基页面: / 235 Liferay使用手册 《使用手册》 Illustration 65: 维基 text added to front page 上图增加了一个简单的标题,一段文字,以及页面的若干链接。请注意,链接颜色都是红色的,而不是Liferay主题中的默认蓝色。这表明,背后的链接页面并不存在,因此需要新建。如果你点击其中的一个链接,你将立即转到之前编辑头版时处在的编辑屏幕上,此时你就可以创建刚才被点击的链接背后的页面。Liferay将在页面顶部显示一个说明该网页尚不存在的通知,而你现在正在新建维基页面。所有你需要做的就是创建一个现有的页面链接。 请注意,在屏幕的顶部,你可以从Creole 维基格式和来自Liferay的HTML编辑器中进行选择。我们一般推荐你使用Creole 维基格式,因为它的内容和代码划分得更清晰。如果您希望您的所有用户都使用Creole 维基格式,您可以禁用使用portal-ext.properties文件的HTML格式。更多信息,请参阅下一章关于如何配置格式。 在页面编辑屏幕的底部,你可以选择文章类别。类别是创建维基页面下的一个层次列表。这使得你可以以一个更正式的方式来组织你的内容。您可以使用控制面板的标签和类别部分来创建类别。 4.10.4、页面详情 当浏览网页时,您可以通过点击页面的右上角的“Deyails”链接来查看页面详情。这允许你查看页面的许多属性。其中有几个标签将所有详情都组织在比较方便的类别里。 详情 详情标签显示了页面的各种统计数据,也包含一些你可以在页面上执行的动作。 标题:显示页面的标题。 格式化:显示为克里奥耳页面或HTML所做的格式化。 最新版本:显示页面的最新版本,当一个页面被编辑之后,维基portlet组件会立刻追踪页面的最新版本。 作者:显示创建页面的用户。 最新修改:显示最近修改页面的用户。 附件:在页面上显示附件的序号。 RSS签名:包含的链接允许你订阅到整个维基或只是这一页。 高级ACTIONS:包含的链接允许你修改页面上的权限,可以拷贝,移动(重命名),或删除网页。 / 235 Liferay使用手册 《使用手册》 4.10.4.1、历史 此标签显示了从维基页面创建以来的版本列表。 你可以还原一个页面回到以前的状态,你也可以通过点击版本比较按钮选择不同版本,比较的各版本差异。 4.10.4.2、进出链接 接下来的两个选项卡为了进出链接而设定,它们是进出页面的维基链接,你可以使用该选项卡检查该页面和其他页面的传递方式。 4.10.4.3、附件 最后一个选项卡是附件。您可以附加任何文件到维基。最主要是用于添加图像到维基文章中,这些文本中图像内嵌入合适的WikiCreole语法以便引用,这是在维基文档中包含插图的好方法。 4.10.5、维基portlet导航 在portlet的顶部是一个链接菜单,让你可以浏览各地的维基网站。旁边的维基管理按钮的当前portlet中创建的维基网站列表,只需简单的点击维基网站名,就可以浏览该网站。其他的是一些导航链接: 首页:回到维基主页。 最近修改:显示最近修改的页面 全页:一个按字母单调排列的菜单显示当前维基保存下的所有页面。 单页:一个没有其他链接的页面菜单,当你在编辑时,点击了某个维基之外的页面又没有认识到它是某特定页面的单一链接那么单页就出现了。你可以通过这种方式重新查看单页,这样你可以重新连接到他们或者从维基上删除不再关联的单页。 查找: 在这里输入一个词,然后点击搜索按钮,在维基里搜索项目。如果搜索词是不存在,将显示一个链接,允许你创建一个与你搜查内容相关的新的维基主题页面。 4.10.6、概要 我们一起探讨了Liferay'合作套件上的所有portlet组件。你看到了你可以使用统一的接口以类似的方式配置所有portlet组件,此外,我们在后续中将继续介绍所有portlet组件。 博客和博客聚集的portlet组件可以用来管理共享博客后者让博客立刻变成属于一个群体。您所希望的在博客中应该拥有的所有功能在这些portlet组件都有,包括丰富的文本编辑,群集,标签,RSS feeds等等。 同样,日历portlet组件让你可以管理一个共享的日历或者一个群组日历,包括各种的事件特性,比如事件同志,事件重复,标准日历格式的导入导出。 你也可以方便地把邮件和邮件portlet组件结合起来,您可以添加任意多你想要添加的IMAP或Gmail的邮件帐户,这个组件可以凭借其他Liferay为你集合的信息在同一个位置组织邮件。 / 235 Liferay使用手册 《使用手册》 关于Liferay消息板portlet组件的讨论就比较轻松,该组件可以轻松管理繁杂的论坛,它继承了所有Liferay平台的安全性,包括行政职能,线程优先级,移动线程,嵌套讨论,禁止用户等等。 Liferay的维基portlet组件是一个最先进维基应用,用户可以利用网页进行合作。而且,它继承了Liferay平台在安全、接口、搜索上的优势,。你可以使用维基的portlet组件管理 多个维基节点,或使用多维基portlet组件来管理每一个节点。 Liferay的协作平台是一个综合应用的全套套件,它允许用户一起工作。你可以用它来产生更好的效果,以提升您的网站,建立一个充满活力的积极的社区。 5、高阶Liferay配置 Liferay是通过配置一系列存储在数据库和属性文件中的设置来配置的。修改这些文件可以从一定程度上改变Liferay的行为。有很多配置选项可以被设置,所以这章的内容将会有覆盖相当大的范围。我们将会先复习存储再Liferay根目录下的被称为portal-ext.-properties的主要配置文件。 还有另外一些你想进一步自定义的的设置。它们包括改变某个即用的默认值,安全配置,通过插件管理添加特性以及访问Liferay的网页服务。我们将会特别地讨论这些话题: l 高级Liferay配置:这包括portal-ext.properties文件的定制; l 插件管理:你将会从Liferay的官方知识库以及Liferay社区知识库学会如安装插件(组件和主题),以及如何创建你自己的插件知识库。 l Liferay SOA(Service-Oriented Architecture,面向服务的体系结构):将讨论从门户之外远程访问Liferay服务,以及如何配置这些服务的安全设定。 5.1、Portal-ext.properties文件 Liferay的属性文件与大部分其它产品的配置文件不同,其他产品不鼓励修改默认配置。事实上,这个包括所有默认配置的文件存储在一个以jar为后缀的文件中,这使得要定制这些默认属性更加困难。为什么要这样构建呢?因为Liferay在一个单独的文件中用到了重写的概念,而不是进入默认配置文件中去修改。你只需把你自己要定制的设定放到你自己的配置文件中,这样你的门户的配置文件就会简洁并且仅包括你需要的设定。这将使决定一个特定的设定是否要被定制变得更加简单,而且也让在不同的Liferay的安装过程中的设定变得更加轻便。 默认配置文件为portal.properties,位于portal-impl.jar文件中。这个jar文件位于Liferay Portal的WEB-INF/lib文件夹中。被用于重写配置的文件为portal-ext.properties,这个文件可以放在你的Liferay根文件夹(请参见第二章:应用服务器文件夹位置的初始安装)。默认状态下,这个文件是不存在的,除非你正在运行一个老版本的Liferay。接下来简要介绍这个文件中的可以重写portal.properties文件中的默认值的一些选项。这些选项以其逻辑顺序出现,而不是像系统中与其他属性相关的许多属性那样是以字母顺序出现的。 / 235 Liferay使用手册 《使用手册》 5.1.1、属性覆盖 这个属性定义了从哪里获得被重写的属性。默认情况下是portal-ext.properties。更新不该在原有的文件(portal.properties)上修改,而是应该在这个文件的重写版本上修改。而且,每个门户实例都遵循portal-companyid.properties协议有它自己的重写属性文件。 例如:你应该先读portal.properties,接着是portal-ext.properties,然后是portal-test.properties。 例子: include-and-override=portal-ext.properties include-and-override=${liferay.home}/portal-ext.properties 你能通过使用external-properties系统户型来添加额外的属性文件来重写默认值。 一个通用用例就是当更新到新版的的Liferay时保存原来的属性值。 例子: java ... -Dexternal-properties=portal-legacy-5.1.properties include-and-override=${external-properties} 5.1.2、LIFERAY HOME liferay.home=${resource.repositories.root} 这个属性是为了向后兼容性。设置这个属性为liferay.home resource.repositories.root=${default.liferay.home} 5.1.3、门户环境 这定义了portal servlet环境的路径。这是必须的,因为在Java EE 5之前javax.servlet.ServletContext没法使用环境路径。 如果你部署portal到包括根目录下的其他路径,请设定这个属性的值。 例子: portal.ctx=/ portal.ctx=/portal 5.1.4、资源库根路径 为各种知识库和资源指定默认的根路径。在此路径下,若干个目录将会为热部署功能,JCR(Java Content Repository,Java内容仓库)等而创建。 例子: resource.repositories.root=${user.home}/liferay resource.repositories.root=/home/liferay / 235 Liferay使用手册 《使用手册》 5.1.5、技术兼容包 设置这个属性值为true,能使变成配置成为可能,从而使对于每次测试Portlet TCK都能获得一个URL。除非你在运行TCK测试,否则永远都不要设为true。 tck.url=false 5.1.6、模式 设置这个属性值为true时,如果数据库为空,将自动地创建表并用默认数据填充。 schema.run.enabled=true 设置这个属性值为true是为了用最小数量数据填充。若设置为false,则用大量样例数据填充。 5.1.7、更新 输入一列逗号来为实现com.liferay.portal.upgrade.UpgradeProcess的类名划定界限。这些类将会运行并开始更新就数据来匹配最新版本。 upgrade.processes=\ com.liferay.portal.upgrade.UpgradeProcess_4_3_0,\ com.liferay.portal.upgrade.UpgradeProcess_4_3_1,\ com.liferay.portal.upgrade.UpgradeProcess_4_3_2,\ com.liferay.portal.upgrade.UpgradeProcess_4_3_3,\ com.liferay.portal.upgrade.UpgradeProcess_4_3_4,\ com.liferay.portal.upgrade.UpgradeProcess_4_3_5,\ com.liferay.portal.upgrade.UpgradeProcess_4_4_0,\ com.liferay.portal.upgrade.UpgradeProcess_5_0_0,\ com.liferay.portal.upgrade.UpgradeProcess_5_1_0,\ com.liferay.portal.upgrade.UpgradeProcess_5_1_2,\ com.liferay.portal.upgrade.UpgradeProcess_5_2_0,\ com.liferay.portal.upgrade.UpgradeProcess_5_2_1,\ com.liferay.portal.upgrade.UpgradeProcess_5_2_2 5.1.8、核查 输入一系列的逗号来为实现com.liferay.portal.integrity.VerifyProcess的类划定界限。这些类将会继续启动来核查和检验任何在数据库中发现的完整性问题。 verify.processes=com.liferay.portal.verify.VerifyProcessSuite 定义核查数据库完整性的频率。 核查步骤中的一些常量: public static final int ALWAYS = -1; / 235 Liferay使用手册 《使用手册》 public static final int NEVER = 0; public static final int ONCE = 1; verify.frequency=1 5.1.9、自动配置 输入一系列的逗号来为实现com.liferay.portal.kernel.deploy.auto.AutoDeployListener的类划定界限。这些类是用来处理WARs的自动部署过程。 auto.deploy.listeners=\ com.liferay.portal.deploy.auto.HookAutoDeployListener,\ com.liferay.portal.deploy.auto.LayoutTemplateAutoDeployListener,\ com.liferay.portal.deploy.auto.PortletAutoDeployListener,\ com.liferay.portal.deploy.auto.ThemeAutoDeployListener,\ com.liferay.portal.deploy.auto.WebAutoDeployListener,\ com.liferay.portal.deploy.auto.exploded.tomcat.LayoutTemplateExplodedTomcatListener,\ com.liferay.portal.deploy.auto.exploded.tomcat.PortletExplodedTomcatListener,\ com.liferay.portal.deploy.auto.exploded.tomcat.ThemeExplodedTomcatListener 设置以下值为true使呢能够自动部署布局模板,组件和主题。 auto.deploy.enabled=true 设置自动部署布局模板,组件和主题是扫描的目录。 auto.deploy.deploy.dir=${liferay.home}/deploy 设置自动部署过的WARs所要复制到的目录。应用服务器或者servlet容器必须知道这个目录并进行侦听。 不同的容器有不同的热部署路径。例如:Tomcat侦听${catalina.base}/webapps而JBoss侦听${jboss.server.home.dir}/deploy。设置一个空目录将会自动使用应用服务器指定的目录。 例子: auto.deploy.dest.dir= auto.deploy.default.dest.dir=../webapps auto.deploy.geronimo.dest.dir=${org.apache.geronimo.base.dir}/deploy auto.deploy.geronimo-jetty.dest.dir=${org.apache.geronimo.base.dir}/deploy auto.deploy.geronimo-tomcat.dest.dir=${org.apache.geronimo.base.dir}/deploy auto.deploy.glassfish.dest.dir=${com.sun.aas.instanceRoot}/autodeploy auto.deploy.glassfish-tomcat.dest.dir=${com.sun.aas.instanceRoot}/autodeploy auto.deploy.jboss-tomcat.dest.dir=${jboss.server.home.dir}/deploy auto.deploy.jetty.dest.dir=${jetty.home}/webapps auto.deploy.jonas-jetty.dest.dir=${jonas.base}/webapps/autoload / 235 Liferay使用手册 《使用手册》 auto.deploy.jonas-tomcat.dest.dir=${jonas.base}/webapps/autoload auto.deploy.resin.dest.dir=${resin.home}/webapps auto.deploy.tomcat.dest.dir=${catalina.base}/webapps auto.deploy.weblogic.dest.dir=${env.DOMAIN_HOME}/autodeploy 以毫秒为单位设置扫描目录内容变化的时间间隔。 auto.deploy.interval=10000 设置在讲一个文件拉入黑名单前尝试热部署的次数。 auto.deploy.blacklist.threshold=10 当部署的WARs为未打包时设置以下属性值为true。若你的应用服务器在处理大型WARs是存在并发性问题,设置这项属性为false。 auto.deploy.unpack.war=true 如果你想要部署这重命名portlet.xml为portletcustom.xml,设置以下属性值为true。这仅仅当你在WebSphere 6.1.x部署版本低于6.1.0.7的情况下情况下是必须的。因为再Liferay正在尝试处理一个portal时,WebSphere的portlet容器会尝试处理一个portlet。 我们注意到,根据IBM的6.1.0.9之后的版本,你必须在web.xml描述文件中添加一个环境参数,并设置为flase。这个描述文件位于你的protlet应用程序,其名称为com.ibm.websphere.portletcontainer.PortletDeploymentEnabled。这个参数使WebSphere的内置portlet容器在你的portlet应用程序被破坏时忽略它,并使Liferay收集它。 auto.deploy.custom.portlet.xml=false 设置以下的属性值为1,如果你正使用JBoss的PrefixDeploymentSorter。这将在你的WAR名字前附加一个1。例如,如果你部署了一个叫testportlet.war的portlet,它将会部署成1testportlet.war.JBoss现在知道在另一个WARs被加载后加载这个portlet。然而,它在环境目录中会去除1。 Modify /server/default/conf/jboss-service.xml 参见org.jboss.deployment.scanner.PrefixDeploymentSorter auto.deploy.jboss.prefix=1 设置Tomcat配置目录的路径。这个属性用来自动部署分解的WARs。Tomecat环境在自动部署目录下找到的XML文件会被复制到Tomcat 配置目录下。环境XML文件必须有一个指向有效WAR目录的docBase属性。 auto.deploy.tomcat.conf.dir=../conf/Catalina/localhost 设置路径给Tomecat的全局装载程序。这个属性只有在单独的tomcat 环境下才有必要。 auto.deploy.tomcat.lib.dir=../common/lib/ext 设置在自动部署过程中有可能需要下载的库的URLs library.download.url.quercus.jar=http://lportal.svn.sourceforge.net/viewvc/* checkout*/lportal/portal/trunk/lib/development/quercus.jar library.download.url.resinutil. jar=http://lportal.svn.sourceforge.net/viewvc/*checkout*/lportal/portal /trunk/lib/development/resin-util.jar / 235 Liferay使用手册 《使用手册》 library.download.url.script-10.jar=http:// l portal.svn.sourceforge.net/viewvc/*checkout*/lportal/portal/trunk/lib/development/ script-10.jar 设置Glassfish的设置值使JSR88应用部署成为可能。 auto.deploy.glassfish-tomcat.jee.deployment.enabled=false auto.deploy.glassfish-tomcat. jee.dm.id=deployer:Sun:AppServer::localhost:4848 auto.deploy.glassfish-tomcat.jee.dm.user=admin auto.deploy.glassfish-tomcat.jee.dm.passwd=adminadmin auto.deploy.glassfish-tomcat.jee.df.classname=com.sun.enterprise.deployapi. SunDeploymentFactory 5.1.10、HOT DEPLOY 输入一系列逗号为实现com.liferay.portal.kernel.deploy.hot.HotDeployListener的类名划定界限。这些类用来处理在运行时WARs的部署以及为部署部分。 注解:PluginPackageHotDeployListener始终都必须放在第一位。 hot.deploy.listeners=\ com.liferay.portal.deploy.hot.PluginPackageHotDeployListener,\ com.liferay.portal.deploy.hot.HookHotDeployListener,\ com.liferay.portal.deploy.hot.LayoutTemplateHotDeployListener,\ com.liferay.portal.deploy.hot.PortletHotDeployListener,\ com.liferay.portal.deploy.hot.ThemeHotDeployListener,\ com.liferay.portal.deploy.hot.ThemeLoaderHotDeployListener,\ com.liferay.portal.deploy.hot.MessagingHotDeployListener 5.1.11、HOT UNDEPLOY 设置以下属性为True使得允许非部署插件。 hot.undeploy.enabled=true 以毫秒为单位设置为卸载部署间隔:等待卸载部署结束的时间。 hot.undeploy.interval=0 设置以下属性为true使在部署一个新的版本前卸载部署插件。这个属性将在属性hot.undeploy.enabled设置成true是才必须用到。 hot.undeploy.on.redeploy=false / 235 Liferay使用手册 《使用手册》 5.1.12、插件 输入一系列以逗号隔开的所支持的插件类型。 plugin.types=portlet,theme,layout-template,hook,web 输入一系列以\n字符分开的Liferay插件库。 plugin.repositories.trusted=http://plugins.liferay.com/official plugin.repositories.untrusted=http://plugins.liferay.com/community 设置这个属性为false是为了防止当一个已安装的插件有新的版本时接受窗口的提示。 plugin.notifications.enabled=true 输入一系列以\n字符分隔的插件包标识。当这些插件的新版本可用时,管理员将不会被通知。这些标识符是以组的方式或者人工的方式呈现的。你也用星号来匹配任何有相同前缀字符的标识符。 plugin.notifications.packages.ignored=liferay/sample-jsp-portlet 5.1.13、PORTLET 设置这个属性来实现portlet容器的使用。默认的实现方式是内设的实现,提供最好的向后兼容性。Sun公司的实现提供了更多的特性,将在未来成为被推荐的实现方式。 portlet.container.impl=internal #portlet.container.impl=sun 设置这个属性来定义所有热部署portlets默认的虚拟路径。参看liferay-portlet-app_5_1_0.dtd和虚拟路径原理以获得更多信息。 portlet.virtual.path= 设置这个属性为true来验证portlet.xml是否符合portlet模式。 portlet.xml.validate=true 5.1.14、PORTLET COORDINATION 设置这个属性来指定事件如何被分布。如果值为ALL_PORTLETS,那么事件将会被分发到所有已部署的portlet中。如果值为ALL_PORTLETS_ON_PAGE,那么事件将会被分发到在一个portal页面的所有portlets中去。 portlet.event.distribution=ALL_PORTLETS_ON_PAGE 设置这个属性来指定为了防止portlets产生的无限循环事件而设置的最大数目。 portlet.event.max.generation=3 设置这个属性来指定公共渲染参数如何分配。如果值为ALL_PORTLETS,那么公共渲染参数将会被分发到所有已部署的portlets中去。如果值为如果值为ALL_PORTLETS_ON_PAGE,那么公共渲染参数将会被分发到在一个portal页面的所有portlets中去。 portlet.public.render.parameter.distribution=ALL_PORTLETS_ON_PAGE / 235 Liferay使用手册 《使用手册》 5.1.15、主题 设置这个属性为true来装载主题的合并CSS文件,已达到更加快速的装载。 设置这个属性为false为了利于开发中的调试。你也能通过设置URL参数css_fast_load为0来取消快速装载。 theme.css.fast.load=true 设置主题的快捷图标。 theme.shortcut.icon=liferay.ico 设置这个属性,为默认的所有热部署主题设置默认的虚拟路径。参看liferay-look-and-feel_5_1_0.dtd和虚拟路径原理以获得更多信息。 theme.virtual.path= 用决定路径来设置,定义了从一个LAR导入的文件将被存储在哪里。这个路径将会重写在liferay-themeloader.xml中定义的文件存储路径。 theme.loader.storage.path= 主题可以通过LAR文件导入。如果主题在每次导入都给一个新的主题标识,设置为真。这将会保证旧主题的副本被保存在主题装载存储路径当中。然而,这也意味着许多不再使用的主题仍留在文件系统中。我们建议设置为false。 theme.loader.new.theme.id.on.import=false 设置以下属性为真,默认布置portlet。 theme.portlet.decorate.default=true 设置以下属性为真,来展示默认的portlet的共享图标。 theme.portlet.sharing.default=false 5.1.16、资源配置 输入一系列的逗号来分隔从类路径读取的资源动作配置。 resource.actions.configs=resource-actions/default.xml 5.1.17、MODEL HINTS 输入一系列逗号分隔模型提示配置。 model.hints.configs=\ META-INF/portal-model-hints.xml,\ META-INF/workflow-model-hints.xml,\ META-INF/ext-model-hints.xml,\ META-INF/portlet-model-hints.xml model.hints.configs=\ META-INF/portal-model-hints.xml,\ META-INF/workflow-model-hints.xml,\ META-INF/ext-model-hints.xml,\ META-INF/portlet-model-hints.xml / 235 Liferay使用手册 《使用手册》 5.2、服务生成 输入一系列的的都好来分隔为指定前缀为只读的事务的方法。Service Builder将会使用这些前缀来注释在只读事务中运行的方法。 service.builder.persistence.read.only.prefixes=\ contains,\ count,\ find,\ get service.builder.service.read.only.prefixes=\ get,\ search 5.2.1、SPRING 输入一系列逗号分隔SPRING配置。这些将会在bean定义被web.xml中的contextConfigLocation所定义之后加载。 spring.configs=\ META-INF/base-spring.xml,\ \ META-INF/hibernate-spring.xml,\ META-INF/infrastructure-spring.xml,\ META-INF/management-spring.xml,\ \ META-INF/util-spring.xml,\ \ META-INF/editor-spring.xml,\ META-INF/jcr-spring.xml,\ META-INF/messaging-spring.xml,\ META-INF/scheduler-spring.xml,\ META-INF/search-spring.xml,\ \ META-INF/counter-spring.xml,\ META-INF/document-library-spring.xml,\ META-INF/lock-spring.xml,\ META-INF/mail-spring.xml,\ META-INF/portal-spring.xml,\ META-INF/portlet-container-spring.xml,\ META-INF/wsrp-spring.xml,\ \ META-INF/mirage-spring.xml,\ \ META-INF/ext-spring.xml 为Liferay数据源设置bean的名称。 / 235 Liferay使用手册 《使用手册》 spring.hibernate.data.source=liferayDataSource 为Liferay访问工厂设置bean的名称。 spring.hibernate.session.factory=&liferaySessionFactory 5.2.2、HIBERNATE 如果你有Hibernate的高阶只是,以下的许多属性是应该陪配置的。它们映射到各种Hibernate选项,这些选项都有详细的文档。参见http://www.hibernate.org获取更多信息。 输入一系列逗号分隔Hibernate配置。 hibernate.configs=\ META-INF/counter-hbm.xml,\ META-INF/mail-hbm.xml,\ META-INF/portal-hbm.xml,\ META-INF/ext-hbm.xml Liferay将会自动识别在com.liferay.portal.spring.PortalHibernateConfiguration中的术语。设置这个属性将手动的重写自动识别术语。 #hibernate.dialect= 设置Hibernate连接释放模式。你不应该修改这项除非你知道你在干什么。默认的设置能最好的为Spring管理的事务工作。参见org.springframework.orm.hibernate3.LocalSessionFactoryBean类中的buildSessionFactory方法,并查找“on_close”来弄清楚工作原理。 hibernate.connection.release_mode=on_close 设置Hibernate缓存供应者。建议在一个聚集的环境中使用二级缓存。详细配置参看属性net.sf.ehcache.configurationResourceName Examples: hibernate.cache.provider_class= \ com.liferay.portal.dao.orm.hibernate.EhCacheProvider hibernate.cache.provider_class= \ net.sf.hibernate.cache.HashtableCacheProvider hibernate.cache.provider_class= \ com.liferay.portal.dao.orm.hibernate.OSCacheProvider #hibernate.cache.provider_class= \ com.liferay.portal.dao.orm.hibernate.TerracottaCacheProvider 当需要Hibernate配置成二级缓存是的缓存提供者时,以下属性会被用到。 net.sf.ehcache.configurationResourceName=/ehcache/hibernate.xml 在聚合环境中试用以下二级缓存配置。 net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml 在混合环境下取消下面的批注。 #net.sf.ehcache.configurationResourceName=/ehcache/hibernate-terracotta.xml 设置另一个Hibernate缓存。 / 235 Liferay使用手册 《使用手册》 hibernate.cache.use_query_cache=true hibernate.cache.use_second_level_cache=true hibernate.cache.use_minimal_puts=true hibernate.cache.use_structured_entries=false 使用这些属性来取消Hibernate的缓存。这可能导致性能上的下降。你尽可能因为测试使用这些属性。 hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider hibernate.cache.use_query_cache=false hibernate.cache.use_second_level_cache=false 设置JDBC批量大小来改进性能。然而,如果你使用的是Oracle 9i,你就必须设置成0因为工作区中一个悬而未决的bug。更多信息参见LEP-1234。 Examples: hibernate.jdbc.batch_size=20 hibernate.jdbc.batch_size=0 设置其他一些混杂的Hibernate属性。 hibernate.jdbc.use_scrollable_resultset=true hibernate.bytecode.use_reflection_optimizer=true hibernate.show_sql=false 使用传统观的查询工厂直至Weblogic和Hibernate 3能够和谐共处。更多信息参见http://www.hibernate.org/250.html#A23 hibernate.query.factory_class=org.hibernate.hql.classic.ClassicQueryTranslatorFactory 设置该属性true启动Hibernate缓存检测。更多信息参见LPS-2056 hibernate.generate_statistics=false 5.2.3、JDBC 设置JNDI名称来寻找JDBC数据源。如果未被设置,portal将会尝试基于先前在jdbc. Default中设置的属性简历JDBC数据源。 #jdbc.default.jndi.name=jdbc/LiferayPool 设置创建JDBC数据源所用到的属性。仅当property jdbc.default.jndi.name未被设置是才会被读取。 默认的属性是为了被称为Hypersonic的内存数据库而配置的。不建议在上一产品中使用。改变属性值使用另外的数据库。 将dynamic-data-source-spring.xml添加到属性spring.configs中来配置portal使用一个读数据库群和一个写数据库群。这种约定创建了一些在jdbc.read.先前设置的属性来处理读调用和另一些在jdbc.read.先前设置的属性来处理写调用。这些数据源也能借助JNDI通过设定属性jdbc.read.jndi.name and jdbc.write.jndi.name.来创建。 DB2 jdbc.default.driverClassName=com.ibm.db2.jcc.DB2Driver jdbc.default.url=jdbc:db2:lportal jdbc.default.username=db2admin / 235 Liferay使用手册 《使用手册》 jdbc.default.password=lportal DERBY jdbc.default.driverClassName=org.apache.derby.jdbc.EmbeddedDriver jdbc.default.url=jdbc:derby:lportal jdbc.default.username= jdbc.default.password= HYPERSONIC jdbc.default.driverClassName=org.hsqldb.jdbcDriver jdbc.default.url=jdbc:hsqldb:${liferay.home}/data/hsql/lportal jdbc.default.username=sa jdbc.default.password= 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= jdbc.default.password= ORACLE jdbc.default.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.default.url=jdbc:oracle:thin:@localhost:1521:xe jdbc.default.username=lportal jdbc.default.password=lportal P6SPY jdbc.default.driverClassName=com.p6spy.engine.spy.P6SpyDriver jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding= UTF-8&useFastDateParsing=false jdbc.default.username= jdbc.default.password= POSTGRESQL jdbc.default.driverClassName=org.postgresql.Driver jdbc.default.url=jdbc:postgresql://localhost:5432/lportal jdbc.default.username=sa jdbc.default.password= SQL SERVER jdbc.default.driverClassName=net.sourceforge.jtds.jdbc.Driver jdbc.default.url=jdbc:jtds:sqlserver://localhost/lportal jdbc.default.username=sa jdbc.default.password= SYBASE jdbc.default.driverClassName=net.sourceforge.jtds.jdbc.Driver jdbc.default.url=jdbc:jtds:sybase://localhost:5000/lportal jdbc.default.username=sa / 235 Liferay使用手册 《使用手册》 jdbc.default.password= Liferay默认使用C3PO连接池。数据源工厂能通过修改infrastructure-spring.xml被配置成使用JNDI或者另一个池的实现。参见http://www.mchange.com/projects/c3p0/index.html 中的C3PO中关于配置数据库连接的一系列额外范围。 jdbc.default.maxPoolSize=50 jdbc.default.minPoolSize=5 5.2.4、CUSTOM SQL 输入一系列逗号分隔定制的SQL配置。Liferay管理员永远都不需要定制这个。这更像是一个定制Liferay行为的开发者的选项。 custom.sql.configs=custom-sql/default.xml 一些数据库不识别NULL IS NULL的检测。为你指定的数据库设置属性custom.sql.function.Is null和custom.sql.function.is not null。 没有手动设定这些特性的需要,因为 com.liferay.portal.spring.PortalHibernateConfiguration 已经设定它。然而,这些特性是可见的,你能看到你是如何为一个数据库重写它,而Portal-HibernateConfiguration不知道如何自动的配置。 5.2.5、DB2 custom.sql.function.isnull=CAST(? AS VARCHAR(32672)) IS NULL custom.sql.function.isnotnull=CAST(? AS VARCHAR(32672)) IS NOT NULL 5.2.6、DATABASE 指定任何数据库厂商的特殊设定。 5.2.7、MYSQL database.mysql.engine=InnoDB 5.2.8、二级缓存 设置到内部缓存Ehcache配置文件的位置的类路径。编辑在属性文件中指定ehcache.multi-vm.config.location以启动集群缓存。 ehcache.single.vm.config.location=/ehcache/liferay-single-vm.xml ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm.xml 在群集环境中使用以下设定。 ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml / 235 Liferay使用手册 《使用手册》 5.2.9、JAVASCRIPT 设置一系列加载到html/common/themes/top_js.jsp等JavaScript文件。 有两类文件分别定义在在属性javascript.barebone.files和javascript.everything.files。 顾名思义,该barebone统列表是在大多数情况下JavaScript的文件所需要的最低限度的清单。Everything列表包含了不在barebone列表中的其他文件。 两份清单上的文件的存在性能方面的原因,因为未经证实的用户通常不使用所有可用的JavaScript。参见JavaScript.barebone.enabled提供的更多信息关于何时使用barebone名单,何时使用everything清单,以及如何自定义逻辑。 列表中文件也被合并和打包以进一步改进性能。详情请参阅属性javascript.fast.load。 指定barebone文件的列表 JavaScript文件的顺序很重要。特别的,所有JQuery脚本应该放在前面。在Liferay的脚本是以这样方式的分组的。第一组表示实用工具脚本,由第二和第三组使用。第二个分组是指实用工具类,依赖于第一组,但不依赖于第二次或第三组。第三个分组是指模块,依赖于第一和第二组。 javascript.barebone.files=\ \ # # JQuery scripts # \ jquery/jquery.js,\ jquery/cookie.js,\ jquery/hover_intent.js,\ jquery/j2browse.js,\ jquery/livequery.js,\ \ # # jQuery UI 1.5 # \ jquery/ui.core.js,\ jquery/ui.datepicker.js,\ jquery/ui.dialog.js,\ jquery/ui.draggable.js,\ jquery/ui.slider.js,\ \ # # jQuery UI 1.6 # \ jquery/ui.color_picker.js,\ / 235 Liferay使用手册 《使用手册》 \ # # Miscellaneous scripts # \ misc/class.js,\ misc/swfobject.js,\ \ # # Liferay base utility scripts # \ liferay/language.js,\ liferay/liferay.js,\ liferay/util.js,\ \ # # Liferay utility scripts # \ liferay/events.js,\ liferay/popup.js,\ liferay/portal.js,\ liferay/portlet.js,\ liferay/portlet_sharing.js,\ liferay/portlet_url.js,\ \ # # Liferay modules # \ liferay/color_picker.js,\ liferay/dock.js,\ liferay/menu.js 指定everything文件的清单(不在barebone文件清单中的所有其他文件)。 javascript.everything.files=\ \ # # JQuery scripts # \ jquery/form.js,\ jquery/jeditable.js,\ jquery/json.js,\ / 235 Liferay使用手册 《使用手册》 jquery/livesearch.js,\ jquery/media.js,\ jquery/position.js,\ jquery/scrollTo.js,\ jquery/selection.js,\ jquery/treeview.js,\ \ # # jQuery UI 1.5 # \ jquery/ui.accordion.js,\ jquery/ui.droppable.js,\ jquery/ui.resizable.js,\ jquery/ui.sortable.js,\ jquery/ui.tabs.js,\ #jquery/ui.selectable.js,\ \ # # jQuery UI 1.6 # \ jquery/ui.autocomplete.js,\ jquery/ui.tree.js,\ \ # # jQuery UI 1.5 Effects library # \ #jquery/effects.core.js,\ #jquery/effects.blind.js,\ #jquery/effects.bounce.js,\ #jquery/effects.clip.js,\ #jquery/effects.drop.js,\ #jquery/effects.explode.js,\ #jquery/effects.fold.js,\ #jquery/effects.highlight.js,\ #jquery/effects.pulsate.js,\ #jquery/effects.scale.js,\ #jquery/effects.shake.js,\ #jquery/effects.slide.js,\ #jquery/effects.transfer.js,\ \ # / 235 Liferay使用手册 《使用手册》 # Liferay base utility scripts # \ liferay/layout.js,\ liferay/observable.js,\ \ # # Liferay modules # \ liferay/auto_fields.js,\ liferay/dynamic_select.js,\ liferay/layout_configuration.js,\ liferay/layout_exporter.js,\ liferay/notice.js,\ liferay/navigation.js,\ liferay/panel.js,\ liferay/panel_floating.js,\ liferay/search_container.js,\ liferay/session.js,\ liferay/tags_categories_selector.js,\ liferay/tags_entries_selector.js,\ liferay/undo_manager.js,\ liferay/upload.js 设置此属性为false,始终加载属性javascript.everything.files中列出的JavaScript文件。设置为true来有时加载javascript.barebone.files,有时加载javascript.everything.files。 默认的逻辑是在com.liferay.portal.events.ServicePreAction中以这样的方式编码的,在未验证的用户获取barebone清单中JavaScript的文件,而验证的用户能的到都可以列barebone和everything中JavaScript文件的清单。 javascript.barebone.enabled=true 设置此属性为true来加载在属性javascript.barebone.files或javascript.everything.files列出的文件包装的版本。 设置此属性为false在开发中更容易调试。您还可以通过设置URL参数js_fast_load为0禁用快速装载。 javascript.fast.load=true 设置以下为true,以显示JavaScript的记录。 javascript.log.enabled=false 5.2.10、SQL DATA 为共同对象设置默认的SQL ID。 sql.data.com.liferay.portal.model.Country.country.id=19 sql.data.com.liferay.portal.model.Region.region.id=5 / 235 Liferay使用手册 《使用手册》 sql.data.com.liferay.portal.model.ListType.account.address=10000 sql.data.com.liferay.portal.model.ListType.account.email.address=10004 sql.data.com.liferay.portal.model.ListType.contact.email.address=11003 sql.data.com.liferay.portal.model.ListType.organization.status=12017 5.2.11、公司 这将设置默认的网络编号。全方位管理用户必须属于这个网络标识的公司。 company.default.web.id=liferay.com 这将设置门户的默认主页的网址。 company.default.home.url=/web/guest 该门户可以验证他们用户的电子邮件地址,用户名称,或用户ID。 company.security.auth.type=emailAddress company.security.auth.type=screenName company.security.auth.type=userId 设置为true,以确保用户以https登录。 company.security.auth.requires.https=false 设置以下为true,以允许用户选择“记住我”功能自动登录到门户。 company.security.auto.login=true 以下属性设置以秒计算在浏览器实现“记住我”功能的Cookie的最长时限。31536000标志着一年的期限。-1意味着一个浏览器会话的期限。 不是通过设置这个为0,而是设置属性company.security.auto.login为false来禁用记住我的功能。 company.security.auto.login.max.age=31536000 设置以下为true,以允许用户要求他们的门户发送密码。 company.security.send.password=true 设置以下为true,让陌生人在门户上注册和创建自己的帐户。 company.security.strangers=true 输入一个将用于创建新的帐户时,用户点击“创建帐户”链接在登录页面的portlet友好的URL。这使得提供定制的portlet创建帐户。默认情况下,门户网站的创建帐户将被使用。 #company.security.strangers.url=/create_account 设置以下为true,如果陌生人能够用与公司邮箱后缀相匹配的邮箱地址创建帐户。此属性不使用,除非company.security.strangers也设置为true。 company.security.strangers.with.mx=true 设置以下为true,如果创建帐户的陌生人需要通过电子邮件确认。 company.security.strangers.verify=false 设置以下为true,让社区管理员使用自己的商标,而不是企业的标志。 company.security.community.logo=true 输入一组片段属于该公司设置的组成部分。 company.settings.form.configuration=general,authentication,default-user-associations, / 235 Liferay使用手册 《使用手册》 reserved-credentials,mail-host-names,email-notifications company.settings.form.identification=addresses,phone-numbers,additionalemail- addresses,websites company.settings.form.miscellaneous=display-settings 5.2.12、用户 设置以下为false,如果用户不能被删除。 users.delete=true 设置以下为true,始终自动生成用户的名称,即使用户提供了一个特定用户的屏幕名称。 users.screen.name.always.autogenerate=false 输入一个com.liferay.portal.security.auth.ScreenNameGenerator扩展的类名。这个类将被调用来生成用户的屏幕名称。 users.screen.name.generator=com.liferay.portal.security.auth.ScreenNameGenerator 输入一个com.liferay.portal.security.auth.ScreenNameValidator扩展的类名,这个类将被调用来验证用户的ID。 例子: users.screen.name.validator=com.liferay.portal.security.auth.ScreenNameValidator users.screen.name.validator=com.liferay.portal.security.auth.LiberalScreenNameValidator 设置为false,如果你希望能够创造一个没有电子邮件地址的用户。请注意不要求电子邮件地址的用户禁用某些依赖于电子邮件地址的功能。 users.email.address.required=true 为用户头像设置最大文件的大小。0可以用来表示无限的文件大小。然而,允许的最大文件设置在属性com.liferay.portal.upload.UploadServletRequestImpl.max.size。这个属性可以在system.properties中找到。 users.image.max.size=307200 设置为true来记录用户上次登录信息。 users.update.last.login=true 当要添加用户时,输入将作为用户表格的部分的片段的清单。 users.form.add.main=details,organizations users.form.add.identification= users.form.add.miscellaneous= 当要更新用户时,输入片段的清单作为用户表格的一部分。 users.form.update.main=details,password,organizations,communities,usergroups, roles,categorization users.form.update.identification=addresses,phone-numbers,additional-emailaddresses, / 235 Liferay使用手册 《使用手册》 websites,instant-messenger,social-network,sms,open-id users.form.update.miscellaneous=announcements,display-settings,comments,custom- attributes 设置为true,以便提醒人们,用于帮助重置查询用户密码。 users.reminder.queries.enabled=true users.reminder.queries.custom.question.enabled=true 输入问题清单以提醒查询。 users.reminder.queries.questions=what-is-your-primary-frequent-flyernumber, what-is-your-library-card-number,what-was-your-first-phonenumber, what-was-your-first-teacher's-name,what-is-your-father's-middle-name 5.2.13、GROUPS AND ROLES 输入一个逗号分隔的系统组名,包括标准系统组。当服务器启动时,门户进行检查,以确保所有系统组存在。任何丢失的系统组将将被门户创建。 system.groups= 输入一组逗号分隔的系统角色名称,包括标准系统角色。当服务器启动时,门户网站检查,以确保所有系统角色存在。任何缺少系统的角色将被的门户所创建。 标准的系统角色是:管理员,旅客,超级用户和用户。这些角色不能删除或重命名。 system.roles= 设置管理员系统角色的描述。 system.role.Administrator.description=Administrators are super users who can do anything. 设置旅客系统角色的描述。 system.role.Guest.description=Unauthenticated users always have this role. 设置拥有者系统角色的描述。 system.role.Owner.description=This is an implied role with respect to the objects users create. 设置拥超级用户系统角色的描述。 system.role.Power.User.description=Power Users have their own public and private pages. 设置拥用户系统角色的描述。 system.role.User.description=Authenticated users should be assigned this role. 输入一组逗号分隔的系统社区角色名称,包括标准的系统社区角色。当服务器启动时,门户系统进行检查,以确保所有系统社区角色存在。任何丢失的系统社区角色都将被portal所创建。 该标准系统社会角色是:社区管理员,社区成员,社区所有人。这些角色不能删除或重命名。 / 235 Liferay使用手册 《使用手册》 system.community.roles= 设置系统社区角色社区管理员的描述。 system.community.role.Community.Administrator.description=Community Administrators are super users of their community but cannot make other users into Community Administrators. 设置系统社区角色社区成员的描述。 system.community.role.Community.Member.description=All users who belong to a community have this role within that community. 设置系统社区角色社区成员的描述。 system.community.role.Community.Member.description=All users who belong to a community have this role within that community. 设置系统社区角色社区所有者的描述。 system.community.role.Community.Owner.description=Community Owners are super users of their community and can assign community roles to users. 输入一组逗号分隔的系统组织角色名称,包括标准系统组织角色。当服务器启动时,门户系统检查,以确保所有系统组织角色都存在。任何缺少系统组织角色都将被门户系统所创建。 该标准系统组织的角色是:组织管理员,组织成员,组织所有人。这些角色不能删除或重命名。 system.organization.roles= 设置系统组织角色组织管理员的描述。 System.organization.role.Organization.Administrator.description=Organization Administrators are super users of their organization but cannot make other users into Organization Administrators. 设置系统组织角色组织成员的描述。 system.organization.role.Organization.Member.description=All users who belong to a organization have this role within that organization. 设置系统组织角色组织所有者的描述。 system.organization.role.Organization.Owner.description=Organization Owners are super users of their organization and can assign organization roles to users. 总管理员可以管理门户的核心功能:gc,关机等。总管理员必须属于默认的公司。 多个门户实例可能部署在一个应用服务器上,而不是所有管理员都能获得这一核心功能。输入总管理员的ID。 不输入时,如果用户属于公司,有管理员角色就允许使用门户的核心功能。 omniadmin.users= 设置以下为true,如果所有用户必须同意使用条款。 / 235 Liferay使用手册 《使用手册》 terms.of.use.required=true 指定组的ID和将被视为使用条款显示Web内容的文章的ID。如果没有指定,默认的文本将被用于网页内容的文章。 terms.of.use.journal.article.group.id= terms.of.use.journal.article.id= 指定角色子类型如果你想使用自定义的标准搜索角色。 roles.community.subtypes= roles.organization.subtypes= roles.regular.subtypes= 5.2.14、组织 指定您的组织的名称。例如,你可以使乐队,俱乐部,教区,或任何描述你的层次结构的名称。 organizations.types=regular-organization,location 指定哪些组织可以在层次结构的顶部。 organizations.rootable[regular-organization]=true 指定哪些组织可以是子组织。 organizations.children.types[regular-organization]=regular-organization,location 设置为true,如果这个组织可以有一个相关的国家。 organizations.country.enabled[regular-organization]=false 设置为true,如果这个组织必须有一个相关的国家。 organizations.country.required[regular-organization]=false 170~179: 默认情况下,位置不能在层次结构的顶部,因为它们不会有子树。您必须为创建的每个结构类型指定以下的属性。 例如: organizations.rootable[location]=false #organizations.children.types[location]= organizations.country.enabled[location]=true organizations.country.required[location]=true 输入一组节点,当添加一个结构时,这些节点将包含在并作为结构形式的一部分。 organizations.form.add.main=details organizations.form.add.identification= organizations.form.add.miscellaneous= 输入一组节点,当更新一个结构时,这些节点将包含在并作为结构形式的一部分 organizations.form.update.main=details organizations.form.update.identification=addresses,phone-numbers,additionalemail-addresses,websites,services organizations.form.update.miscellaneous=comments,reminder-queries,custom-attributes 如果你想要任何创建结构的管理员被自动分配给该结构,设置此属性为true。 / 235 Liferay使用手册 《使用手册》 organizations.assignment.auto=false 如果你想要任何一个该结构的管理员可以指定其用户,设置此属性为false。默认情况下,他只能指定他可以管理的结构和子结构的用户。 organizations.assignment.strict=true 如果你想让用户只成为该结构的成员,且他们被分配明确,设置此属性为true。默认情况下,他们也将成为这些原始结构的隐含成员。例如,如果一个用户属于西班牙Liferay,则他是一个隐含在原始欧洲Liferay和全球Liferay的成员,而且能够访问他们的私人网页。 organizations.membership.strict=false 5.2.15、LANGUAGES AND TIME ZONES 指定可能的区域。在带有与 内容/ 语言_ *.属性 匹配的文件名称的属性文件中,可以指定对应于特定语言的信息。在带有与 内容/语言_外*.属性 匹配的文件名称的属性文件中,这些值也可以被重写。使用逗号分隔每个条目。所有区域必须使用UTF - 8编码。 参见下面指定语言和国家代码的链接: http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt http:/ / user page.chemie.fu-berlin.de/diverse/doc/ISO_3166. html locales=ar_SA,ca_AD,ca_ES,zh_CN,zh_TW,cs_CZ,nl_NL,en_US,fi_FI,fr_FR,de_DE,el _GR,hu_HU,it_IT,ja_JP,ko_KR,nb_NO,fa_IR,pl_PL,pt_BR,pt_PT,ru_RU,es_ES,sv_SE, tr_TR,vi_VN 如果未经验证的用户从可接受语言列中获得首选语言,设置以下为true。如果未经验证的用户从他们的公司获得首选语言,设置以下为false。 locale.default.request=false 指定可能的时区。指定的ID必须匹配类java.util.TimeZone中的ID。 time.zones=\ Pacific/Midway,\ Pacific/Honolulu,\ America/Anchorage,\ America/Los_Angeles,\ America/Denver,\ America/Chicago,\ America/New_York,\ America/Puerto_Rico,\ America/St_Johns,\ America/Sao_Paulo,\ America/Noronha,\ Atlantic/Azores,\ UTC,\ Europe/Lisbon,\ Europe/Paris,\ / 235 Liferay使用手册 《使用手册》 Europe/Istanbul,\ Asia/Jerusalem,\ Asia/Baghdad,\ Asia/Tehran,\ Asia/Dubai,\ Asia/Kabul,\ Asia/Karachi,\ Asia/Calcutta,\ Asia/Katmandu,\ Asia/Dhaka,\ Asia/Rangoon,\ Asia/Saigon,\ Asia/Shanghai,\ Asia/Tokyo,\ Asia/Seoul,\ Australia/Darwin,\ Australia/Sydney,\ Pacific/Guadalcanal,\ Pacific/Auckland,\ Pacific/Enderbury,\ Pacific/Kiritimati 5.2.16、LOOK AND FEEL 如果系统不允许用户修改的外观和感觉,设置以下为false。 look.and.feel.modifiable=true 设置默认布局模板的ID。 default.layout.template.id=2_columns_ii 设置常规主题的默认主题ID。 default.regular.theme.id=classic 设置常规主题的默认配色方案ID。 default.regular.color.scheme.id=01 设置WAP主题的默认主题ID。 default.wap.theme.id=mobile 设置WAP主题的默认配色方案ID。 default.wap.color.scheme.id=01 如果你希望公众或私人组的主题选择能够自动适用于其他组(即,如果公共和私人组的主题始终相同),设置以下为true。 theme.sync.on.group=false 5.2.17、请求 在liferayportlet.xml中已配置为具有私有请求属性的Portlet可能仍然想分享一些请求属性。这个属性允许你配置的要求属性将被共享。 / 235 Liferay使用手册 《使用手册》 设置一个逗号,分隔属性名称列表,当该属性名称以指定属性名称中的一个名字为前缀时,则共享该名称。例如,如果设置hello_,world_的值,那么所有以hello_或world_为前缀的属性名称将被共享。 request.shared.attributes=LIFERAY_SHARED_ 5.2.18、会话 在一个会话终止之前指定分钟数。该值始终被web.xml中设置的值覆盖。 session.timeout=30 在警告发送给通知超时会话用户的用户之前,指定分钟数。指定0来禁用任何警告。 session.timeout.warning=1 设置自动扩展模式为true,以避免必须询问用户是否延长会话。相反,它会自动延长。这个模式的目的是只要用户浏览器开启和门户网站加载时,保持会话处于打开状态。为了更好地运行,建议使用此设置时,伴随着一个较小的session.timeout,如5分钟。 session.timeout.auto.extend=false 如果当会话终止时,用户被重定向到默认页,设置为true。 session.timeout.redirect.on.expire=false 已配置为使用私人请求的实例是liferay-实例中的属性。XML可能仍想分享一些请求属性。这个属性允许你配置将被共享的请求属性。设置一个逗号,分隔属性名称列表,当该属性名称以指定属性名称中的一个名字为前缀时,则共享该名称。例如,如果设置hello_,world_的值,那么所有以hello_或world_为前缀的属性名称将被共享。 注意到,此属性用于指定从门户网站到实例的会话属性的分享。这不是用来指定在实例和WAR之间或者从实例到门户网站的会话分享。 session.shared.attributes=org.apache.struts.action.LOCALE,COMPANY_,USER_,LIFERAY_SHARED_ 将此项设置为false来禁用所有持久的Cookie。例如自动记录的功能将无法工作。 session.enable.persistent.cookies=true 如果持久Cookie已启用,则在登录过程中设置一些cookies。设置此属性来设置这些Cookie的域。 session.cookie.domain= 当用户登录到门户网站时,设置以下为true来使会话无效。这有助于防止网络钓鱼。如果你需要guest用户和经过身份验证的用户具有相同的会话,则设置为false。 session.enable.phishing.protection=true 设置以下为true,以测试在允许他们注册之前,用户是否有cookie支持。如果设置tck.url为true,那么这个测试总是失败,因为该属性禁用会话cookie。 session.test.cookie.support=true 设置以下为true来禁用会话。这样做将使用cookies来记住传达请求的用户。如果你想规模非常大的网站,其中对于每个要求,用户可能会被发送到不同的服务器,这个方法是有用的。这种方法的缺点是,对于由服务和实例规范所提供的会话,你不能依赖于 / 235 Liferay使用手册 《使用手册》 API。 此功能仅对Tomcat和设置Tomcat管理类为com.liferay.support.tomcat.session.SessionLessManagerBase的命令可行。 session.disabled=false 输入一个分隔类名的逗号列表,其中这些类名扩展com.liferay.portal.struts.SessionAction。这些类将在指定的事件中运行。 # # Servlet session create event # servlet.session.create.events=com.liferay.portal.events.SessionCreateAction # # Servlet session destroy event # servlet.session.destroy.events=com.liferay.portal.events.SessionDestroy- Action 设置以下为true,以追踪用户会话期间内存中用户的点击。设置为true,您可以查看在管理实例中的所有当前会话。 session.tracker.memory.enabled=true 设置以下为true,在用户会话无效之后,可以追踪数据库中用户的点击。设置为true,您可以从数据库生成使用报告。使用此设置时须谨慎,因为这将存储大量的惯用数据。 session.tracker.persistence.enabled=false 设置以下为true以将追踪路径转换为友好的URL。 session.tracker.friendly.paths.enabled=false 输入一个分隔不被追踪的路径的逗号列表。 session.tracker.ignore.paths=\ /portal/render_portlet,\ \ /document_library/get_file 5.2.19、JAAS 将以下设置为 false,以禁用 JAAS 的安全检查。禁用 JAAS 加快了登录。如果管理员能够模拟其他用户,必须禁用 JAAS。 portal.jaas.enable=false 默认情况下,com.liferay.portal.security.jaas.PortalLoginModule 加载正确的 JAAS 登录模块,它基于门户网站部署的那些应用程序服务器或servlet 容器。设置重写此行为的 JAAS 实现类。 portal.jaas.impl= JAAS 过程可通过已加密的密码,并且如果有一个匹配,身份验证才会成功。将此属性设置为 false,放宽该行为,以便用户可以输入一个未加密的密码。 / 235 Liferay使用手册 《使用手册》 portal.jaas.strict.password=false 设置以下为 true,则管理员可以模拟其他用户。 portal.impersonation.enable=true 5.2.20、LDAP 设置用于连接的值为LDAP储存。 ldap.factory.initial=com.sun.jndi.ldap.LdapCtxFactory ldap.base.provider.url=ldap://localhost:10389 ldap.base.dn=dc=example,dc=com ldap.security.principal=uid=admin,ou=system ldap.security.credentials=secret ldap.referral=follow com.liferay.portal.security.auth.LDAPAuth的设置可以从Admin实例配置。它为Apache Directory Server、Microsoft Active Directory Server、Novell eDirectory和OpenLDAP提供超过箱子的支持。Apache Directory Server可为缺省设置。 LDAPAuth类必须指定在属性auth.pipeline.pre中以被执行。 在system.properties中,加密是由com.liferay.util.Encryptor.provider.class执行的。 ldap.auth.enabled=false ldap.auth.required=false 设置LDAP认证方法为绑定或密码比较。多数供营商更喜欢绑定,这样您不必担心加密策略。 ldap.auth.method=bind ldap.auth.method=password-compare 设置密码加密,如果属性ldap.auth.method设置为密码比较时,用于比较密码。 ldap.auth.password.encryption.algorithm= ldap.auth.password.encryption.algorithm.types=MD5,SHA 活跃目录存储关于用户账号的信息,并作为属性UserAccountControl中的一系列位领域。 如果您想要防止禁用账户登入到门户,您需要使用类似于以下的查询过滤器: (&(objectclass=person)(userprincipalname=@email_address@)(!(UserAccountControl:1.2.840.113556.1.4.803:=2))) 参见以下链接: http://support.microsoft.com/kb/305144/ http://support.microsoft.com/?kbid=269181 ldap.auth.search.filter=(mail=@email_address@) 您可以写自己的类,在用户或组进入LDAP存储之前,扩展com.liferay.portal.security.ldap.AttributesTransformer来变换LDAP属性,。 ldap.attrs.transformer.impl=com.liferay.portal.security.ldap.AttributesTransformer / 235 Liferay使用手册 《使用手册》 您可以写自己的类,为了导出门户网站用户到LDAP存储,扩展com.liferay.portal.security.ldap.LDAPUser来自定义行为。 ldap.user.impl=com.liferay.portal.security.ldap.LDAPUser 当用户导出到LDAP且用户不存在时,用户将用以下缺省对象类来创建。 ldap.user.default.object.classes=top,person,inetOrgPerson,organizationalPerson 当导入导出用户时,门户网站将使用这种映射来连接LDAP用户属性和门户网站用户变量。 ldap.user.mappings=screenName=cn\npassword=userPassword\nemailAddress=mail\nfirstName=givenName\nlastName=sn\njobTitle=title\ngroup=groupMembership 当导入组时,门户网站将使用此映射来连接LDAP组属性和门户网站用户组变量。 ldap.group.mappings=groupName=cn\ndescription=description\nuser=uniqueMember 从LDAP导入用户和组到门户网站的设置。 ldap.import.enabled=false ldap.import.on.startup=false ldap.import.interval=10 ldap.import.user.search.filter=(objectClass=inetOrgPerson) ldap.import.group.search.filter=(objectClass=groupOfUniqueNames) 设置导入方法为用户或组。如果设置为用户,门户网站将导入的所有用户和与这些用户相关联的组。如果设置为组,门户网站导入所有组和与这些组关联的用户。 在LDAP服务器如何存储组成员身份信息基础上,设置该值。 ldap.import.method=user ldap.import.method=group 将用户从门户网站导出到LDAP的设置。这允许用户在门户网站中修改他的名字、姓氏等,并拥有可以推送到LDAP服务器的更改。如果属性ldap.auth.enabled也设置为true,它只会是活跃的。在指定的DN中创建新用户和组。 ldap.export.enabled=true ldap.users.dn=ou=users,dc=example,dc=com ldap.groups.dn=ou=groups,dc=example,dc=com 设置为true,以使用LDAP的密码策略,而不是门户网站的密码策略。 ldap.password.policy.enabled=false 设置这些值为由相应目录服务器返回的错误消息的一部分,以允许门户网站识别来自LDAP服务器的信息。对于Fedora DS,默认值会运行。 ldap.error.password.age=age ldap.error.password.expired=expired ldap.error.password.history=history ldap.error.password.not.changeable=not allowed to change ldap.error.password.syntax=syntax ldap.error.password.trivial=trivial ldap.error.user.lockout=retry limit / 235 Liferay使用手册 《使用手册》 5.2.21、CAS 设置此为true,使CAS为唯一标志。只有当LDAP认证也可行且认证由屏幕名称产生时,NTLM才可运行。 如果设置为true,属性auto.log in.hooks必须包含类com.liferay.portal.security.auth.CASAutoLogin的引用,并且在web.xml中过滤器com.liferay.portal.servlet.filters.sso.cas.CASFilter必须被引用。 cas.auth.enabled=false 用户可能从CAS身份验证,并在门户网站中尚不存在。设置此为true,如果它们在门户网站中不存在,则自动从LDAP导入用户。 cas.import.from.ldap=false 设置需要的CAS URL的缺省值。设置cas.server.name或cas.service.url。cas.server.name的设置允许深链接。参见LEP-4423。 cas.login.url=https://localhost:8443/cas-web/login cas.logout.url=https://localhost:8443/cas-web/logout cas.server.name=localhost:8080 cas.service.url= #cas.service.url=http://localhost:8080/c/portal/login cas.service.url=http://localhost:8080/c/portal/login cas.validate.url=https://localhost:8443/cas-web/proxyValidate 5.2.22、NTLM 设置此为true,使NTLM为唯一标志。只有当LDAP认证也可行且认证由屏幕名称产生时,NTLM才可运行。如果设置为true,属性“auto.login.hooks”必须包含类com.liferay.portal.security.auth.NtlmAutoLogin的引用,并且在web.xml中过滤器com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter必须被引用。 ntlm.auth.enabled=false ntlm.auth.domain.controller=127.0.0.1 ntlm.auth.domain=EXAMPLE 5.2.23、OPENID 设置此为true,以启用OpenId身份验证。如果设置为true,则属性auto.login.hooks必须包含类 com.liferay.portal.security.auth.OpenIdAutoLogin的引用。 open.id.auth.enabled=true 5.2.24、OPENSSO 这些属性控制OpenSSO的Liferay的集成。 设置此为true,以启用OpenId身份验证。 / 235 Liferay使用手册 《使用手册》 open.sso.auth.enabled=false 设置注册URL和注销URL。第一个URL可以链接到OpenSSO服务器(它与正在运行Liferay有相同的服务器); 第二个URL是链接到您的Liferay门户网站。 open.sso.login.url=http://openssohost.example.com:8080/opensso/UI/Login? goto=http://portalhost.example.com:8080/c/portal/login open.sso.logout.url=http://openssohost.example.com:8080/opensso/UI/Logout? goto=http://portalhost.example.com:8080/web/guest/home 将URL设置为OpenSSO服务。open.sso.service.url=http://openssohost.example.com:8080/opensso 设置用户屏幕名称的HTTP属性名称。 open.sso.screen.name.attr=uid 设置用户电子邮件地址的HTTP属性名称。 open.sso.email.address.attr=mail 设置用户公用名的HTTP属性名称。 open.sso.first.name.attr=cn 设置用户姓氏的HTTP属性名称。 open.sso.last.name.attr=sn 5.2.25、SITEMINDER 设置此为 true以启用CA认证为唯一标志。如果设置为true,则属性“auto.login.hooks”必须包含类com.liferay.portal.security.auth.SiteMinderAutoLogin的引用,并且为了注销运行,logout.events.post必须有com.liferay.portal.events.SiteMinderLogoutAction 的引用。 siteminder.auth.enabled=false 用户可能从SiteMinder认证,并在门户中尚不存在。设置此为true,如果在门户网站中它们不存在时,则自动从LDAP导入用户。 siteminder.import.from.ldap=false 设置此为由SiteMinder传递到门户网站的用户标头的名称。 siteminder.user.header=SM_USER 5.2.26、AUTHENTICATION PIPELINE 输入一个分隔实现com.liferay.portal.security.auth.Authenticator的类名的逗号列表。在开始门户网站的身份验证之前或之后,这些类将运行。 Authenticator类定义了应作为实现该接口的类中的返回代码的常量值。如果#Authenticator成功了,则返回SUCCESS;如果用户存在,但密码不匹配,则返回FAILURE;如果系统中的用户不存在,则返回DNE。 Authenticator中的常量: / 235 Liferay使用手册 《使用手册》 public static final int SUCCESS = 1; public static final int FAILURE = -1; public static final int DNE = 0; 假设你有身份验证管道中的几个类,如果您希望用户能够登录,他们都得返回SUCCESS。如果身份验证者之一返回FAILURE或DNE,则登录失败。 在某些情况下,您可能要保持门户网站数据库中的信息与外部数据库或LDAP服务器同步。这很容易实现,通过实现LDAPAuth类,每当用户登录时,这个类更新存储在门户网站用户数据库中的信息。 对于基于用户ID的识别或电子邮件,每个门户网站事例可以配置在运行时间。参见Admin实例以获得更多信息。 可用的身份验证者为: com.liferay.portal.security.auth.LDAPAuth 请参阅 LDAP 属性来配置 LDAPAuth 类的行为。 auth.pipeline.pre=com.liferay.portal.security.auth.LDAPAuth auth.pipeline.post= 设置此为 true,通过内部门户身份验证密码。如果设置为flase,您必须委托认证方进行密码验证,认证方是在属性auth.pipeline.pre和auth.pipeline.post上配置的。 auth.pipeline.enable.liferay.check=true 输入一个逗号分隔的执行com.liferay.portal.security.auth.AuthFailure的类名。当用户已登录失败或当用户已达到失败登录的最大数目时这些类将运行。 auth.failure=com.liferay.portal.security.auth.LoginFailure auth.max.failures=com.liferay.portal.security.auth.LoginMaxFailures auth.max.failures.limit=5 如果用户转发到最后一组访问成功登录时的路径,将以下设为 true。如果设置为 false,用户将转发到其默认布局页面。 auth.forward.by.last.path=true 登录页读取一个重定向通过一个名为“redirect”的参数。如果此属性设置为 true,则会将用户重定向到登录成功后的给定的重定向路径。如果用户没有权限查看该页面,此时由auth.forward.by.last.path设置的规则将实行。 您可以从另一个应用程序手动的设置重定向,通过在url中添加“redirect”参数,例如: /c/portal/login?redirect=/group/employees%2Fcalendar。成功登录后,该url将用户重定向到路径/group/employees/calendar 上。 auth.forward.by.redirect=true 输入以点号为分隔的路径列表,这些路径被认为是最后被访问的路径的一部分。 auth.forward.last.paths=/document_library/get_file 输入一个URL,用于注册门户网站的用户 。默认情况下,这个门户网站的登录页面已经使用过。 #auth.login.url=/web/guest/home 输入一个友好的URL,每当用户需要导航社区和身份验证,帮助门户网站用户登录。默认情况下,该使用门户网站的登录页面或在属性auth.login.url中的URL已经使用过。 auth.login.community.url=/login 输入在网页上注册的portlet的名字,这个名字由之前的属性设置的URL来确定 ( / 235 Liferay使用手册 《使用手册》 如果已经设置了一个)。 这将允许portlet访问重定向参数,并且在必要时促进用户到达他设法访问的页。 除非您有您自己的习惯注册portlet,否则您应该留下缺省值。 auth.login.portlet.name=58 输入不需要身份验证的以点号为分隔的路径列表。 auth.public.paths=\ /blogs/find_entry,\ /blogs/rss,\ /blogs/trackback,\ \ /bookmarks/open_entry,\ \ /document_library/get_file,\ \ /journal/get_article,\ /journal/get_articles,\ /journal/get_latest_article_content,\ /journal/get_structure,\ /journal/get_template,\ /journal/view_article_content,\ /journal_articles/view_article_content,\ \ /layout_management/sitemap,\ \ /message_boards/find_category,\ /message_boards/find_message,\ /message_boards/find_thread,\ /message_boards/get_message_attachment,\ /message_boards/rss,\ \ /my_places/view,\ \ /polls/view_chart,\ \ /portal/emoticons,\ /portal/expire_session,\ /portal/extend_session,\ /portal/extend_session_confirm,\ /portal/json_service,\ /portal/logout,\ /portal/open_id_request,\ /portal/open_id_response,\ /portal/session_click,\ /portal/session_tree_js_click,\ / 235 Liferay使用手册 《使用手册》 /portal/status,\ \ /search/open_search,\ /search/open_search_description.xml,\ \ /shopping/notify,\ \ /tags/rss,\ \ /wiki/get_page_attachment,\ /wiki/rss 5.2.27、AUTO LOGIN 输入执行com.liferay.portal.security.auth.AutoLogin以点号分隔的分类名的列表。这些类按所有未认证用户的连续顺序运行,直到他们中的一个返回一个合法的用户识别号和密码组合。 如果合法的组合没有返回,则请求继续通常处理。 如果一个合法的组合返回,则门户网站将自动登录那名有返回用户识别号和密码组合的用户。 例如,当用户之前登录时选中了“记住我”选框,com.liferay.portal.security.auth.RememberMe-AutoLogin从cookie读取信息并自动登录以前登录的账户。 这个接口使部署者能容易地配置门户网站与其他SSO服务器一起使用。以com.liferay.portal.security.auth.CASAutoLogin为例子,说明如何配置门户网站和耶鲁的SSO服务器。 auto.login.hooks=com.liferay.portal.security.auth.CASAutoLogin,com.liferay.portal.security.auth.NtlmAutoLogin,com.liferay.portal.security.auth.OpenIdAutoLogin,com.liferay.portal.security.auth.OpenSSOAutoLogin,com.liferay.portal.security.auth.RememberMeAutoLogin,com.liferay.portal.security.auth.SiteMinderAutoLogin 设置自动登录的可被忽略的主机。 auto.login.ignore.hosts= 设置自动登录的可被忽略的路径。 auto.login.ignore.paths= 5.3、SSO 和 MAC (消息身份验证代码) 使用SSO和MAC,发布到一个URL操作如下: http://localhost:8080/c/portal/login?cmd=already-registered&login=&password= 在密码字段中传递MAC。确保MAC获得URL编码因为它可能包含不允许在URL中的字符。 含MAC的SSO也要求您设置如下属性在system.properties中: / 235 Liferay使用手册 《使用手册》 com.liferay.util.servlet.SessionParameters=false 详见如下链接: http://issues. liferay .com/browse/LEP-1288 http://en. wiki pedia.org/ wiki /Message_authentication_code 设置如下为true,启用SSO和MAC。 auth.mac.allow=false 设置用于MAC的加密算法。 auth.mac.algorithm=MD5 设置用于生成MAC的共享密钥 auth.mac.shared.key= 5.3.1、密码 设置以下加密算法加密密码。缺省算法是SHA (SHA-1)。如果设置为“NONE”,密码作为纯文本存储在数据库中。 SHA-512算法当前是无支持的。 例如: passwords.encryption.algorithm=CRYPT passwords.encryption.algorithm=MD2 passwords.encryption.algorithm=MD5 passwords.encryption.algorithm=NONE passwords.encryption.algorithm=SHA passwords.encryption.algorithm=SHA-256 passwords.encryption.algorithm=SHA-384 passwords.encryption.algorithm=SSHA 消化密码是通过 base64 或十六进制编码进行编码。默认为base64。 passwords.digest.encoding=base64 #passwords.digest.encoding=hex 输入扩展 com.liferay.portal.security.pwd.BasicToolkit 的类名。将调用此类生成和验证密码。 例如: passwords.toolkit=com.liferay.portal.security.pwd.PasswordPolicyToolkit passwords.toolkit=com.liferay.portal.security.pwd.RegExpToolkit 如果您选择使用com.liferay.portal.security.pwd.PasswordPolicyToolkit作为您的密码工具包,您可以选择静态或动态生成密码。静态设置通过属性 passwords.passwordpolicytoolkit.static,动态的用类 com.liferay.util.PwdGenerator生成密码。如果您使用 LDAP 密码语法检查,您也必须使用静态生成器,这样可以保证密码服从它的规则。 例如: passwords.passwordpolicytoolkit.generator=static passwords.passwordpolicytoolkit.generator=dynamic passwords.passwordpolicytoolkit.static=iheartliferay / 235 Liferay使用手册 《使用手册》 如果选择使用 com.liferay.portal.security.pwd.RegExpToolkit作为您的密码工具包,请设置将用于生成和验证密码的正则表达式模式。 请注意,在 Java 中\ 将被替换为 \\ 。 第一种模式可确保密码必须有至少 4 位数字或字母组成的有效的字符。 第二种模式可确保密码必须至少为 8 位数字或字母组成的有效字符。 例如: passwords.regexptoolkit.pattern=(?=.{4})(?:[a-zA-Z0-9]*) passwords.regexptoolkit.pattern=(?=.{8})(?:[a-zA-Z0-9]*) 设置生成密码的长度和密钥。 例如: passwords.regexptoolkit.charset=0123456789 passwords.regexptoolkit.charset=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 例如: passwords.regexptoolkit.length=4 passwords.regexptoolkit.length=8 设置默认密码策略的名字。 passwords.default.policy.name=Default Password Policy 5.3.1、权限 设置缺省的许可验查员类,用于com.liferay.portal.security.permission.PermissionCheckerFactory检查对对象的操作权限。 这个类可以被扩展的传统类com.liferay.portal.security.permission.PermissionCheckerImpl更改。 permissions.checker=com.liferay.portal.security.permission.PermissionCheckerImpl 设置用于检查用户的权限的算法。这很有用,您可以对不同的数据库进行优化搜索。请参阅 com.liferay.portal.service.impl.PermissionLocalServiceImpl。默认值是方法二。 第一个算法将使用几个语句,按顺序查询数据库中的以下五件事。如果它找到了他们的任何一个,它返回 true: ● 用户连接到一个通过组或组织角色的权限上了吗? ● 与团体或组织直接关联的用户连接到一个的权限吗? ● 用户通过用户角色连接到其中一权限? ● 用户通过用户组角色连接到其中一权限上? ● 用户直接连接到一个权限吗? permissions.user.check.algorithm=1 第二种算法(缺省)实现数据库连接和权限检查只需要一步。通过调方法一中的countByGroupsRoles、countByGroupsPermissions、countByUsersRoles、countByUserGroupRole和countByUsersPermissions。 / 235 Liferay使用手册 《使用手册》 permissions.user.check.algorithm=2 第三个算法通过检查三件事检查权限。它将检查的作用合并到一步。如果它找到了以下任何一项,它返回 true: ● 用户同直接连接到其中一权限的小组或组织联系在一起? ● 与直接连接到一个权限的角色相关联的用户吗? ● 用户直接连接到一个权限吗? permissions.user.check.algorithm=3 第四种算法通过调用方法一的countByGroupsPermissions, countByRolesPermissions和countByUsersPermissions,实现算法三中一步完成的数据库连接和权限检查。 permissions.user.check.algorithm=4 设置默认权限列表的筛选器类。此类必须实现 com.liferay.portal.kernel.security.permission.PermissionsListFilter。当您要在权限列表保持不变之前进行筛选将用到它。例如当您要确保所有用户创建的对象永远不会有更新的操作,此时您可以筛选列表并删除任何保持不变之前的UPDATE操作的权限。 permissions.list.filter=com.liferay.portal.security.permission.PermissionsListFilterImpl 5.3.1、验证码 设置检查每个portlet session的验证码最大个数。设置为0表示总是检查。设置为一个小于0的数字表示从不检查。如果开启验证码检查,将检查未认证用户的每个请求。 captcha.max.challenges=1 使用下列操作设置是否使用验证码检查。 captcha.check.portal.create_account=true captcha.check.portal.send_password=true captcha.check.portlet.message_boards.edit_category=false captcha.check.portlet.message_boards.edit_message=false 5.3.1、启动事件 输入一列以点号分隔的扩展 com.liferay.portal.struts.SimpleAction 的类名。这些类将运行在指定的事件。 下面是一个全局启动事件,当门户网站初始化时运行。 global.startup.events=com.liferay.portal.events.GlobalStartupAction 下面是应用程序的启动事件,每个web站点实例初始化的门户网站时运行。 application.startup.events=com.liferay.portal.events.AppStartupAction#application.startup.events=com.liferay.portal.events.AppStartupAction,com.liferay.portal.events.SampleAppStartupAction / 235 Liferay使用手册 《使用手册》 5.3.1、关机事件 输入一列以点号分隔的扩展 com.liferay.portal.struts.SimpleAction 的类名。这些类将运行在指定的事件。关闭的门户网站时运行的全局关闭事件。 global.shutdown.events=com.liferay.portal.events.GlobalShutdownAction 为门户网站关闭时的每个网站实例申请关闭事件。 application.shutdown.events=com.liferay.portal.events.AppShutdownAction 以编程方式停止在关闭中的Java程序。这是为解决Tomcat中bug和在Linux中进程一直挂起的工作区。 更多信息请参阅 http://issues. liferay .com/browse/LEP-2048 。 shutdown.programmatically.exit=false 5.3.1、门户事件 输入一列以点号分隔的扩展com.liferay.portal.struts.Action的类名。这些类将在指定的事件之前或之后运行。Servlet服务事件:pre-service事件有一个关联的错误页面,如果事件执行期间引发异常将转发到该页面。Struts之前的pre-service事件进程处理该请求。 例如: servlet.service.events.pre=com.liferay.portal.events.ServicePreAction servlet.service.events.pre=com.liferay.portal.events.LogMemoryUsageAction,com.liferay.portal.events.LogThreadCountAction,com.liferay.portal.events.ServicePreActionservlet.service.events.pre=com.liferay.portal.events.LogSessionIdAction,com.liferay.portal.events.ServicePreActionservlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.RandomLayoutActionservlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.RandomLookAndFeelAction 使用以下方法来定义错误页。 servlet.service.events.pre.error.page=/common/error.jsp 在Struts之后的post-servic事件进程处理请求。 servlet.service.events.post=com.liferay.portal.events.ServicePostAction 5.3.1、登录事件 定义能产生pre-login和post-login的事件。 login.events.pre=com.liferay.portal.events.LoginPreActionlogin.events.post=com.liferay.portal.events.LoginPostAction,com.liferay.portal.events.DefaultLandingPageAction / 235 Liferay使用手册 《使用手册》 5.3.1、登出事件 类似的,事件被定义用于注销。 logout.events.pre=com.liferay.portal.events.LogoutPreAction Post事件实例: logout.events.post=com.liferay.portal.events.LogoutPostActionlogout.events.post=com.liferay.portal.events.LogoutPostAction,com.liferay.portal.events.DefaultLogoutPageAction,com.liferay.portal.events.SiteMinderLogoutAction#logout.events.post=com.liferay.portal.events.LogoutPostAction,com.liferay.portal.events.GarbageCollectorAction 5.3.1、默认登陆页面 设置默认登录页面路径为相对于已的服务器路径的用户登录。这是用户登录后将自动重定向到的页面。例如默认登录页是 http://localhost:8080/web/guest/login,设置这为 /web/guest/login。要激活此功能,将auth.forward.by.last.path 设置为true。自定义行为,请参阅上面的login.events.post 属性中的com.liferay.portal.events.DefaultLandingPageAction。 #default.landing.page.path=/web/guest/login 5.3.1、默认注销页面 设置用户的缺省注销页路径为相对服务器路径。这是用户注销以后自动地重定向到的页面。 例如,如果您要缺省注销页是http://localhost:8080/web/guest/logout,设置此为/web/guest/logout。 要激活这个功能,设置auth.forward.by.la st.path为true。要定义行为,看见在上面logout.events.post属性中的com.liferay.portal.events.DefaultLogoutPageAction。 #default.logout.page.path=/web/guest/logout 5.3.1、默认 GUEST 公用布局 访问小组必须至少有一个公共页。最初的公共页的设置在以下属性中指定。 如果您需要增加一页以上,设置属性default.guest.public.layout.lar为指定的LAR文件。 更复杂的行为重是写在com.liferay.portal.service.impl.GroupLocalServiceImpl 中的 addDefaultGuestPublicLayouts方法。 设置公共布局的名称。 default.guest.public.layout.name=Welcome / 235 Liferay使用手册 《使用手册》 设置公开布局的布局模板id。 default.guest.public.layout.template.id=2_columns_ii 设置布局模板中指定的列的portlet id。 default.guest.public.layout.column-1=58 default.guest.public.layout.column-2=47 default.guest.public.layout.column-3= default.guest.public.layout.column-4= 设置公共布局的友好url。 default.guest.public.layout.friendly.url=/home 设置公共布局的常规主题id。 #default.guest.public.layout.regular.theme.id=classic 设置公共布局的常规颜色计划id。 #default.guest.public.layout.regular.color.scheme.id=01 设置公共布局的wap主题 id。 #default.guest.public.layout.wap.theme.id=mobile 设置公共的布局的wap配色方案。 #default.guest.public.layout.wap.color.scheme.id=01 指定一个可以用来创建访问公共布局的LAR文件。设置此属性则以前的布局属性将被忽略。 #default.guest.public.layouts.lar=${liferay.home}/deploy/default_guest_public.lar 5.3.1、默认用户私用布局 如果属性layout.user.private.layouts.enabled和layout.user.private.layouts.auto.create是都为true,则用户将有私有布局,并且他们将自动地生成。下面的设置用于私有页的初始化。 如果需要添加多个页面设置,设置属性default.user.private.layout.lar为特定的LAR文件。 对于更复杂的行为,需要重写com.liferay.portal.events.ServicePreAction 中的 addDefaultUserPrivateLayouts 方法。 设置私人布局的名称。 default.user.private.layout.name=Welcome 设置私人的布局的布局模板id。 default.user.private.layout.template.id=2_columns_ii 设置布局模板中指定的列的 portlet id。 default.user.private.layout.column-1=71_INSTANCE_OY0d,82,23,61 default.user.private.layout.column-2=11,29,8,19 default.user.private.layout.column-3= default.user.private.layout.column-4= 设置私有布局的友好url。 default.user.private.layout.friendly.url=/home 设置私有布局的常规主题id。 / 235 Liferay使用手册 《使用手册》 #default.user.private.layout.regular.theme.id=classic 设置私有布局的常规颜色方案id。 #default.user.private.layout.regular.color.scheme.id=01 设置私有布局的wap主题 id。 #default.user.private.layout.wap.theme.id=mobile 设置私有的布局的wap配色方案。 #default.user.private.layout.wap.color.scheme.id=01 指定一个可以用来创建访问私有布局的LAR文件。设置此属性则以前的布局属性将被忽略。 #default.user.private.layouts.lar= \ ${liferay.home}/deploy/default_user_private.lar 5.3.1、默认用户公用布局 如果属性layout.user.public.layouts.enabled和layout.user.public.layouts.auto.create都为true,则用户将有公有布局,并且他们将自动地生成。下面的设置用于公有页的初始化。 如果需要添加多个页面设置,则属性 default.user.public.layout.lar设为指定LAR的文件。 对于更复杂的行为,重写com.liferay.portal.events.ServicePreAction中的addDefaultUserPublicLayouts方法。 设置公有布局的名称。 default.user.public.layout.name=Welcome 设置公有布局的布局模板id。 default.user.public.layout.template.id=2_columns_ii 设置布局模板中指定的列的 portlet id。 default.user.public.layout.column-1=82,23 default.user.public.layout.column-2=8,19 default.user.public.layout.column-3= default.user.public.layout.column-4= 设置公有布局的友好url。 default.user.public.layout.friendly.url=/home 设置公有布局的常规主题id。 #default.user.public.layout.regular.theme.id=classic 设置公有布局的常规颜色反方案id。 #default.user.public.layout.regular.color.scheme.id=01 设置公有布局的wap主题 id。 #default.user.public.layout.wap.theme.id=mobile 设置公有布局的wap配色方案。 #default.user.public.layout.wap.color.scheme.id=01 指定一个可以用来创建访问公有布局的LAR文件。设置此属性则以前的布局属性将被忽略。 #default.user.public.layouts.lar=${liferay.home}/deploy/default_user_public.lar / 235 Liferay使用手册 《使用手册》 5.3.1、默认管理 设置默认管理员密码。 default.admin.password=test 设置默认管理屏幕名称前缀。 default.admin.screen.name=test 设置默认管理员邮箱地址前缀。 default.admin.email.address.prefix=test 设置默认管理员的名。 default.admin.first.name=Test 设置默认管理员的别名。. default.admin.middle.name= 设置默认管理员的姓。 default.admin.last.name=Test 5.3.1、布局 设置布局类型的列表。每个布局类型的显示文本在content/Language.properties中设置并以 layout.types作为前缀。您可以创建新的布局类型,并指定每个布局类型的自定义设置。终端用户输入动态值正如在编辑页面中设计。终端用户看到的布局正如在查看页面中设计的。生成的网址可以引用编辑页面中的属性设置。Parentable布局可以包含子布局。您也可以指定您的布局,当它被更新或删除时将要求指定的以点号分隔的配置操作列表。 layout.types=portlet,panel,embedded,article,url,link_to_layout 设置是否启用私有布局。设置私有布局是否可修改。设置当用户有没有私人布局时,私有布局是否应自动创建。如果不启用私有的布局,则其他两个属性被设为 false。 layout.user.private.layouts.enabled=true layout.user.private.layouts.modifiable=true layout.user.private.layouts.auto.create=true 设置是否启用公有布局。设置公有布局是否可修改。设置当用户没有公有布局时,公有布局是否应自动创建。如果不启用私有的布局,则其他两个属性被设为 false。 layout.user.public.layouts.enabled=true layout.user.public.layouts.modifiable=true layout.user.public.layouts.auto.create=true 5.3.1、默认设置布局 这些设置允许您定义布局中的几个属性。 您也能指定哪JSPs对编辑和观看布局负责。一般不需要改变这些设置。 / 235 Liferay使用手册 《使用手册》 layout.edit.page=/portal/layout/edit/portlet.jsp layout.view.page=/portal/layout/view/portlet.jsp layout.url=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid} layout.url.friendliable=true layout.parentable=true layout.sitemapable=true layout.first.pageable=true layout.configuration.action.update= layout.configuration.action.delete= portlet布局的设置是从缺省设置中继承来的。 layout.edit.page[portlet]=/portal/layout/edit/portlet.jsp layout.view.page[portlet]=/portal/layout/view/portlet.jsp layout.url[portlet]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid} layout.url.friendliable[portlet]=true layout.parentable[portlet]=true layout.configuration.action.update[portlet]= layout.configuration.action.delete[portlet]= 盘区布局的设置。 layout.edit.page[panel]=/portal/layout/edit/panel.jsp layout.view.page[panel]=/portal/layout/view/panel.jsp layout.url[panel]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid} layout.url.friendliable[panel]=true layout.parentable[panel]=true layout.first.pageable[panel]=true control_panel 布局的设置。 layout.edit.page[control_panel]=/portal/layout/edit/control_panel.jsp layout.view.page[control_panel]=/portal/layout/view/control_panel.jsp layout.url[control_panel]=${liferay:mainPath}/portal/layout?p_l_id=$ {liferay:plid} layout.url.friendliable[control_panel]=true layout.parentable[control_panel]=true layout.first.pageable[control_panel]=true 嵌入式布局的设置。 layout.edit.page[embedded]=/portal/layout/edit/embedded.jsp layout.view.page[embedded]=/portal/layout/view/embedded.jsp layout.url[embedded]=${liferay:mainPath}/portal/layout?p_l_id=$ {liferay:plid} layout.url.friendliable[embedded]=true layout.parentable[embedded]=false layout.sitemapable[embedded]=true layout.first.pageable[embedded]=true / 235 Liferay使用手册 《使用手册》 layout.configuration.action.update[embedded]= layout.configuration.action.delete[embedded]= 文章布局的设置。 layout.edit.page[article]=/portal/layout/edit/article.jsp layout.view.page[article]=/portal/layout/view/article.jsp layout.url.friendliable[article]=true layout.url[article]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid} layout.parentable[article]=false layout.sitemapable[article]=true layout.first.pageable[article]=true layout.configuration.action.update[article]=com.liferay.portal.model.Layout- TypeArticleConfigurationUpdateAction layout.configuration.action.delete[article]=com.liferay.portal.model.Layout- TypeArticleConfigurationDeleteAction URL布局的设置。 layout.edit.page[url]=/portal/layout/edit/url.jsp layout.view.page[url]= layout.url[url]=${url} layout.url.friendliable[url]=true layout.parentable[url]=false layout.sitemapable[url]=false layout.first.pageable[url]=false layout.configuration.action.update[url]= layout.configuration.action.delete[url]= 页面布局的设置。 layout.edit.page[link_to_layout]=/portal/layout/edit/link_to_layout.jsp layout.view.page[link_to_layout]= layout.url[link_to_layout]=${liferay:mainPath}/portal/layout?p_l_id=${link- ToPlid} layout.url.friendliable[link_to_layout]=true layout.parentable[link_to_layout]=true layout.sitemapable[link_to_layout]=false layout.first.pageable[link_to_layout]=false layout.configuration.action.update[link_to_layout]= layout.configuration.action.delete[link_to_layout]= 指定不能移动且始终显示在每个布局上的静态实例。静态实例优先于可动态配置布局的实例。 例如,如果你希望用户布局的Hello World实例在第一列的迭代开始时始终显示,则设置属性layout.static.portlets.start.column-1[user]为47。如果你希望用户布局的 / 235 Liferay使用手册 《使用手册》 Hello World实例在第二列的末尾始终显示,则设置属性layout.static.portlets.end.-column-2[user]为47。您可以输入一个分隔实例id的逗号列表,来指定多个实例。如果实例是instanceable,向实例id添加suffix_INSTANCE_abcd,其中,abcd是任意随机字母数字字符串。 静态实例的获取是基于由使用EasyConf的自定义筛选器控制的属性。默认情况下,可用的筛选器有用户、共享和结构。 layout.static.portlets.start.column-1[user]=3,6 layout.static.portlets.end.column-1[user]=14 layout.static.portlets.start.column-2[user]=71_INSTANCE_abcd,7 layout.static.portlets.end.column-2[user]=34,70 layout.static.portlets.start.column-3[user]= layout.static.portlets.end.column-3[user]= 基于布局的友好URL设置静态实例也是可能的。 layout.static.portlets.start.column-1[user][/home]=3,6 layout.static.portlets.end.column-2[community][/home]=14 设置共享布局的静态实例。 layout.static.portlets.start.column-1[community]= layout.static.portlets.end.column-1[community]= layout.static.portlets.start.column-2[community]= layout.static.portlets.end.column-2[community]= layout.static.portlets.start.column-3[community]= layout.static.portlets.end.column-3[community]= 设置结构布局的静态实例。 layout.static.portlets.start.column-1[organization]= layout.static.portlets.end.column-1[organization]= layout.static.portlets.start.column-2[organization]= layout.static.portlets.end.column-2[organization]= layout.static.portlets.start.column-3[organization]= layout.static.portlets.end.column-3[organization]= 设置为每个布局显示的静态实例。参见/html/portal/layout/view/portlet.jsp,它在Liferay源代码中,可以看到当显示这些实例时的逻辑。例如,这些实例只为包含实例的布局显示,并且不在弹出的状态。 layout.static.portlets.all=1_WAR_chatportlet 设置映射为com.liferay.portal.servlet.FriendlyURLServlet的私人组、私有用户和公共服务器。 该值必须匹配web.xml中的映射服务器。 例如,如果专用组页被映射到/group,组的友好URL被设置为/guest,且布局的友好URL被设置为 /company/community,那么页面的友好URL是http://www.liferay.com/group/guest/company/community。专用组页映射到一个共享私人页面,并且只可用于通过身份验证的和具有适当权限的用户。 例如,如果公共页被映射到/web,组或用户的友好URL被设置为/guest,且布局的友好URL被设置为 /company/community,那么页面的友好URL是http://www.liferay.com/web/guest/company/community。公共页面可用于未经身份验证的用户。 / 235 Liferay使用手册 《使用手册》 用户、小组和布局的友好URL可以在运行时间期间设置。 layout.friendly.url.private.group.servlet.mapping=/group layout.friendly.url.private.user.servlet.mapping=/user layout.friendly.url.public.servlet.mapping=/web 如果用户请求一个不存在的友好URL,可以重定向这种资源。不要让它空白显示。 注意:对于后台兼容,它覆盖404状态代码的属性layout.show.http.status。 layout.friendly.url.page.not.found=/html/portal/404.html 设置不能在友好URL中使用的保留关键字。 layout.friendly.url.keywords=c,group,web,image,wsrp,page,public,private,rss, tags 如果布局记住 (通过请求) 窗口状态被设置为最大化,则将以下设置为true。 layout.remember.request.window.state.maximized=false 如果来宾用户要看到最大化窗口图标,将以下设置为true。 layout.guest.show.max.icon=false 如果来宾用户要看到最小化窗口图标,将以下设置为true。 layout.guest.show.min.icon=false 如果用户显示他们并没有访问实例,将以下设置为true。实例初始化参数show-portlet-access-denied将覆盖此设置。 layout.show.portlet.access.denied=true 如果用户显示实例处于非活动状态,将以下设置为true。实例初始化参数show-portlet-inactive将覆盖此设置。 layout.show.portlet.inactive=true 如果门户网站显示像404的HTTP状态代码,或找不到请求的页面,将以下设置为true。 layout.show.http.status=true 设置创建布局时使用的默认布局模板ID。 layout.default.template.id=2_columns_ii 将以下设置为false,以禁用并行渲染。您还可以在每个请求的基础上禁用它,通过设置属性键 com.liferay.portal.util.WebKeys.PORTLET_PARALLEL_RENDER为售前服务事件中的Boolean.FALSE,或者将URL参数p_p_parallel设置为0。 layout.parallel.render.enable=true 设置实现com.liferay.portal.util.LayoutClone的类名称。此类用来记住共享页面上的最大化和最小化状态。默认实现仍然存在浏览器会话的状态。 layout.clone.impl=com.liferay.portal.util.SessionLayoutClone 设置以下为true来缓存布局模板的内容。建议这样设置,因为它可以提高生产服务器的性能。如果您需要进行大量的更改,有效的方法是在发展过程中将它设置为false。 layout.template.cache.enabled=true 设置参数p_l_reset的默认值。如果设置为true,则当不同的页面被命中时,呈现的参数会被清除。这不是由实例技术条件推动下的行为,但是是大多数最终用户似乎更喜欢的一种。 / 235 Liferay使用手册 《使用手册》 layout.default.p_l_reset=true 5.3.1、PORTLET URL 如果在实例url中调用setParameter后追加而不是替换它的参数值,将以下设置为true。在实例开发人员中,他们对JSR 168规范的解释会有不同的意见,而不是此特定的行为。Liferay门户网站成功地通过了实例TCK 测试,测试是否设置该值为true或false。 参见 http://issues . liferay .com/browse/LEP-426 以获得更多信息。 portlet.url.append.parameters=false 设置以下为true,以允许实例URL生成一个定位点标记。 portlet.url.anchor.enable=false JSR 286指定在默认情况下转义实例url。设置此为false,以提供更好的后台兼容性。 如果该选项设置为true,但特定的实例应用程序要求在默认情况下实例url不进行转义,那么修改 portlet.xml并设置容器运行时间选项javax.portlet.escapeXml为false。 portlet.url.escape.xml=false 5.3.1、参数选择 将以下设置为true以验证启动时的实例参数。 preference.validate.on.startup=false 5.3.1、STRUTS 输入自定义的Struts请求处理器,它将被基于实例的Struts使用。自定义的类必须扩展 com.liferay.portal.struts.PortletRequestProcessor,并且具有相同的构造函数。 struts.portlet.request.processor=com.liferay.portal.struts.PortletRequest- Processor 5.3.1、图像 设置默认间隔图像的位置,这些图像用于丢失的图像。这个图像在类路径中一定取得到。 image.default.spacer=com/liferay/portal/dependencies/spacer.gif 设置默认公司徽标图像的位置,这些图像用于丢失的公司徽标图像。此图像必须在类路径中取到。 / 235 Liferay使用手册 《使用手册》 image.default.company.logo=com/liferay/portal/dependencies/company_logo.png 设置默认结构徽标图像的位置,这些图像用于丢失的默认结构徽标图像。此图像必须在类路径中取到。 image.default.organization.logo=com/liferay/portal/dependencies/organization_ logo.png 设置默认用户头像图像的位置,这些图像用于丢失的默认用户头像图像。此图像必须在类路径中取到。 image.default.user.female.portrait=com/liferay/portal/dependencies/user_female_ portrait.png image.default.user.male.portrait=com/liferay/portal/dependencies/user_male_p ortrait.png 设置实现com.liferay.portal.image.Hook的类名称。门户网站将使用此persist图像。 可利用的hooks有: • com.liferay.portal.image.DatabaseHook • com.liferay.portal.image.DLHook • com.liferay.portal.image.FileSystemHook image.hook.impl=com.liferay.portal.image.DatabaseHook #image.hook.impl=com.liferay.portal.image.DLHook #image.hook.impl=com.liferay.portal.image.FileSystemHook 5.3.1、FILESYSTEMHOOK image.hook.file.system.root.dir=${liferay.home}/data/images 5.3.1、编辑器 您可以配置单个JSP页来使用可用WYSIWYG编辑器的特定实现:如liferay, fckeditor, simple, tinymce, or tinymcesimple。 editor.wysiwyg.default=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.blogs.edit_entry.jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.calendar.edit_configuration. jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.enterprise_admin. view.jsp=fckeditor / 235 Liferay使用手册 《使用手册》 editor.wysiwyg.portal-web.docroot.html.portlet.invitation.edit_configuration. jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.journal.edit_article_content. jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.journal. edit_article_content_xsd_el.jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.journal.edit_configuration. jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.login.configuration. jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.mail.edit.jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.mail.edit_message.jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.message_boards.edit_configuration. jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.shopping.edit_configuration. jsp=fckeditor editor.wysiwyg.portal-web.docroot.html.portlet.wiki.edit_html.jsp=fckeditor 5.3.1、域 设置下列字段为false,则用户不能看到它们。一些公司政策要求隐藏性别和生日信息。 field.enable.com.liferay.portal.model.Contact.male=true field.enable.com.liferay.portal.model.Contact.birthday=true field.enable.com.liferay.portal.model.Organization.status=false 5.3.1、MIME 类型 从 javax.activation.MimetypesFileTypeMap中输入分隔mime类型的逗号列表,这些类型在默认情况下是不可用的。 mime.types=\ application/msword doc,\ application/pdf pdf,\ application/vnd.ms-excel xls,\ / 235 Liferay使用手册 《使用手册》 application/vnd.ms-powerpoint ppt,\ application/x-ms-wmp wmv,\ application/x-shockwave-flash swf flv 输入分隔扩展的逗号列表,这些扩展中内容部署标头的设置为inline。 mime.types.content.disposition.inline=flv,pdf,swf,wmv 5.3.1、AMAZON 进入Amazon访问键ID和Amazon关联标记。 这仅供个人使用。 请参见http://www.amazon.com的Amazon许可证,以获得更多信息。 #amazon.access.key.id= #amazon.associate.tag= 5.3.1、浏览器启动 输入一个URL,当门户网站已完全初始化时,自动启动浏览器到该URL。输入一个空白的URL来禁用此功能。 browser.launcher.url=http://localhost:8080 5.3.1、控制面板 设置布局的名称。 control.panel.layout.name=Control Panel 设置布局的友好 URL。 control.panel.layout.friendly.url=/manage 设置布局的主题。 control.panel.layout.regular.theme.id=controlpanel 设置将显示在导航菜单中的共享的最大数。如果用户可以管理的共享很大,大值可能会导致性能问题。 control.panel.navigation.max.communities=50 设置将在导航菜单中显示的结构的最大数。如果用户能管理的结构数量非常大,大值可能会引起性能问题。 control.panel.navigation.max.organizations=50 5.3.1、即时通讯 设置系统用来联络用户的AIM注册和密码。 aim.login= aim.password= 由于JOscarLib 0.3b1中的错误,您必须设置全路径为ICQ索引。 / 235 Liferay使用手册 《使用手册》 请参阅以下帖子: http://sourceforge.net/forum/message.php?msg_id=1972697 http://sourceforge.net/forum/message.php?msg_id=1990487 icq.jar=C:/Java/orion-2.0.7/lib/icq.jar 设置系统用来与用户联络的ICQ注册和密码。 icq.login= icq.password= 设置系统用来与用户联络的MSN注册和密码 msn.login= msn.password= 设置系统用来与用户联络的YM注册和密码 ym.login= ym.password= 5.3.1、LUCENE 搜索 如果您希望避免索引的任何写入,设置以下为true。它在某些聚类环境中非常有用,其中有共享的索引并且群集只有一个节点更新它。 index.read.only=false 如果你希望在启动时索引文件的整个库,设置以下为true。 index.on.startup=false 设置此为true,在启动时索引之前, 添加延迟。如果很多插件需要加载和重新索引,可能需要延迟。如果将index.on.startup设置为true,此属性只是有效的。 index.on.startup.delay=60 如果您希望加快执行在单独线程上启动的索引时,请将以下设置为true。 index.with.thread=true 指定Lucene是否通过JDBC、文件系统把索引存储在数据库中或存储在RAM中。 示例: lucene.store.type=jdbc lucene.store.type=file lucene.store.type=ram Lucene的通过JDBC存储的索引在临时文件不删除处会出错。随着时间的推移,它会占用磁盘空间。设置以下属性为true,以自动清理临时文件,一天一次。请参阅LEP 2180。 lucene.store.jdbc.auto.clean.up=true 设置JDBC方言,在数据库中,Lucene使用其存放索引。如果Lucene在数据库中存放索引,只有它被引用。Lifera试图下载基于JDBC连接的URL的JDBC方言。例如,JDBC的连接URL:jdbc:mysql://localhost/lportal读取属性lucene.store.jdbc.dialect.mysql. lucene.store.jdbc.dialect.db2=org.apache.lucene.store.jdbc.dialect.DB2Dialect lucene.store.jdbc.dialect.derby=org.apache.lucene.store.jdbc.dialect.Derby- / 235 Liferay使用手册 《使用手册》 Dialect lucene.store.jdbc.dialect.hsqldb=org.apache.lucene.store.jdbc.dialect.HSQLDialect lucene.store.jdbc.dialect.jtds=org.apache.lucene.store.jdbc.dialect. SQLServerDialect lucene.store.jdbc.dialect.microsoft=org.apache.lucene.store.jdbc.dialect. SQLServerDialect lucene.store.jdbc.dialect.mysql=org.apache.lucene.store.jdbc.dialect.MySQLDialect #lucene.store.jdbc.dialect.mysql=org.apache.lucene.store.jdbc.dialect. MySQLInnoDBDialect #lucene.store.jdbc.dialect.mysql=org.apache.lucene.store.jdbc.dialect.MySQLMyISAMDialect lucene.store.jdbc.dialect.oracle=org.apache.lucene.store.jdbc.dialect.OracleDialect lucene.store.jdbc.dialect.postgresql=org.apache.lucene.store.jdbc.dialect.- PostgreSQLDialect 设置存储Lucene索引的目录。如果Lucene把索引存储在文件系统中,只有这被引用。 lucene.dir=${liferay.home}/lucene/ 输入扩展com.liferay.portal.search.lucene.LuceneFileExtractor的一个类名。Lucene调用这个类,能够从复杂的文件中提取文本,以便可以被正确地索引。 201~209: 如果想用一个单独的线程来加快启动索引,设置以下为ture。 指明lucene stores在数据库中是否用JDBC、file system、RAM索引。 例子: 用JDBC存储Lucene的索引会有一个bug,临时文件没有被删除。随着时间的推移,会消耗磁盘空间。设置以下的属性为ture,以自动删除一天的临时文件。见LEP-2180。 设置JDBC的dialect,用于Lucene把索引存到数据库中。只当lucene要存储索引到数据库中,推荐使用。Liferay将基于JDBC连接的URL下载适当的dialect。例如,属性lucene.store.jdbc.dialect.mysql 表示JDBC连接的URLjdbc:mysql://localhost/lportal。 / 235 Liferay使用手册 《使用手册》 设置lucene存储索引的目录。只当lucene存储索引到数据库下,推荐使用。 输入一个类名,用于扩展com.liferay.portal.search.lucene.LuceneFileExtractor。为了能够被正确索引,这个类被称为lucene,用于从复杂的文件中提取文本。 文件提取器有时会返回lucene的非法文本。这个属性理应有正则表达式。任何不匹配正则表达式的符号将被替换为一个空格。设置一个空的正则表达式来禁用此功能。 例如: 设置默认的用于索引和检索的分析器。 例如: / 235 Liferay使用手册 《使用手册》 设置lucene的合并因素。数字越说明索引速度越快,也需要更多的内存。Lucene设的默认值是10。决不能设置一个低于2的数。 设置启动lucene最优化方法的频率。最优化方法加快了索引速度,但降低了写的速度。设置这个属性为0,则一直最优化。设置这个属性一个大于0的整数,则最优化每写的X位。 5.4、开源版本 5.4、值对象 对一个特定的类,你可以通过设置属性value.object.listener来添加一个listener。属性value.object.listener 用一个逗号分隔的com.liferay.portal.model.ModelListener生效的类名列表来设置。这些类都是共用和重复利用的,并且必须是线程安全的。 / 235 Liferay使用手册 《使用手册》 默认情况下,值对象都被缓存。你可以禁止缓存所有对象或每个对象。 对映射表,关键是映射表自身。 5.4、通信链接 通过使用门户与其他门户的实例进行交流来设置JGroups属性。这只是在门户运行在聚集环境的情况下才需要。这个JGroups的设置可以提供一种门户广播消息给其他门户实例的机制。指定的多播地址应该对门户的内部消息的唯一的。你依然需要为数据库聚类设置Hibernate 和Ehcache 5.4、内容发布网络 设置主机名,用于通过一个CDN提供静态内容。在运行时,这个属性可以通过设置HTTP参数cdn_host被动态地重写。 5.4、计数器 设置数据库间更新计数器表的增量数。这个值设置的越高,性能越好。 设置几分钟内为ConnectionHearbeatJob的间隔。这将决定切断数据库长期连接的频率,并能防止数据库过早地断开socket的连接。 / 235 Liferay使用手册 《使用手册》 5.4、锁 为每个类设置锁定过期时间。 例如:1天 例如:20分钟 JBI 连接到Mule或 ServiceMix作为你的ESB。 例如: JCR 默认情况下,Liferay包含Jackrabbit ( http:// jackrabbit .apache.org )作为它的JSR170java内容仓库 LIVE USERS 将此属性设置为true,可跟踪在线用户。 LOCK 为每个类设置锁定过期时间。 1天 20分钟 5.4、MAIL 设置JNDJ来查找Java的邮件会话。如果没有设置,那么门户网站就尝试启动基于属性前缀是mail.session的java邮件会话 设置用于创建java邮件会话的属性。在创建会话对象之前,以"mail.session."为前缀的属性将被删除。这些属性只有在属性mail.session.jndi.name没设置的时候才会被读取。 / 235 Liferay使用手册 《使用手册》 如果管理员不被允许通过the Admin portlet更改邮件域,则设置这个为false。 输入一个逗号分隔的电子邮件地址,可以通过该邮件地址传密件给每一个电子邮件的邮件服务器。 设置一个类名,它可以执行com.liferay.mail.util.Hook。邮件服务器将使用这个类用于确保邮件和网站服务器同步用户信息。该门户网站将不知道如何添加、更新或者删除邮件服务器里的用户,除非通过此挂钩。 可能的挂钩有: Available hooks are: • com.liferay.mail.util.CyrusHook • com.liferay.mail.util.DummyHook • com.liferay.mail.util.FuseMailHook • com.liferay.mail.util.SendmailHook • com.liferay.mail.util.ShellHook 5.4、CYRUSHOOK 设置命令用于添加,更改和删除用户,其中%1%是用户ID。用cyrus用户的密码来替换该密码。 5.5、FUSEMAILHOOK 访问http://www.fus e mail .com/support/api. html以获得更多信息。你还必须更新mail.account.finder这个属性。 / 235 Liferay使用手册 《使用手册》 5.6、SENDMAILHOOK 设置命令用于添加,更改和删除用户,其中%1%是用户ID,%2%是密码。设置家庭和虚拟用户表信息。 5.7、SHELLHOOK 设置shell脚本的位置,该脚本将于任何邮件服务器接口。 5.8、OPENOFFICE OpenOffice的集成允许启用文档库的portlet来提供文件转换功能。为了启动OpenOffice服务,执行如下命令。 这是用OpenOffice 2.3.x测试的。 5.9、POP 设置这个为true,以便从一个POP服务器通知电子邮件投票。用于SMTP认证的用户凭据都是相同的,并且对每个应用服务器,它们的mail/MailSession都是指定的。 设置一个POPNotificationsJob运行的间隔时间,该值被设置成一分钟的增量。 设置这个属性用来创建一个接收所有门户网站相关电子邮件(如events.liferay.com)的特殊MX子域。这就意味着为这个域配置一个收件箱,再接收所有相关网站的邮件到收件箱里。这种做法可能不被一些组织允许。如果您不能使用子域的方法,未设置此值,Liferay将使用portlet指定的地址。 / 235 Liferay使用手册 《使用手册》 5.10、QUARTZ 这些属性定义了嵌入式Quartz job scheduling引擎的连接。 5.11、调度器 将此项设置为false来禁用所有定义在liferay-portlet.xml中的调度类和属性scheduler.classes。 输入一列逗号分隔的类名,用于执行com.liferay.portal.kernel.job.Scheduler。这些类允许作业在要启动时预定。这些类不与任何portlet相关。 5.12、搜索容器 为显示每页的入口数设置可用值。空值,或注释掉的值,将禁止调整增量大小。 默认值20将适用于所有的情况。 总是包括20,因为当没有delta被指定时,它是默认的页面大小。最大允许绝对增量为200。 5.13、SHAREPOINT 为支持共享点存储路径设置标记。 为支持共享点存储类设置类名。 / 235 Liferay使用手册 《使用手册》 5.14、社交书签 博客portlet允许条目张贴到各种流行的社会书签网站。这个例子是默认值。为更多配置,只要用按以下格式添加网站即可。 5.15、速度引擎 输入一列逗号分隔的类名,用于扩展com.liferay.util.velocity.VelocityResourceListener。这些类将按序运行,让你找到适用的ResourceLoader来加载速度模板。 设置速度资源管理器。为了更好的可扩展性,我们扩展速度的默认资源管理器。 请注意,修改检查间隔是不被允许的,因为该资源的装载机实现不知道一个资源的上次修改日期。这意味着,如果你希望在修改虚拟机模板的主题后能立即看到变化,你就需要关闭缓存。 设置将被忽略的虚拟主机的路径。 / 235 Liferay使用手册 《使用手册》 5.16、HTTP 查看system.properties以获得更多的http设置。 210~219 设定连接的最大数目。 #com.liferay.portal.util.HttpImpl.max.connections.per.host=2 #com.liferay.portal.util.HttpImpl.max.total.connections=20 设定代理验证类型。 #com.liferay.portal.util.HttpImpl.proxy.auth.type=username-password #com.liferay.portal.util.HttpImpl.proxy.auth.type= ntlm 设定用户名字和为 HTTP 代理验证的密码。 #com.liferay.portal.util.HttpImpl.proxy.username= #com.liferay.portal.util.HttpImpl.proxy.password= 为 NTLM验证设定另外特性。 #com.liferay.portal.util.HttpImpl.proxy.ntlm.domain= #com.liferay.portal.util.HttpImpl.proxy.ntlm.host= 设定提取HTTP内容是的连接时限。 com.liferay.portal.util.HttpImpl.timeout=10000 / 235 Liferay使用手册 《使用手册》 5.16.1、SERVLET过滤器 缓存过滤器将会贮藏内容。参见 ehcache.xml 修改高缓存的生存期限。 com.liferay.portal.servlet.filters.cache.CacheFilter=true 这个重复操作过滤器将会避免在服务器边的重复操作。预防重复操作已经放在在客户端。然而,一些站点需要更强健的解决方式。因为大多数站点不需要它,这默认被关掉。 com.liferay.portal.servlet.filters.doubleclick.DoubleClickFilter=false 如果用户能解压被压缩的 HTTP 内容, GZip 过滤器将在传给用户HTTP协议内容之前先将它压缩。当用户在拨号时,这将会加速页面显示效果。 com.liferay.portal.servlet.filters.gzip.GZipFilter=true header过滤器被用设定请求报头。 com.liferay.portal.servlet.filters.header.HeaderFilter=true minifier过滤器使CSS 和 Java变小。 com.liferay.portal.servlet.filters.minifier.MinifierFilter=true strip过滤器将会从内容移开空行。当用户在拨号时,这将会加速页面显示效果。 com.liferay.portal.servlet.filters.strip.StripFilter=true layout缓存过滤器将会贮藏页加速用户的页面显示。参见 ehcache.xml 修改缓存的存活期限。 com.liferay.portal.servlet.filters.layoutcache.LayoutCacheFilter=true 协议id过滤器确定只有一个协议在http和https协议之间被建立。如果你想要使用者经由 https 登录但是要他们经由http查看站点的其他内容,这是有用的。这默认被被禁用。不要启用除非你彻底地了解cookies、 http 和 https 如何工作。 com.liferay.portal.servlet.filters.sessionid.SessionIdFilter=错误的 速度过滤器将会把*/css/main.css当做速度模板来处理。 com.liferay.portal.servlet.filters.velocity.VelocityFilter=错误的 虚拟主机过滤器将主机映射给公众和私有网页。举例来说,如果公众虚拟主机是www.helloworld.com,友好的网址是/helloworld,那么http:/ /www.helloworld.com 被映射http://localhost:8080/web/helloworld。 com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter=真实的 5.16.2、上传SERVLET请求 设定最大档案的大小。默认值是 1024*1024*100 。 com.liferay.portal.upload.UploadServletRequestImpl.max.size=104857600 为上传文件设定临时目录。 #com.liferay.portal.upload.UploadServletRequestImpl.temp.dir= C:/Temp / 235 Liferay使用手册 《使用手册》 设定临限大小避免上传的数据的无法序列化。 com.liferay.portal.upload.LiferayFileItem.threshold.size=262144 设定临限大小避免缓存大量数据导致内存溢出。默认值是 1024*1024*10 。 com.liferay.portal.upload.LiferayInputStream.threshold.size=10485760 5.16.3、网站服务器 设定在J2 EE 服务器(在另一个例如Apache的Web服务器)中运行portal网站时的HTTP 和 HTTPs端口。否则,设定数值-1。 web.server.http.port=-1 web.server.https.port=-1 当portlet产生网址时,设定将会被用的hostname。空白意味着主机起源于 servlet容器。 web.server.host= 设定优先的协定。 web.server.protocol=https 设定为true,在每页的底部显示服务器名字。当测试群集配置时这是有用的以便你能知道你在访问那个节点。 web.server.display.node=错误的 5.16.4、WEBDAV 设定下列各项为true,使编程配置能够让 WebDAV 即时配置,即时检验。这不应该被设定成true,除非你是进行即时测试。 webdav.litmus=错误的 设定一连串的文件让 WebDAV servlet 忽略处理。 webdav.ignor=.DS_Store,.metadata_index_homes_only,.metadata_never_index,.Sp otlight-V100,.TemporaryItems,. Trashes 5.16.5、主SERVLET Servlets 能被 com.liferay.portal.servlet.filters.secure.SecureFilter 保护。 输入一系列逗号分隔能访问这个servlet 的 IP。输入空白的列表让任何 IP 访问这一servlet 。SERVER_IP将为被主服务器的IP所取代。 main.servlet.hosts.allowed= 设定以下为真,如果servlet只能经由https访问。 main.servlet.https.required=false 5.16.6、AXIS SERVLET 在Main Servlet上查看该如何保护这一servlet。 / 235 Liferay使用手册 《使用手册》 axis.servlet.hosts.allowed=127.0.0.1,SERVER_IP axis.servlet.https.required=错误的 5.16.7、JSON TUNNEL SERVLET 在Main Servlet上查看该如何保护这一servlet。 json.servlet.hosts.allowed= json.servlet.https.required=错误的 5.16.8、LIFERAY TUNNEL SERVLET 在Main Servlet上查看该如何保护这一servlet。 tunnel.servlet.hosts.allowed=127.0.0.1,SERVER_IP tunnel.servlet.https.required=错误的 5.16.9、SPRING REMOTING SERVLET 在Main Servlet中查看如何保护这个servlet。 spring.remoting.servlet.hosts.allowed=127.0.0.1,SERVER_IP spring.remoting.servlet.https.required=false 5.16.10、WEBDAV SERVLET 在Main Servlet中查看如何保护这个servlet。 webdav.servlet.hosts.allowed= webdav.servlet.https.required=false 5.16.11、WIDGET SERVLET 设置为小型servlet的servlet映射。 widget.servlet.mapping=/widget 5.16.12、管理 PORTLET 您可以通过使用这些属性来设定默认管理。第一次你开发门户,这些值已被设置在管理portlet中。所有值应该由\ n字符分开。 设置默认的组名。 admin.default.group.names= 设置默认的角色名。 admin.default.role.names=Power User\nUser / 235 Liferay使用手册 《使用手册》 设置默认的组用户名。 admin.default.user.group.names= 其余的属性映射值到Admin portlet。 admin.mail.host.names= admin.reserved.screen.names= admin.reserved.email.addresses= admin.email.from.name=Joe Bloggs admin.email.from.address=test@liferay.com admin.email.user.added.enabled=true admin.email.user.added.subject=com/liferay/portlet/admin/dependencies/email_ user_added_subject.tmpl admin.email.user.added.body=com/liferay/portlet/admin/dependencies/email_use r_added_body.tmpl admin.email.password.sent.enabled=true admin.email.password.sent.subject=com/liferay/portlet/admin/dependencies/ema il_password_sent_subject.tmpl admin.email.password.sent.body=com/liferay/portlet/admin/dependencies/email_ password_sent_body.tmpl 5.16.13、公告 PORTLET 配置电子邮件通知设置。 announcements.email.from.name=Joe Bloggs announcements.email.from.address=test@liferay.com announcements.email.to.name= announcements.email.to.address=noreply@liferay.com announcements.email.subject=com/liferay/portlet/announcements/dependencies/e mail_subject.tmpl announcements.email.body=com/liferay/portlet/announcements/dependencies/emai l_body.tmpl 设置公布类型的列表。对每种公告类型的文字显示在content/Language.properties中设定 announcements.entry.types=general,news,test 设置CheckEntryJob运行的时间间隔。该值以1分钟的增量设置。 announcements.entry.check.interval=15 / 235 Liferay使用手册 《使用手册》 5.16.14、ASSET PUBLISHER PORTLET 输入一个逗号分隔显示样式的列表,将在Asset Publisher portlet中的屏幕配置中可供使用。 asset.publisher.display.styles=table,title-list,abstracts,full-content 5.16.15、博客 PORTLET 下列属性影响Blogs portlet。 blogs.email.comments.added.enabled=true blogs.email.comments.added.subject=com/liferay/portlet/blogs/dependencies/em ail_comments_added_subject.tmpl blogs.email.comments.added.body=com/liferay/portlet/blogs/dependencies/email _comments_added_body.tmpl blogs.page.abstract.length=400 blogs.rss.abstract.length=200 blogs.trackback.excerpt.length=50 设置CheckEntryJob运行的时间间隔。该值以1分钟的增量设置。 blogs.trackback.verifier.job.interval=5 5.16.16、日历 PORTLET 设置事件类型的列表。在content/Language.properties中设定每种类型的事件中显示内容。 calendar.event.types=anniversary,appointment,bill-payment,birthday,breakfast, call,chat,class,club-event,concert,dinner,event,graduation,happy- hour,holiday,interview,lunch,meeting,movie,net-event,other,party,performance, press-release,reunion,sports-event,training,travel,tvshow, vacation,wedding 设置CheckEntryJob运行的时间间隔。该值以1分钟的增量设置。 calendar.event.check.interval=15 配置电子邮件通知设置。 calendar.email.from.name=Joe Bloggs calendar.email.from.address=test@liferay.com calendar.email.event.reminder.enabled=true calendar.email.event.reminder.subject=com/liferay/portlet/calendar/dependencies/ email_event_reminder_subject.tmpl / 235 Liferay使用手册 《使用手册》 calendar.email.event.reminder.body=com/liferay/portlet/calendar/dependencies/ email_event_reminder_body.tmpl 5.16.17、COMMUNITIES PORTLET 配置电子邮件通知设置。 communities.email.from.name=Joe Bloggs communities.email.from.address=test@liferay.com communities.email.membership.reply.subject=com/liferay/portlet/communities/d ependencies/email_membership_reply_subject.tmpl communities.email.membership.reply.body=com/liferay/portlet/communities/dependencies/ email_membership_reply_body.tmpl communities.email.membership.request.subject=com/liferay/portlet/communities /dependencies/email_membership_request_subject.tmpl communities.email.membership.request.body=com/liferay/portlet/communities/de pendencies/email_membership_request_body.tmpl 5.16.18、DOCUMENT LIBRARY PORTLET 设置一个类名,它实现com.liferay.documentlibrary.util.Hook。文档库服务器将支持该类的文件。 可用的hooks有: ■ com.liferay.documentlibrary.util.FileSystemHook ■ com.liferay.documentlibrary.util.JCRHook ■ com.liferay.documentlibrary.util.S3Hook 例子: #dl.hook.impl=com.liferay.documentlibrary.util.AdvancedFileSystemHook dl.hook.impl=com.liferay.documentlibrary.util.FileSystemHook #dl.hook.impl=com.liferay.documentlibrary.util.JCRHook #dl.hook.impl=com.liferay.documentlibrary.util.S3Hook FILESYSTEMHOOK dl.hook.file.system.root.dir=${liferay.home}/document_library S3HOOK dl.hook.s3.access.key= dl.hook.s3.secret.key= dl.hook.s3.bucket.name= 设置最大文件大小和文件,有效的文件扩展名。0可以用来表示无限的文件大小。然而,允许的最大文件大小设置在属性 / 235 Liferay使用手册 《使用手册》 com.liferay.portal.upload.UploadServletRequestImpl.max.size。 例子: #dl.file.max.size=307200 #dl.file.max.size=1024000 dl.file.max.size=3072000 *扩展将允许所有文件扩展名 您可以映射GIF为一个扩展,通过将图像加入到主题的图像显示和文档库文件夹中。 *通配符的扩展将被忽略。例如,DOC扩展名默认图像在/html/themes/_unstyled/images/document_library/doc.gif中找到。 文件扩展名的例子: dl.file.extensions=.bmp,.css,.doc,.dot,.gif,.gz,.htm,.html,.jpg,.js,.lar,.odb,.odf,.odg,.odp,.ods,.odt,.pdf,.png,.ppt,.rtf,.swf,.sxc,.sxi,.sxw,.tar,.tiff,.tgz,.txt,.vsd,.xls,.xml,.zip 设置哪些文件扩展名具有可比性的比较工具。如果启用OpenOffice的整合功能,那么它也可能比较一些是可以转换为文本的二进制文件。 dl.comparable.file.extensions=.css,.js,.htm,.html,.txt,.xml #dl.comparable.file.extensions=.css,.doc,.js,.htm,.html,.odt,.rtf,.sxw,.txt,.xml 设置文件夹名称,将被用于同步社区中私人和公共的布局。这将允许用户使用Document Library portlet,并最终通过WebDAV管理布局。此功能是实验性的。 dl.layouts.sync.enabled=false dl.layouts.sync.private.folder=Pages - Private dl.layouts.sync.public.folder=Pages – Public 5.16.19、IMAGE GALLERY PORTLET 设置最大文件大小和图像的有效的文件扩展名。为0的最大文件大小值可以用来表示无限的文件大小。然而,允许的最大文件大小设置在属性com.liferay.portal.upload.UploadServletRequestImpl.max.size。 ig.image.max.size=10240000 *文件的扩展将允许所有文件扩展名。 ig.image.extensions=.bmp,.gif,.jpeg,.jpg,.png,.tif,.tiff 以像素为单位设置缩略图的最大高度和宽度。设置尺寸为0以禁用建立一个这么大规模的自定义图像。 ig.image.thumbnail.max.dimension=150 #ig.image.custom1.max.dimension=100 #ig.image.custom2.max.dimension=0 5.16.20、INVITATION PORTLET invitation.email.max.recipients=20 / 235 Liferay使用手册 《使用手册》 invitation.email.message.body=com/liferay/portlet/invitation/dependencies/em ail_message_body.tmpl invitation.email.message.subject=com/liferay/portlet/invitation/dependencies/ email_message_subject.tmpl 5.16.21、JOURNAL PORTLET 如果设置为true,文章ID应始终自动生成。 journal.article.force.autogenerate.id=true 设置为true,即使文章不被验证,也只保留的最新版本,而不是以版本增量保存。 journal.article.force.increment.version=false 设置文章类型清单。每种类型的文章的显示格式在content/Language.properties中设置。 journal.article.types=announcements,blogs,general,news,press-release,test 设置在文章中插入简单的分页符时使用的标记。 journal.article.token.page.break=@page_break@ 设置CheckArticleJob将运行的时间间隔。该值以一分钟的增量被设置。 journal.article.check.interval=15 设置为true,来检查当期刊文章被呈现时,用户是否有权有查看期刊文章的内容。 journal.article.view.permission.check.enabled=false 如果设置为true应始终自动生成feed ID。 journal.feed.force.autogenerate.id=false 如果设置为true应始终自动生成结构ID。 journal.structure.force.autogenerate.id=false 如果设置为true应始终自动生成模板的ID。 journal.template.force.autogenerate.id=false 输入一个以逗号分隔的变量列表,这些列表受限于基于日记模板的速度环境。 journal.template.velocity.restricted.variables=serviceLocator 设置最大文件大小和图像的有效文件扩展名。0为表示无限的文件大小。然而,最大允许文件大小在propertycom.liferay.portal.upload.UploadServletRequest- Impl.max.size中设置。 journal.image.small.max.size=51200 *文件的扩展将允许所有文件扩展名。 journal.image.extensions=.gif,.jpeg,.jpg,.png 输入一个逗号分隔的类名列表,扩展com.liferay.portlet.journal.util.TransformerListener。这些类将运行顺序,以便您在转化前可以修改XML和XSL,让你修改最终输出。 journal.transformer.listener=\ / 235 Liferay使用手册 《使用手册》 com.liferay.portlet.journal.util.TokensTransformerListener,\ #com.liferay.portlet.journal.util.PropertiesTransformerListener,\ com.liferay.portlet.journal.util.ContentTransformerListener,\ com.liferay.portlet.journal.util.LocaleTransformerListener,\ com.liferay.portlet.journal.util.RegexTransformerListener,\ com.liferay.portlet.journal.util.ViewCounterTransformerListener 输入一个正则表达式的模式以及将运用于输出日志内容的替换的清单。在属性列表必须以随后的整数(0,1,等等)结束,它是假定该清单已经到达终点时的模式或者替换被设置。详情请参见com.liferay.portlet.journal.util.RegexTransformerListener。 #journal.transformer.regex.pattern.0=beta.sample.com #journal.transformer.regex.replacement.0=production.sample.com #journal.transformer.regex.pattern.1=staging.sample.com #journal.transformer.regex.replacement.1=production.sample.com 设置当服务器启动时是否同步内容搜索。 journal.sync.content.search.on.startup=false 配置电子邮件通知设置。 journal.email.from.name=Joe Bloggs journal.email.from.address=test@liferay.com journal.email.article.approval.denied.enabled=false journal.email.article.approval.denied.subject=com/liferay/portlet/journal/de pendencies/email_article_approval_denied_subject.tmpl journal.email.article.approval.denied.body=com/liferay/portlet/journal/dependencies/ email_article_approval_denied_body.tmpl journal.email.article.approval.granted.enabled=false journal.email.article.approval.granted.subject=com/liferay/portlet/journal/d ependencies/email_article_approval_granted_subject.tmpl journal.email.article.approval.granted.body=com/liferay/portlet/journal/dependencies/ email_article_approval_granted_body.tmpl journal.email.article.approval.requested.enabled=false journal.email.article.approval.requested.subject=com/liferay/portlet/journal /dependencies/email_article_approval_requested_subject.tmpl journal.email.article.approval.requested.body=com/liferay/portlet/journal/de pendencies/email_article_approval_requested_body.tmpl journal.email.article.review.enabled=false journal.email.article.review.subject=com/liferay/portlet/journal/dependencies/ / 235 Liferay使用手册 《使用手册》 email_article_review_subject.tmpl journal.email.article.review.body=com/liferay/portlet/journal/dependencies/e mail_article_review_body.tmpl 指定使用LAR公司系统导入Journal内容时使用的策略。 journal.lar.creation.strategy=com.liferay.portlet.journal.lar.JournalCreationStrategyImpl 指定于提供日志模板的错误信息的模板的路径。 journal.error.template.velocity=com/liferay/portlet/journal/dependencies/error. vm journal.error.template.xsl=com/liferay/portlet/journal/dependencies/error. Xsl 5.16.22、JOURNAL ARTICLES PORTLET 设置为每个网页显示文章数的可用值。 journal.articles.page.delta.values=5,10,25,50,100 5.16.23、JOURNAL CONTENT SEARCH PORTLET 设置是否把未编入的文章从搜索结果中排除。 journal.content.search.show.listed=true 5.16.24、MESSAGE BOARDS PORTLET 配置电子邮件通知设置。 message.boards.email.from.name=Joe Bloggs message.boards.email.from.address=test@liferay.com message.boards.email.html.format=true message.boards.email.message.added.enabled=true message.boards.email.message.added.subject.prefix=com/liferay/portlet/messageboards/ dependencies/email_message_added_subject_prefix.tmpl message.boards.email.message.added.body=com/liferay/portlet/messageboards/de pendencies/email_message_added_body.tmpl message.boards.email.message.added.signature=com/liferay/portlet/message- boards/dependencies/email_message_added_signature.tmpl message.boards.email.message.updated.enabled=true / 235 Liferay使用手册 《使用手册》 message.boards.email.message.updated.subject.prefix=com/liferay/portlet/messageboards/ dependencies/email_message_updated_subject_prefix.tmpl message.boards.email.message.updated.body=com/liferay/portlet/messageboards/ dependencies/email_message_updated_body.tmpl message.boards.email.message.updated.signature=com/liferay/portlet/messageboards/ dependencies/email_message_updated_signature.tmpl message.boards.anonymous.posting.enabled=true 220-235: 将这个属性设置为true以允许匿名提交 输入一个以分钟为单位的时间数值作为这项任务运行的频率。如果一个用户访问限制到期时间设置为晚上12:05,而这项任务在下午2点运行,那在下午两点运行期间这个中断将会发生。 message.boards.expire.ban.job.interval=120 输入以天数为单位的时间数值来自动终止用户访问限制。设为0则禁用自动终止。 message.boards.expire.ban.interval=10 message.boards.expire.ban.interval=0 示例: message.boards.rss.abstract.length=200 输入rss种子抽象长度。从信息板提交开始,这个值限制在RSS种子中的出入信息。默认值是前200个字符数。 MY PLACES PORTLET (IBM 开发的专门用来进行 WebSphere Portal 和 Lotus Quickr 整合的工具) my.places.show.user.public.sites.with.no.layouts=true 设置这个属性为true为用户显示无布局模式的公共站点。 my.places.show.user.private.sites.with.no.layouts=true 设置这个属性为true为用户显示无布局模式的私有站点。 my.places.show.organization.public.sites.with.no.layouts=true 设置这个属性为true为组织显示无布局模式的公共站点。 my.places.show.organization.private.sites.with.no.layouts=true 设置这个属性为true为组织显示无布局模式的私有站点。 my.places.show.community.public.sites.with.no.layouts=true 设置这个属性为true为社区显示无布局模式的公共站点。 / 235 Liferay使用手册 《使用手册》 my.places.show.community.private.sites.with.no.layouts=true 设置这个属性为true为社区显示无布局模式的私有站点。 my.places.max.elements=10 设置元素的最大值,这个值将在My Places导航菜单里显示。例如,如果最大值设为10,那么最多一个个人社区、10个组织、10个社区将被显示。 5.17、PORTLET导航条 navigation.display.style.options=1,2,3,4,5,6 在portlet编辑配置模式下,指定将提供给用户的选项。 navigation.display.style[1]=breadcrumb,relative,0,auto,true navigation.display.style[2]=root-layout,absolute,2,auto,true navigation.display.style[3]=root-layout,absolute,1,auto,true navigation.display.style[4]=none,absolute,1,auto,true navigation.display.style[5]=none,absolute,1,all,true navigation.display.style[6]=none,absolute,0,auto,true 定义每个模式有4个逗号界定隔开的5个字符串,分别代表:头类型、根布局类型、根布局水平、包含的布局和嵌套子类型。 nested.portlets.layout.template.default=2_columns_i 5.17.1、NESTED PORTLETS PORTLET 5.17.2、nested.portlets.layout.template.unsupported nested.portlets.layout.template.unsupported=freeform,1_column 增加一个逗号来分割布局列表模版ids,这个Ids在NESTED PORTLETS PORTLET中不被允许。 5.17.3、PORTLET CSS PORTLET portlet.css.enabled=true 将这个属性置为true以运行在运行时间通过Look and Feel图标来修改portlet Css。禁用它可以提高性能。 / 235 Liferay使用手册 《使用手册》 5.17.4、SHOPPING PORTLET shopping.cart.min.qty.multiple=true 置为true如果购物车数量必是物品最小数量的倍数。 shopping.category.forward.to.cart=false 当从类别页面增加一个项目,设置该属性为true以定向到购物车页面。这个项目必须没有动态域。所有有动态域的项目将定向到项目的具体页面,忽略下面的设置。 shopping.category.show.special.items=false 当浏览一个类别,设置下面属性为true来显示特殊项目。 shopping.item.show.availability=true 当观看一个项目时,设置下面属性为true。 shopping.image.small.max.size=51200 shopping.image.medium.max.size=153600 shopping.image.large.max.size=307200 设置最大文件大小和对于图像的有效文件拓展。最大文件大小值设为0可以暗示无限制文件大小。然而,允许的最大文件大小在属性com.liferay.portal.upload.UploadServletRe-questImpl.max.size中设置。 shopping.image.extensions=.gif,.jpeg,.jpg,.png 一个*文件拓展将允许所有文件拓展。 配置email通知。 shopping.email.from.name=Joe Bloggs shopping.email.from.address=test@liferay.com shopping.email.order.confirmation.enabled=true shopping.email.order.confirmation.subject=com/liferay/portlet/shopping/de- pendencies/email_order_confirmation_subject.tmpl shopping.email.order.confirmation.body=com/liferay/portlet/shopping/depend- encies/email_order_confirmation_body.tmpl shopping.email.order.shipping.enabled=true shopping.email.order.shipping.subject=com/liferay/portlet/shopping/dependen cies/email_order_shipping_subject.tmpl shopping.email.order.shipping.body=com/liferay/portlet/shopping/dependen- cies/email_order_shipping_body.tmpl / 235 Liferay使用手册 《使用手册》 5.17.5、软件目录PORTLET sc.image.max.size=307200 sc.image.thumbnail.max.height=200 sc.image.thumbnail.max.width=160 为拇指设置最大文件大小和最大文件规模。值为0说明文件大小不限。然而,所允许的最大文件大小在属性com.liferay.portal.upload.UploadSer-vletRequestImpl.max.size中设置。 5.17.6、标签编译程序PORTLET tags.compiler.enabled=true 该值置为true来启用从URL编译标签的能力。禁用这个属性可以提升性能。 5.17.7、标签PORTLET 输入一个实现com.liferay.portlet.tags.util.TagsAssetValidator的类名。这个类将被调用来使这个优点生效。 DefaultTagsAssetValidator类仅仅是一个空类,这个类实际上不做任何确认。 MinimalTagsAssetValidator需要所有优点有至少一个标签条目。 tags.asset.validator=com.liferay.portlet.tags.util.DefaultTagsAssetValidator #tags.asset.validator=com.liferay.portlet.tags.util.MinimalTagsAssetValidat- or 例如: tags.properties.default= 为新标签条目输入一列用逗号隔开的默认属性。每个列表的条目应该有以下格式:0:键值:值 tags.vocabulary.default=Default Tag Set 设置默认标签名,设置默认新标签创建的位置。 5.17.8、任务 PORTLET tasks.default.stages=2 指定允许阶段的默认数字。 / 235 Liferay使用手册 《使用手册》 tasks.default.role.names=Community Administrator,Community Owner 指定每个允许阶段的默认角色名字,这些阶段从最低级别排序到最高级别。这些角色必须有APPROVE_PROPOSAL允许。 5.17.9、翻译器 PORTLET translator.default.languages=en_es 设置翻译一个给定文本的默认语言。 5.17.10、WIKI PORTLET wiki.classic.syntax.help.url=http://wiki.liferay.com/index.php/Wiki_Portlet 设定一个有包含更多关于典型的WIKI语法信息的页面的URL。当编辑页时,它将会显示给用户看。 wiki.front.page.name=FrontPage 设置默认的网页名称为维基节点。为默认页的名称必须是有效的维基字。维基遵循一个字有一个大写字母由小写另一个大写字母和字母随后又小写字母系列产品遵循的格式。更多关于wiki命名规范的信息请访问 http://www.usemod.com/cgi-bin/wiki.pl?WhatIsaWiki。 设置默认的节点时,将自动创建第一个Wiki的portlet是在社区中使用的名称。 wiki.initial.node.name=Main wiki.page.titles.regexp=([^/\\[\\]%&?@]+) #wiki.page.titles.regexp=(((\\p{Lu}\\p{Ll}+)_?)+) 设置以下属性来指定满足维基网页的名字需求。默认情况下只有几个字符是被禁止的。取消注释下面的正则表达式只允许CamelCase标题。 设置以下属性来指定将自动从标题中删除wiki页面时,输入的字符。这正则表达式应该删除任何在指定的正则表达式在wiki.page.titles.regexp禁止的字符。 wiki.page.titles.remove.regexp=([/\\[\\]%&?@]+) wiki.formats=creole,html wiki.formats.default=creole 设置列表支持的维基格式和默认维基格式。 / 235 Liferay使用手册 《使用手册》 wiki.formats.engine[classic_wiki]=com.liferay.portlet.wiki.engines.friki.- FrikiEngine wiki.formats.configuration.main[classic_wiki]=wiki.transform wiki.formats.configuration.interwiki[classic_wiki]=intermap.txt wiki.formats.edit.page[classic_wiki]=/html/portlet/wiki/edit/wiki.jsp wiki.formats.help.page[classic_wiki]=/html/portlet/wiki/help/classic_wiki.jsp wiki.formats.help.url[classic_wiki]=http://wiki.liferay.com/index.php/Wiki_Portlet 为维基格式的每个配置设置。 wiki.formats.engine[creole]=com.liferay.portlet.wiki.engines.jspwiki.JSPWiki Engine wiki.formats.configuration.main[creole]=jspwiki.properties wiki.formats.edit.p age[creole]=/html/portlet/wiki/edit/wiki.jsp wiki.formats.help.page[creole]=/html/portlet/wiki/help/creole.jsp wiki.formats.help.url[creole]=http://www.wikicreole.org/wiki/Creole1.0 wiki.formats.engine[html]=com.liferay.portlet.wiki.engines.HtmlEngine wiki.formats.edit.page[html]=/html/portlet/wiki/edit/html.jsp wiki.formats.engine[plain_text]=com.liferay.portlet.wiki.engines.TextEngine wiki.formats.edit.page[plain_text]=/html/portlet/wiki/edit/plain_text.jsp wiki.importers=MediaWiki 设置列表支持的维基导入。 为每个维基导入的属性配置设置。 wiki.importers.page[MediaWiki]=/html/portlet/wiki/import/mediawiki.jsp wiki.importers.class[MediaWiki]=com.liferay.portlet.wiki.importers.me- diawiki.MediaWikiImporter wiki.email.from.name=Joe Bloggs wiki.email.from.address=test@liferay.com wiki.email.page.added.enabled=true wiki.email.page.added.subject.prefix=com/liferay/portlet/wiki/dependencies/e mail_page_added_subject_prefix.tmpl wiki.email.page.added.body=com/liferay/portlet/wiki/dependencies/email_page_ added_body.tmpl wiki.email.page.added.signature=com/liferay/portlet/wiki/dependencies/email_ page_added_signature.tmpl wiki.email.page.updated.enabled=true wiki.email.page.updated.subject.prefix=com/liferay/portlet/wiki/dependen- cies/email_page_updated_subject_prefix.tmpl wiki.email.page.updated.body=com/liferay/portlet/wiki/dependencies/email_pag e_updated_body.tmpl wiki.email.page.updated.signature=com/liferay/portlet/wiki/dependencies/emai l_page_updated_signature.tmpl wiki.rss.abstract.length=200 配置电子邮件通知设置。 / 235 Liferay使用手册 《使用手册》 5.18、 插件管理 对扩大Liferay门户功能的主要方式之一,是由插件使用。插件是一个可安装的portlet,主题,布局模板的总称,钩,和Web模块的Java EE的。war文件。虽然Liferay的捆绑了一个功能的Portlet,主题,布局模板的数量,钩,和网络模块,插件提供扩展Liferay的一种手段,以便能够做几乎任何事情。 5.18.1、Portlets Portlet是小型Web应用程序在一个网页的一部分运行。任何门户的portlet执行的核心是它的,因为门户的所有功能在其居住的portlet。 Liferay的核心是一个portlet容器。容器的工作是管理门户网站的网页,并聚合的portlet是出现在任何特定网页设置。这意味着核心不包含应用程序代码。相反,在功能和您的门户应用程序的功能都必须在其居住的portlet。 Portlet的应用,如servlet的应用,已经成为一个Java标准,各门户服务器厂商已经落实。的JSR - 168标准定义了portlet 1.0规范,和JSR - 286标准定义了portlet 2.0规范。一个Java标准portlet应当部署在任何Portlet容器,支持的标准。 Portlet是放置在一个特定的顺序页面由最终用户和提供服务的门户网站服务器由动态。这意味着,某些“文斯”适用于基于servlet的项目,如在URL或访问控制,HttpServletRequest对象,并不适用于在portlet中的项目,因为门户服务器动态生成这些对象。 门户应用程序来大致分为两种:1)portlet可以写入功能提供少量的,然后汇集到门户服务器到更大的应用程序,或2)所有的应用程序可以写入到居住在只有一个或少数的portlet窗口。这个选择是由这些设计应用程序。开发人员只需要担心会发生什么内部portlet的本身;门户服务器处理建设了一页,它是呈现给用户。 / 235 Liferay使用手册 《使用手册》 现在大多数开发人员喜欢使用某些框架,以开发他们的应用程序,因为这些框架的功能和结构提供了一个项目。例如,Struts的强制执行的Model - View - Controller的设计模式,并提供了许多功能,例如自定义标签和表单验证,使开发人员更容易执行某些标准功能。用Liferay,开发者可以自由使用在Java EE领域的领先框架,包括Struts,Spring,和Java Server Faces。这允许开发人员熟悉这些框架更容易实现的Portlet,也促进了应用程序快速移植到使用这些框架的portlet执行。 您的组织是否作出任何企业规划(ERP)软件,通过Web服务公开的数据的使用?你可以写一个Liferay的portlet的插件,可以使用该数据并显示,作为一个用户仪表板页面的一部分。你订阅了股票的服务?你可以从该拉股票报价服务,并显示在您的页面上,而不是使用Liferay的内置股票的portlet。你有一个需要结合两个或更多的基于servlet的应用程序的功能上一网页?你可以让他们到portlet的插件,并显示在Liferay的你所希望的任何布局。你有现有的Struts,Spring MVC的,或JSF应用程序,您要结合您的门户?这是一个简单的任务迁移到Liferay的这些应用程序,然后他们可以利用的布局,安全优势和管理基础设施,Liferay的规定。 5.18.2、Themes 主题是热部署插件,可以完全改变的外观和感觉的门户。大多数组织有自己的外观标准,穿越所有的网站和网络应用的基础设施。 Liferay的外观和感觉,使一切有可能需要为网站设计者创建一个主题插件,然后再安装,在完成向门户网站转型允许。有关于Liferay的网站上提供的主题插件多,更多的人每天都被添加。这使得更容易为那些谁愿意开发Liferay的主题,你现在可以选择一个主题,最贴近你想要做什么,然后自定义它。这是容易得多比从头开始一个主题。他们对主题的Liferay的开发人员指南发展。 / 235 Liferay使用手册 《使用手册》 5.18.3、Layout Templates 选择布局模板是如何将你的Portlet在页面上排列的方法。它们构成了你的页面的身体,大面积的地方你拖放你的Portlet来创建您的网页。Liferay门户带有几个内置的布局模板,但如果你有特别为您的主页一个复杂的页面布局(),您可能希望创建一个自定义布局模板你自己的。这是包括在Liferay的开发指南。 5.18.4、Hook Plugins Hook plugins是新Liferay的5.2。顾名思义,他们允许“勾”到Liferay的核心功能。这意味着,它们使开发人员重写或替换功能,在系统的核心是。您可以挂钩到马术系统,模型听众,和门户属性。你也可以用自己的覆盖Liferay的核心JSP的。挂钩是非常强大,并已设计来取代使用的东西是更容易使用和扩展热部署环境的一些原因。 5.18.5、Web Plugins web插件是普通的Java EE的网站模块,旨在与Liferay协调工作。Liferay的支持与各企业服务总线(ESB)实现,以及单点登录的实现,工作流引擎等一体化。这是因为网络是由Liferay的使用模块实施的portlet提供的功能。 5.18.6、从Repositories安装插件 Liferay门户有一个控制面板,可处理插件安装:插件安装,这在服务器类是部分。这不仅可以让你看到什么插件是安装在您的门户,而且它使您能够运行这些portlet的支持,并安装新的portlet的搜索索引。 前往DOCK,然后选择控制面板。在服务器类别中,选择安装插件。 / 235 Liferay使用手册 《使用手册》 您现在应该看到屏幕,让你配置和安装的portlet。 插件安装模型的默认外观显示已经安装在系统上的插件,无论是积极的,什么Portal门户的角色可以访问它。 插图68:在系统面板上的插件安装 如果你想看看有什么插件可用,你可以做因此,通过点击安装更多[插件类型]按钮,[Plugin类型] 更改是根据您正在查看的标签。请注意该机器赖以Liferay的运行必须能够访问因特网,以便能够读取的官方和民间的仓库。如果机器没有访问到Internet,您需要从网站下载插件并安装手动。我们将在本章后面讨论如何做到这一点。 从最初的页面上,您可以导航到不同的网页的插件,因为它们都是按字母顺序排列。如果你知道某个插件出现在列表中,您还可以更改每页的项目数量和导航到特定的网页。这是一个Liferay的标准功能,你会看到在大部分Liferay的portlet上看到这点。 在安装更多的[插件类型]按钮被点击之后,会出现一个新的视图。这种看法有多个选项卡,默认情况下,显示Portlet的插件选项卡。请注意,列表中显示的是对的插件,也可在所有的仓库全部清单,服务器是认购。以上这是一个搜索机制,允许您通过它们是否已安装,由标签,或由他们所处的仓库来搜索插件。 / 235 Liferay使用手册 《使用手册》 要安装一个插件,点击其名称来选择插件。例如,如果您想给你的网站提供一个得心应手的天气预报,你可能想安装天气portlet中。portlet提供了一个方便的接口,它显示了一个特定邮政编码的用户可以自定义当前天气。 通过搜索或浏览它的天气,以在列表中找到Weather Portlet。一旦你找到它,点击它的名称。另一个网页将显示更详细的描述portlet的插件。下面的说明是安装按钮。点击此按钮来安装插件。 该插件会自动选择下载并安装您的Liferay的实例。如果您打开Liferay的控制台,当它发生的时候,你可以欣赏它的部署。当它完成时,你应该能够返回到添加应用程序窗口,然后在你的portal中添加新的插件到一个页面。 同样的程序用于安装新Liferay的主题,布局模板,钩,和Web模块。取而代之的是Portlet的插件选项卡,您将使用的插件键入适当的标签,你想安装到查看该类型的插件列表。为主题,方便的缩略图(加上一个更大的版本,当你点击某个特定主题的详细信息)在列表中显示。 / 235 Liferay使用手册 《使用手册》 5.18.7、Installing Plugins Manually 手动安装插件的安装过程几乎是通过插件安装插件容易。有几种情况下,您将需要手动安装插件,而不是从Liferay的库: l 您的服务器是被防火墙限制不能上网。这使得您的Liferay的实例无法连接到插件库。 l 您正在安装的portlet,你要么从供应商购买,单独下载,或发展自己。 l 出于安全原因,您不想在网站管理员评估之前让他们可以从Internet安装插件。 您仍然可以使用控制面板来安装插件,这些插件在在线库是不可用。这是迄今为止安装插件最简单的方法。 如果您的服务器是防火墙,你不会看到在portlet插件选项卡上显示或在任何插件主题插件选项卡。相反,您将需要点击上传文件选项卡。这给你一个上传的。war文件,其中包含一个简单的界面插件到您的Liferay门户。 点击浏览按钮,浏览你的文件系统来查找portlet或你已经下载的主题。页面上的其他字段是可选的:你可以指定你自己的范围内进行部署。如果你离开这个领域的空白,默认情况下定义的插件(或.war文件的名称本身)将被使用。 这是所有信息的插件安装程序的需要,以部署您的Portlet,主题,布局模板,钩,或Web模块。点击安装按钮,您的插件会被上传到服务器和部署。如果它是一个portlet,你应该看到在窗口中添加内容。如果它是一个主题,将可以在外观和感觉在页面定义标签。 如果你不希望使用更新管理器或插件安装程序来部署插件,您也可以部署在操作系统的水平。 Liferay的第一次启动时,它创建一个由热部署的文件夹内的文件夹中创建Liferay的默认主页。此文件夹一般位于一个目录从您的应用程序服务器安装,虽然有时是在其他地方,这取决于你正在运行的应用服务器。为了找出其中的Liferay的主文件夹为您的应用服务器,请参阅您在第1章服务器一节。Liferay是第一次推出后,将创建一个在Liferay的主文件夹结构以容纳各种配置和管理数据。它创建的文件夹之一是所谓的部署。如果您复制到这个文件夹一个portlet或主题插件,将Liferay的部署,并使其可使用就好像你通过安装在控制面板插件安装它。事实上,这正是插件安装程序在幕后做的事。 您可以更改此目录的结构,它是通过修改存储任何你在你的Portal-ext.properties file类似的适当的属性的默认值。请参阅以上关于portal.ext.properties规定的文件以获取更多信息。 有Liferay的热部署一个portlet或主题插件,复制到你的热部署文件夹,默认情况下在[Liferay的首页] /部署是插件。如果你正在看Liferay的控制台,你应该会看到类似以下信息: / 235 Liferay使用手册 《使用手册》 只要你看到使用信息的提供,你的插件安装正确,并会在PORTAL中可用。 5.18.8、Plugin Troubleshooting 有时候由于各种原因导致插件无法安装。这有不同的原因在里面,这些原因基于几个因素,包括: l Liferay配置 l Liferay赖以运行的容器 l 在多个地方更改配置选项 l Liferay是如何被启动 / 235 Liferay使用手册 《使用手册》 你会经常可以通过寻找在Liferay的服务器控制台来辨别插件部署问题。如果您看到这个插件得到了听众认可的热部署,你会看到一个插件复制成功的消息。如果此消息是由一个没有遵循使用信息可查询,你的插件部署配置有一个问题,并很可能在上述各项因素之一。 我们将看看这些原因。 LIFERAY CONFIGURATION ISSUES 提示:这适用于Liferay的版本之前的版本4.3.5。上述4.3.5 Liferay的版本能够自动检测服务器上运行的类型是,这使事情变得更加简单。如果您运行的是较新版本liferay,你可以跳过这一节。 默认情况下Liferay以包或作为.war文件形式出现。虽然已经尝试了一切努力使的.war文件作为通用的可能,有时默认设置是为容器以运行Liferay是不适当的。这些问题大部分在Liferay4.3.5已得到解决,新版本添加额外代码让Liferay决定哪些是应用服务器上运行,并调整部署插件的方式作为结果。 在Liferay的4.3.5版本之前,有一个属性叫做auto.deploy.dest.dir,它定义在插件后,热部署公用事业他们已经完成准备部署文件夹。此文件夹映射到一个文件夹,容器作为自动部署或部署文件夹中定义一个热点。默认情况下,此属性设置为.. / webapps的。此默认值工程为Tomcat容器(如果Tomcat已经从它的bin文件夹中启动),但不会对其他容器的工作,确定了它们的热部署文件夹不同的地方。 例如,Glassfish的定义为一个名为autodeploy领域内的文件夹中您的服务器运行文件夹中的热部署文件夹。默认情况下,这是/ domains/domain1/autodeploy在。 JBoss的定义为一个特定的服务器内配置您使用的根文件夹中的热部署文件夹。默认情况下,这是/ default / deploy目录中 /服务器。定义内的WebLogic域目录此文件夹。默认情况下,这是在 / user_projects / / <域名> / autodeploy域。 你首先需要确定的热部署文件夹的货柜您正在运行。您对本产品的咨询文件。一旦你有这样的价值,有两个地方,你可以设置它:portlet-ext.properties文件和安装的插件的portlet。 auto.deploy.dest.dir=/java/glassfish/domains/domain1/autodeploy 为了改变这portal-ext.properties设置文件,浏览到哪里Liferay的是在你的应用服务器上部署。此文件夹内应该是WEB-INF/classes中的文件夹。在这里你会发现门户ext.properties文件。在文本编辑器打开这个文件,并查找财产auto.deploy.dest.dir。如果它没有出现在该文件中,可以添加它。最安全的方法来设置这个属性,我们将在后面看到,是确定财产使用从您的文件系统根目录的绝对路径到应用程序服务器的热部署文件夹。例如,如果您使用的是Glassfish的,和你将服务器安装在/java/GlassFish的,你的auto.deploy.dest.dir财产安装看起来像下面的服务器: auto.deploy.dest.dir=C:/java/glassfish/domains/domain1/autodeploy 记住,如果你在Windows系统上,使用正斜杠,而不是背斜线,像这样: / 235 Liferay使用手册 《使用手册》 保存该文件,然后重新启动容器。现在插件应该安装正确。 如果您愿意改变这种通过插件安装portlet的设置(因为你不想重新启动您的容器),您可以通过在配置选项卡上点击的。在这个网页是你的设置数量可以改变,包括热部署,在Liferay的应该寻找插件库的默认文件夹,等等。 设置以显着的变化是该领域的目标目录。更改为您的完整路径容器的自动部署文件夹从您的文件系统的根。当你完成后,点击保存按钮在表格的底部。该设置将现在您不必重新启动容器的效果。 请注意,在覆盖在属性设置portlet的设置文件。 如果您有版本4.3.5在Liferay的热部署和更大的麻烦,有可能是您的应用程序服务器的管理员已经改变了你的应用服务器上自动部署默认文件夹。在这种情况下,您要设置auto.deploy.dest.dir到与你会与旧版本的Liferay的定制文件夹的位置。在Liferay的4.3.5及更高版本,该设置仍然存在,但空白。添加属性到您的portal-ext.properties文件并将其值设置为完全合格的路径文件夹自动部署应用程序中的服务器配置。 5.4.1.1、运行的是哪个Liferay的容器 还有如Oracle应用服务器®和Web-Sphere®,某些容器,其中没有一个热部署功能。不幸的是,这些容器不使用Liferay的热部署系统。但是,这并不意味着你不能安装在这些容器的插件。您可以部署插件手动使用应用服务器的部署工具。一旦手动得到部署到容器, Liferay是能够拿起portlet的插件,特别是如果你将它添加到同一个企业应用程序项目。 当Liferay的热部署portlet和主题.war文件,它有时在部署之前对这些文件进行修改。为了成功地部署插件应用服务器厂商使用的工具,你将要经历这个过程,然后再尝试部署它们。 在插件安装程序的控制面板,单击配置选项卡的部分。窗体上的第二大领域是标记目标目录。放置的路径,您希望插件.war文件复制后,他们被Liferay的插件安装程序处理。你会使用你的插件作为一个分段目录之前,使用您的服务器的部署工具来手动安装。当你完成后,点击保存。 现在,您可以部署使用插件安装插件的portlet或下降。部署到您的汽车目录战争文件。 Liferay的会拿起文件,修改它们,然后复制到目标目录中已配置的结果。然后,您可以从这里部署他们到应用程序服务器。 EXAMPLE: WEBSPHERE® APPLICATION SERVER auto.deploy.dest.dir=${liferay.home}/websphere-deploy 1.如果你没有一个在Liferay的安装文件已经创建好的portal-ext.properties文件。添加以下指令: 2. 创建一个命名为websphere-deploy的文件夹到你的$LIFERAY_HOME文件夹。这个文件夹是Lucene索引, Jackrabbit配置和部署的文件夹。 3. 确认在你想安装的插件里面的web.xml文件有以下的环境参数在里面。 / 235 Liferay使用手册 《使用手册》 Liferay的版本5.2.2及以上将自动把这样的web.xml中注入在WebSphere容器。 4. 在WebSphere部署发生在两个步骤。您将首先使用Liferay的工具来“预部署”的文件,然后使用WebSphere的工具来进行实际的部署。这是因为Liferay使得部署时修改的权利之前,他们实际上是部署到应用服务器的插件。至于其他应用服务器,这通常可以在一个步骤内完成,因为Liferay可以进行修改,然后复制以.war为后缀的结果文件到自动部署的文件夹,从而让其实际部署。因为WebSphere没有一个自动部署功能,我们需要分开这两个步骤。 5. 使用Liferay's Plugin Installer或复制到$它LIFERAY_HOME /deploy来部署你的.war文件。Liferay将其修改,因为我们在第一步改变了auto.deploy.dest.dir,它会复制以.war为后缀格式的结果文件到$ LIFERAY_HOME / WebSphere-deploy。你会在日志中看到一个复制成功的消息。 6. 使用WebSphere的工具来部署war文件。让war文件的上下文根等于文件名称(即,/my-first-portlet-portlet)。一旦部署war文件,将其保存到主配置。 7. 返回到WebSphere Admin管理台的Applications -> Enterprise Applications屏幕。你会看到你的portlet被部署,但尚未启动。启动它。 8. Liferay的将立即承认portlet已经部署和注册它了。portlet将在WebSphere随后重新启动后自动启动并注册。 经验丰富的WebSphere系统管理员通过可以编写一个脚本从而进一步自动化这个,这个脚本可以查看WebSphere-deploy目录,并使用wsadmin命令来自动部署插件。 5.4.1.1、改变多个位置的配置选项 有时,特别是在开发过程中如果有几个有管理权限访问的人在同一时间访问服务器,自动部署文件夹的位置都可以在portal-ext.properties文件和控制面板上得到定制。如果发生这种情况,控制面板上的值优先于属性文件的值。如果你进入控制面板,将值更改为正确的设置,插件的部署将再次展开工作。 5.4.1.1、提示:这适用于Liferay之前的版本4.3.5。上述4.3.5 Liferay的版本能够自动检测服务器上运行的类型,这属性不再通过从服务器安装位置的相对路径检测。 LIFERAY怎样开始启动 在Liferay4.3.5之前的版本,在热部署目标目录的默认值是一个相对路径(如.. / webapps中或.. /服务器/ default / deploy目录)。此路径是相对于从该应用服务器通常推出的文件夹。例如,Tomcat已经快照目录结构。 / 235 Liferay使用手册 《使用手册》 启动和关闭脚本在bin文件夹中。因此,要启动Tomcat,你通常会进入bin文件夹来运行启动脚本,启动脚本启动在Tomcat中运行的Liferay。 Tomcat的热部署文件夹是webapps文件夹。此文件夹在bin文件夹的同一水平上。如果你是在命令提示符里面的bin文件夹(其中您开始Tomcat的),去找一个在热部署文件夹中你会使用两个参考点去备份一个文件夹,然后路径分隔符( /),然后该文件夹(的webapps)的名称。因此,在默认配置,热部署的目标目录是相对于从中启动应用服务器启动的文件夹。 236~248: 如果你正从另一个脚本启动你的应用程序服务器,也许作为一个定期的工作,你的脚本没有进入应用程序服务器的启动脚本所在的文件夹(在这种情况下,/bin)。默认设置相对路径将无法工作。相反,路径将于你的启动脚本的路径相关。这将导致Liferay创建,以Tomcat为例子,一个webapps文件夹,这个文件夹就是启动脚本启动的文件夹。由于这不是正确的应用程序服务器的热部署文件夹,您将在服务器控制台上看到copied successfully消息,但你永远不会看到registered successfully的消息。 为了解决这个问题,你可以做两件事情:1)建议更改相对路径为绝对路径;2)在启动之前,改变你启动Liferay的方式,确保你进入的是应用程序服务器的启动脚本所在的文件夹。任意一个都应该修正你的热部署问题,将导致portlet和主题插件成功部署。 5.18.9、创建你自己的插件库 当您的企业建立其内部使用的portlet库是,你可以创建自己的插件库,使其易于安装和升级的portlet。这将允许不同的部门可以运行Liferay的不同实例来共享和根据需要安装portlet。如果你是一个软件开发厂商,你可能想建立一个自己的产品插件库。 Liferay让您轻易地创建自己的插件库,并提供给他人。 您可以以两种方式创建插件库: 3 使用控制台中的软件目录,使用图形界面和HTTP服务器创建库。 4 使用Liferay的插件库的DTD创建一个XML文件(http://www . liferay .com/dtd/ liferay - plugin -repository_5_2_0.dtd)和HTTP服务器。 这两种方法各有其好处。第一种方法允许用户上传他们的插件到他们能访问的HTTP服务器上。然后他们可以通过控制台的图形用户界面再库中添加注册插件的链接。 然后Liferay将生成的XML连接到Liferay的另一个实例正在运行的控制台的库上。此XML文件可以放在一个HTTP服务器,并且它的网址可以被添加到插件安装程序中,使该库提供可用的portlet给运行Liferay的服务器。 第二种方法不需要一个Liferay实例的运行。你可以上传插件到您所选择的HTTP服务器,然后创建一个XML文件手动调用liferay-plugin-repository.xml。如果你让这个文件在HTTP服务器有效(它可以在插件存储的服务器上,或完全不同的另一个服务器),你可以在链接库到运行Liferay实例的控制台上的一个插件安装程序。 / 235 Liferay使用手册 《使用手册》 我们会首先考虑使用控制台中的软件目录创建一个插件库。 5.4.1.1、软件目录 您将使用的软件目录,如果你有多个用户提交portlet到库中,如果你不想自己创建liferay-plugin-repository.xml文件。 门户中的每个社区能有一个软件分类的实例。控制台将跟踪你处于哪个社区或组织,并将你与那个社区或组织的软件分类对齐。这意味着不同的社区/组织可以有不同的软库,因此您可以在同一个Liferay实例的承载几个软件库,如果你想,他们只需要在不同的社区或组织。 Illustration 72: Software Catalog with no products 选择拥有插件库的社区,去控制面板。您将看到屏幕的一个消息,说“Content for [Organization/Community],”,其中[Organization/Community]是您所在的的组织或社区当您从Dock中选择控制面板。如果你要管理一个不同的社会或组织的软件目录,你可以从选择框中选择。 该软件目录有几个标签。第一个标签是产品。当充满软件是,Portlet的默认视图,其展示了什么插件能被下载和安装。这可以在关于Liferay主页的版本看到。 我们将以社区为例子,以更好地说明如何使用该软件产品portlet。假设你作为门户管理员,创建了一个Old Computers的社区。这个社区将是一个网站,用户合作进行设置和使用拥有过时的硬件和操作系统的旧电脑。参与网站的用户在最终将获得参加升级到一个更具特权地位并获得自己的博客网页。要实现这一点,你必须创建My Summary portlet显示用户的姓名,照片,以及用户文件的中描述。由于此portlet是通用的,它将对所有使用Liferay的人有用,你已决定把它放在你自己的软件产品目录。 / 235 Liferay使用手册 《使用手册》 Illustration 73: Populated Software Catalog from liferay.com 加入一个插件到你的软件库,第一步是将为您的产品添加license。许可证向用户传达的许他们下载和使用软件条款。点击许可证标签,然后点击添加按钮。然后,您会看到一个表格,让你输入您的许可证的标题:一个指向真实的许可协议文件的URL,和指示许可证是否是开源的,有效的,或推荐的。 当您完成填写表格,点击保存按钮。您的许可证将被保存。一旦你在系统中至少有一个许可证,你可以开始添加到您的软件到软件产品目录。按一下产品标签,然后按一下按钮添加产品。 下一步将是建立在软件目录中的产品记录。这将注册目录中的软件产品,并允许您开始添加为您的软件版本,使用户从他们的Liferay实例下载或安装。你首先需要在一个web服务器上存放包含你的软件的war文件没有身份验证的用户可以访问并安装你的软件。在上面的例子,旧电脑网站是在互联网上,所以你将放置在Web服务器的文件可以被任何在互联网上的人访问。如果你正在创建一个内部局域网的软件目录,你会存放文件在任何人在组织防火墙内都能访问的Web服务器上。 要创建在软件产品目录portlet的产品记录,点击产品标签,然后单击添加产品按钮。填写表格有关您的产品信息。 / 235 Liferay使用手册 《使用手册》 Illustration 74: Adding a product to the Software Catalog (partial view) 名称:您的软件产品的名称。 类型:选择是否是一个portlet,主题,布局模板,hook,或网页插件。 许可证:选择你发布这个软件的许可证。 作者:输入该软件的作者的名字。 网页网址:如果该软件有一个主页,输入其网址在这里。 标签:输入任何你想加入这个软件标签。 简短描述:输入一个简短说明。这将显示在您的软件目录表的摘要。 详细描述:输入一个较长的描述。这将显示在该软件产品详情页面。 权限:点击配置,为这个软件产品设置权限。 组ID:输入组ID。组ID是一个名字空间,通常标识开发软件的公司或组织。对于我们的例子中,我们将使用旧电脑。 Artifact ID:输入一个Artifact ID。Artifact ID是一个你的产品的独有的名称空间。对于我们的例子中,我们将用my-summary-portlet。 / 235 Liferay使用手册 《使用手册》 截图:点击添加按钮添加截图为用户查看您的产品的屏幕快照。 当您完成填写表格,点击保存按钮。你将被带回产品摘要页面,你会看到你的产品已被添加到库中。 Illustration 75: Product has been added to the Software Catalog 请注意,在版本那一列中,显示的是N/A。这是因为有您的产品尚未发布的任何版本。为了使您的产品能被下载,你需要创建一个你的产品版本,并将它指向该文件较早上传到的HTTP服务器。 在你这样做之前,你需要添加框架版本到您的软件目录。框架版本表明你的插件是为哪个版本的Liferay设计并运行。您不能添加产品版本,如果没有连接到设计的框架版本。 为什么会这样重要?因为Liferay的具有越来越多的功能,你可能想要发挥你的产品的未来版本的功能优势,同时仍保留旧版本为那些正在使用旧版本Liferay的用户。我们正在使用的完美的阐述了这一点。 Liferay的有它自己的My Summary portlet,而这正是我们在这里所描述的。但是,对于版本5.1,这个portlet由World of Liferay (WOL) portlet所取代,使用过了许多被添加到Liferay的社会网络功能。因此,不是仅仅显示了您的信息摘要,WOL portlet提供了诸如状态更新。一个面板每个用户可以在他的文件中被别人留言,以及成为好友的功能——保证他们能访问他们的档案。有关版本5.2,WOL portlet本身已经打破,使社会组成部分,可从软件安装管理组件分离。 所有的这些都不会在Liferay的旧版本工作,因为核心引擎使开发人员能够创建貌似不存在功能。因此,在这种情况下,你想保留旧的My Summary portlet以供没升级的用户使用,让WOL portlet提供给那些使用5.1.x的用户,使新社区portlet提供给那些使用最新版本对Liferay的用户。这是框架版本为你做的。如果你连接到4.4.2版本的Liferay的软件库,你将看到My Summary portlet。如果你连接一个5.1版本Liferay的软件库,你将看到WOL portlet。如果您连接到5.2版本Liferay的软件库,你会看到social的portlet。 因此单击框架版本标签,然后点击添加框架版本按钮。 给框架名称,网址,并选中Active复选框。对于我们的例子中,我们已经进入了5.2.2的名称,因为我们的portlet应该在该版本或更高版本工作,http://www . liferay .com为URL,点击保存。 / 235 Liferay使用手册 《使用手册》 现在回到产品标签,并点击你的产品。你会发现,一条消息显示,说明该产品没有任何发布的版本。按一下按钮添加产品版本。 Illustration 76: Adding a product version to the Software Catalog 版本名称:输入您的产品版本。 更改日志:输入一些注释,说明当前版本与以往任何版本的改变。 支持的框架版本:选择准备的软件产品的框架版本。在输入版本号结束是添加“+”,如果你想指定一个可以添加未来版本的版本。 下载网页网址:如果你的产品有一个描述性的网页,输入其网址在这里。 直接下载网址(推荐):在这里输入您的软件产品的直接下载链接。Plugin Installer portlet将跟随这个链接,以下载您的软件产品。 包括仓库中的Artifact:为了让其他人使用Plugin Installer portlet连接到您的仓库和下载你的插件,选择是。 当您填写完毕的表格,点击保存按钮。您的产品版本将被保存,你的产品现在在软件库可用。 GENERATING THE SOFTWARE CATALOG 软件产品目录的工作原理是生成一个插件安装程序读取的XML文件。使用此XML文档中的数据,插件安装程序知道从哪里可以下载,为什么版本的Liferay设计的的插件,以及有关已进入软件目录的插件的其他数据。 为了使您的软件目录来生成这个XML数据,你将需要访问特定网址。如果您已经为您的社区创建友好的URL(例如,默认的社会,即所谓的客人,有一个/已经为它配置客户友好的URL:/guest),您可以使用友好的URL。如果没有,你首先需要知道你软件目录portlet所在的社区的组ID。您可以通过访问管理页面界面和查看任何网页的网址来达到目的。该URL将看起来像这样:http://localhost:8080/web/10148/1。 / 235 Liferay使用手册 《使用手册》 显然,这容易得多,如果您使用的是友好的网址,我们强烈建议你这么做。 下一步,进入您的浏览器并转到以下网址: http://:/software_catalog? 例如,如果你是在同一台计算机运行您的Liferay的实例,该实例是运行在端口8080,和你从数据库的组ID是10148,您可以使用下面的网址: http://localhost:8080/software_catalog?10148 如果你还设立了一个友好的URL称为旧电脑的组织,或社区,你可以使用下面的网址: http://localhost:8080/software_catalog?old-computers 如果你已经配置好一切,一个XML文件应返回: My Summary old-computers/my-summary-portlet/1.0/war Thu, 23 Apr 2009 20:40:16 +0000 portlet social profile My Summary My Summary Initial Version http://www.liferay.com / portle t s/my-summary - portle t - 5.2.2.war Rich Sezov MIT License 这份文件保存为liferay-plugin-package.xml,并把在您上传portlet .war的HTTP服务器上传此文件。war文件。然后,您可以将网址给本站上持有此文件目录,有Liferay实例的任何人都将他们的Plugin Installer portlets指向它 / 235 Liferay使用手册 《使用手册》 BENEFITS OF THE SOFTWARE CATALOG 正如你可以看到,软件目录,让您能够更容易的创建您的软件库。Liferay的用户可以配置自己的插件安装程序到你的仓库,一个单击,软件的适当版本将自动由提供给他们。这是迄今为止最简单的方法使你能追踪你的软件,让您的用户获得您的软件。 另一个软件目录的好处是,通过使用它,你提供给用户的手动下载软件的标准接口。对于那些喜欢手动下载插件,您的软件目录给他们一个接口,通过浏览或搜索找到软件,预览屏幕截图,并下载您的软件,你没必要自己建立那些网页。只需在portlet的配置软件,这一切是已经为你做好了。 5.4.1.1、手工创建软件目录 如果您不希望使用控制面板来创建您的软件目录,你可以手动创建它,通过手动输入XML文件,这通常由控制面板软件目录部分生成。请注意,如果你这样做,你将无法使用能让用户手动下载软件图形用户界面:你必须自己建立这些。请记住,在防火墙后面的Liferay的许多实例无法访问因特网。正因为如此,如果你正把你的软件提供给互联网用户,其中一些将要手动下载。在这种情况下,Software Catalog portlet是提供下载软件的用户界面最简单的方式。 如果您仍想使用文本编辑器来创建您的软件目录,你可以。要手动创建一个软件目录,获取Liferay的源代码中XML文件的DTD。你会在Liferay的源码中的definitions文件夹发现这个DTD,文件名为liferay-plugin-package_5_2_0.dtd。使用一个有效地XML编辑器来处理这个DTD(一个很好的,自由的选择是Jedit,包含所有的XML插件)以手动创建您的软件目录。 5.4.1.1、连接到一个软件目录 如果有一个插件,你想把你的Liferay的实例指向他,所有你需要的是目录的网址。一旦你有了网址,请在您的控制面板,单击插件安装程序配置标签。你会看到有两个领域,你可以输入插件库的网址:Trusted Plugin Repositories和Untrusted Plugin Repositories。目前,两者之间的唯一区别是给管理员信任和不受信任的视觉线索。 输入的您想连接的库的URL,,然后点击保存。portlet将连接到库,并这个仓库的项目将在列表中显示。 5.19、Liferay 服务导向构架 Liferay包括一个实用工具,即所谓的Service Builder,是用于生成访问portal数据库资源,的低级别的代码。此实用工具是进一步在Liferay Developer's Guide解释,但这里所说的是因为它的功能,可以生成Java代码, Web服务和JavaScript的接口。这意味着,调用存储和检索portal对象的方法都是一样的,都是在同一个步骤产生的。 / 235 Liferay使用手册 《使用手册》 Illustration 77: Liferay SOA's first layer of security. 由于实际用于检索数据的方法,都不关心如何获得这些方法(例如,本地的或者通过web服务),Liferay提供了访问portal数据的一致接口,这点其他的产品难以与之相比。对各种服务的实际接口将被包括在Liferay的开发人员指南,但在它们使用之前,有步骤需要采取的以使用户能够远程访问这些服务。 在默认的portal.properties文件,有一节为主要的Servlet。本节规定了由Liferay的远程服务提供的所有安全设置。复制本节并粘贴到您的自定义portalext.properties文件。您可以配置Axis Servlet,Liferay Tunnel Servlet,Spring Remoting Servlet,JSON Tunnel Servlet 和WebDAV的Servlet的安全设置。 默认情况下,用户从同一台机器上连接到运行的Liferay,只要允许就能能远程访问Liferay许可系统中那些服务。当然,你真的没有“远程”,除非你是从一个不同的机器上访问服务。 Liferay在其服务涉及到远程访问有两个安全层。如果访问这两个层次的权利,一个远程异常将被抛出和这些服务将不被允许。 第一层的安全,用户需要得到通过,以从服务层调用的是Servlet的安全方法。portal-ext.properties文件中的主要的Servlet用于启用或禁止访问Liferay的远程服务。在属性文件的该部分,有Liferay的远程服务的每个属性。 您可以根据需要单独设置与每个服务的安全设置。例如,您可能有一个批处理作业运行在网络中的另一台计算机上。这项工作使用Liferay的网络服务,查找网络上一个特定的共享文件夹,并定期上传文档到你的社区的文档库的portlet。为了使这项工作通过安全的第一层,你需要修改portal-ext.properties文件,将机器的IP地址放到批处理作业运行的特殊服务清单上。例如,如果该批处理作业使用轴网络服务上传的文件,你将输入的机器的IP地址到运行的批处理作业的属性axis.servlet.hosts.allowed。一个典型的入口可能看上去像这样: axis.servlet.hosts.allowed=192.168.100.100, 127.0.0.1, SERVER_IP 如果运行的批处理作业的机器具有IP地址192.168.100.100,此配置将让这台机器连接到Liferay的网络服务,并通过用户凭证来上传文件。 / 235 Liferay使用手册 《使用手册》 Illustration 78: Liferay SOA's second layer of security. 第二层的安全是Liferay的安全模型,它为门户的每个对象所使用。远程访问服务的用户ID,必须对访问的对象有正确的操作权限。否则,一个远程异常将被抛出。门户管理员需要利用Liferay的正常指授权给用户ID,访问这些资源的用户能够操作。 例如,假设一个名为Documents的文档库文件夹,已在一个社区建立。一个名为Document Uploaders的角色已被建立,拥有往这个文件夹添加文档的权利。您的批处理作业将要访问Liferay的网络服务,以便上传到这个文件夹的文件。为此,你会要调用Web服务使用一个属于这个小组成员的用户ID(或具有个人权利的网往这个文件夹添加文件,)。否则,你将被阻止使用网络服务。 来调用Web服务使用的凭据,你可以使用以下URL语法: http://" + userIdAsString + ":" + password + "@:/tunnelweb/secure/axis/" + serviceName 用户ID是从Liferay的数据库得到的。这可能是作为用户登录,并从Dock点击My Account而获得的。在portlet的左上角的就是用户的ID。 例如,要使用一个ID为2,密码为test的用户获得组织的数据,您可以使用下面的网址: http://2:test@localhost:8080/tunnel-web/secure/axis/Portal_OrganizationService 提示:在Liferay的(4.2.x版及以下)旧版本,这个密码必须从Liferay的数据库加密的版本中获取。 重要的是要注意在这里如何密码政策(包括在第3章)与此项功能相结合使用。如果您对用户执行密码政策(要求他们定期更改自己的密码等),在批处理作业中任何访问Liferay网页服务的的web服务的管理ID都有密码的期限。 为了防止这种情况发生,你可以添加一个新的密码政策,不强制密码过期并添加您的管理用户ID。然后你可以执行任意多次批处理作业,管理ID的密码将永不过期。 / 235 Liferay使用手册 《使用手册》 总之,远程访问Liferay需要成功通过的两个安全检查: 1. IP地址必须在服务器的portal-ext.properties文件中与配置。 2. 正在使用的用户ID必须有它正试图访问资源的权限。 5.20、访问 Liferay的 WSDL 在正确配置安全设置后,你在获取访问远程网路服务的第一步是访问的WSDL。如果您在正在运行Liferay的同一台机器上的浏览器,您可以通过以下网址访问: http://localhost:/tunnel-web/axis 例如,如果你在Tomcat的端口8080上运行,你可以指定这个网址: http://localhost:8080/tunnel-web/axis 如果您在与Liferay的服务器不同的机器,您将需要传递的网址给您的用户证书来访问WSDL: http://:@:/tunnel-web/axis 在任何情况下,一旦你成功地浏览这个网址,你将看到Web服务的清单。 每个服务的WSDL可通过服务名称的旁边的WSDL链接。有许多服务;每一个都可以像Liferay的API索取。 一旦点击WSDL一个链接时,Web服务定义语言文件将被显示。这个文件可以用来产生支持任何语言的客户端代码。您可以将文档保存到本地计算机,然后生成客户端代码,或使用工具来触发Liferay使用一个以上的网址动态生成的文件。 有关利用Liferay的远程服务开发应用程序的更进一步的信息,请参阅Liferay的开发指南。 6. 企业配置 Liferay Portal是一种健壮的,为企业准备的入口解决方案。就Liferay Portal本身来说,它是完全为支持关键性任务,企业在已配置的环境下的应用所准备的,这种环境的配置是以多倍冗余和正常运行时间的24/7倍作为基础的。然而,这个产品就如同其它同类的产品一样,在从产品盒拆分出来的时候就没有这样的进行配置,因此我们要采取一些步骤来对这个产品进行相关的配置,以便达到我们的要求。 这一章将会对这些相关的主题进行详尽的阐述。因为Liferay在不同的Java EE应用服务器上运行,因此要在这些应用服务器之间包括所有的异样性是不可行的。基于上述原因,我们将仅仅阐述Liferay的配置。作为一个范例,我们将会阐述怎样配置Liferay,使得Liferay可以在聚类的环境中得以运行,但是我们将不会阐述怎样在应用服务器上创建聚类。请查阅特殊应用服务器的文档,以便找到让你能够配置应用服务器,这种应用服务器是作为一种聚类而运行的一种选择。 然而,我们将会阐述Liferay的配置,这个配置是为一些高级的脚本准备的,这些配置如下: l 聚类和分布式缓存技术 / 235 Liferay使用手册 《使用手册》 l Liferay的工作流程 l 部署定制的Liferay版本 l 性能测试和调节 在这个讨论当中,我们将会提到一些其它的开源产品,Liferay依赖于大量的的这种开源产品的功能性。这些产品都有它们自己的文档说明书,这些说明书应该以一种更为全面的介绍产品的功能视角而被查阅。举个例子,Liferay使用了Ehcache这个名词来说明缓存机制(caching mechanism)。我们将会阐述怎样配置Ehcache,使得Ehcache能够在Liferay中提供各种各样的缓存功能,但是这也要求你去查阅相关的产品文档说明书,这个文档说明书将会提供和产品有关的补充材料。 有时候Liferay支持具有同样功能的多样性的产品。举例说明,Enterprise Service Buses的多线程实施是在工作流程中使用的,并且Liferay支持这些多线程实施当中的若干。我们不会推荐一个又一个的产品,而是由你自己做出决定,选择一款最适合你的项目的产品。 综上所述,就让我们开始为企业版的Liferay进行配置吧。 / 235 Liferay使用手册 《使用手册》 6.1、Liferay 聚类 一旦你已经将Liferay安装在应用服务器上的多个节点上后,那么你将要做出一些优化。最低要求是,Liferay应该以以下的方法进行配置,以便构造成一个聚类的环境: l 所有的节点都应该指向同一个Liferay数据库; l Jackrabbit, the JSR-170目录存储器,应该做到: n 它是所有的节点都能够使用的共享文件系统(尽管这不是真正地被推荐),或者 n 它应该存在于一个可以被所有节点所共享的数据库中 l 文件库应该有选择地进行配置,使之使用文件系统异常分支,并且为了能够有更好的性能,文件可以被存放在SAN上。 l 相似地,Lucene---全局文本索引器,应该做到: n 它是所有的节点都能够使用的共享文件系统(尽管这不是真正地被推荐),或者 n 它应该存在于一个可以被所有节点所共享的数据库中,或者 n 它存在于所有节点的单独的文件系统当中,或者 n 它应该是丧失能力的,并且是一个单独的,已经配置的,具有插件性质的企业搜索服务器(推荐) l 如果你还没有配置你的应用服务器,使之使用农场来进行部署,那么最新的一种部署文件夹应该是作为所有的节点的一个独立的文件夹,并且所有插件应该在所有的节点上,单独地进行部署。以上操作可以通过一个脚本来完成。 配置的改变的大多数可以靠添加或改变portal-ext.properties这个文件夹里面的文件的特性来完成。需要记住的是:这个文件替换掉了portal.properties这个文件中的系统设定的值。这个文件的最原始的版本可以在Liferay的源代码中找到,或者你可以到Liferay安装文件中的portal-impl.jar这个文件中进行提取。最好的做法便是:复制一份你打算从portal.properties文件中,对portal-ext.properties文件进行修改的相关的部分文件,然后更改其中的相关量的值。 6.1.1、所有的节点都应该指向同样的Liferay数据库 这是一个相当好的自我解释。每一个节点应该配置一个数据源,这个数据源指向所有节点将会共享的Liferay数据库(或者一个数据库组)。这就确保了所有的节点将会在相同的基本数据集里面进行操作。当然,这也就意味着:Liferay不能够(并且不应该)使用嵌入式的HSQL数据库,这种数据库是用光纤束进行安装的。如果数据库服务器是一个从运行Liferay的服务器当中独立出来的物理箱,那是最好不过。 / 235 Liferay使用手册 《使用手册》 6.1.2、文档库的配置 现在的Liferay 5.2.X默认使用文件系统来存储文档。对于拥有大量的文档的图书馆来说,这已经被证明了是最高效的配置,这也是为什么这么进行配置的原因。你能够为你的聚类配置使用文件系统,并且Liferay的文件库将会在文档和文件夹被修改之前,通过采取对文档的时时关注和对文件进行上锁的方法,防止用户互相“冲突”。如果你拥有一个存储域网(SAN),你就可以配置Liferay,使得它可以存储文档,并且使得它可以利用多余的冗余。为了能够配置存储你的文档的位置,可以使用下列命令: 如果你希望在一个数据库里聚集你的文件库,你仍然可以使用Jackrabbit JSR-170目录存储器。如果你想要有一个符合你的文档的JSR-170存储器,你也可以使用Jackrabbit存储器。 6.1.3、Jackrabbit共享 Liferay使用来自Apache的一个项目的Jackrabbit作为它的符合的文档的JSR-170存储器。通过系统设定的值的设置,Jackrabbit被配置为:把文档存储在本地文件系统,Liferay也被安装在此本地文件系统,Jackrabbit被放在$HOME/liferay/jackrabbit这个文件夹里面。在上述文件夹里面存放着Jackrabbit的配置文件,我们称之为repository.xml。 为了简单地把系统设定的存储器位置移到共享文件夹,你不必编辑Jackrabbit的配置文件。你要做的是:找到标记有JCR的portal.properties的章节,并且复制黏贴上述章节到portal-ext.properties这个文件。通过系统设定,其中的一个属性是如下: 改变这个属性可以指向所有节点都可以看到的共享文件夹。一个新的Jackrabbit的配置文件将会在那个位置上生成。 需要注意到的是:因为文件锁定的问题,这不是共享Jackrabbit资源的最好方式。如果你让两个人同时开始上传资料,使用这种方法的话,那么你将能够碰到数据碰撞的情形,也正由于这种情况的存在,对于一个生产系统,我们不推荐这样做。相反的是,为了能够更好的保护数据,你应该重定向Jackrabbit到你选择的数据库。为了完成以上目的,你可以使用Liferay数据库或者其它数据库。这也就要求你对Jackrabbit的配置文件进行编辑。 系统设定的Jackrabbit的配置文件中,有一部分用来把Jackrabbit的配置导入数据库的章节,要进行注释。这么做是为了使得配置的可行性变得非常容易。为了把Jackrabbit的配置导入数据库中,通常仅仅是和文件系统相关的被注释的章节和数据库相关的被注释的章节。以上都是通过系统的设定,对MYSQL数据库进行配置的。如果你正在使用其它数据库,你将有可能需要修改其配置,因此,这对于一些特殊的数据库来说,对配置文件做出一些改变是必需的。举例说明,系统设定的配置是使用Jackrabbit's DbFileSystem这个类来模拟数据库中的一个文件系统。虽然上述办法在MYSQL数据库中用的非常好,但是并不是所有的数据库都能够很好的支持。举例来说,如果你正在使用一个Oracle数据库,你将需要修改上述文件为 / 235 Liferay使用手册 《使用手册》 OracleFileSystem。请参考http:// jackrabbit .apache.org这个网站的Jackrabbit文档,以便获取更多的信息。 你也有可能需要修改JDBC数据库的资源定位器以便它们都可以指向你的数据库。别忘了,首先要创建一个数据库,并且指定一个用户ID,这个ID是在配置文件里面设定的,通过这个用户ID你可以创建、修改和删除表格。 一旦你已经在一个数据库里面配置了用来存储Jackrabbit存储器的Jackrabbit,下次你如果涉及到Liferay的话,必要的数据库表格将会被自动生成。然而,Jackrabbit并不会为这些表格生成索引,因此过一段时间后,这将会造成性能的损失。为了修复这个漏洞,你将需要进入你的数据库,并且人工地位所有的Jackrabbit表格的主要关键列编辑索引。 在数据库当中,你的所有Liferay节点应该都被配置,使它们都使用同样的Jackrabbit存储器。一旦Jackrabbit存储器开始运行,你可以创建一个Jackrabbit簇(请看下面的章节)。 6.1.4、搜索配置 你可以用一下两种方法的其中一种来对搜索进行配置:1、使用具有插件性质的企业搜索(聚类配置的推荐);2、以这样一种方法来配置Lucene:索引被存储在每一个节点的文件系统上或者在一个数据库里面被共享。 具有插件性质的企业搜索 作为一个可选择使用的Lucene,Liferay 5.1和更好的版本现在都支持具有插件性质的搜索引擎。上述引擎的第一个实施就是使用了开源的搜索引擎Solr,但是在将来,将会有更多的类似的插件作为你的搜索引擎的选择。这也就要求你使用一个完全独立的搜索产品,这种产品可以被安装在你的运行环境当中的其它应用服务器。然后你的搜索引擎就可以完全独立地运行在你的聚类环境当中的 Liferay Portal节点上了,与此同时,这也起到了为所有节点的一个搜索服务。 这也解决了接下来要描述的共享Lucene索引的问题。在不必担心把搜索引擎放在一个数据库(如果你希望这样做的话,如果用上述方法配置了Solr或者其它搜索引擎的话,你仍然可以这样做)或者维护在所有节点上的独立的搜索索引后,你现在就可以拥有一个你的聚类的所有节点的搜索索引。每一个Liferay节点将会发出请求给搜索引擎,以便当有需要更新引擎的时候,对搜索引擎进行更新,并且这些更新将会通过搜索引擎,自动地、独立地,一个个有顺序的被处理。 由于在写这个文档的时候,具有插件性质的企业搜索仅仅只有一个实施,我们将会阐述怎样使得使用Solr得到生效。 6.1.4.1、配置Solr搜索服务器 由于Solr是一个独立的搜索应请,你首先要通过Solr的web网站( http:// lu-cene .apache.org/solr)上的操作指南,下载并安装Solr搜索引擎。Solr安装文件是由一个.war和若干个.jar文件构成的,这就要求你的应用服务器的类路径是可用的,并且Solr是一个分布式的搜索引擎。一旦你已经安装了Solr并运行,那么和 / 235 Liferay使用手册 《使用手册》 Liferay结合在一起就很容易了,但是结合的生效要求你重新启动你的应用服务器。 你第一步要做的是定义你的搜索索引的位置。假如你正在运行一个Linux服务器并且你已经为一个在/solr上的索引上安装了一个文件系统,创建了一个指向这个文件夹的环境变量。这个环境变量需要被定义为:$SOLR_HOME。因此作为我们的例子,我们将如下定义: 这个环境变量能够在任何你需要的地方定义:比如在你操作系统的开始运行序列,在登录的用户的环境当中,或者是在你的应用服务器开始的脚本里。如果你将要使用Tomcat来作为Solr的主机,你将要修改catalina.sh 或者catalina.bat并且在那儿添加环境变量。 一旦你已经创建了环境变量,那么你就可以在你的应用服务器的开机配置上使用这个变量,使得这个变量作为你的JVM的一个参数。不过不同的应用服务器有不同的配置,但是再次声明,如果你正在使用Tomca,你应该编辑catalina.sh 或者catalina.bat并且附加上以下的代码至$JAVA_OPTS这个变量: 这个代码的作用就是告诉Solr要把它的搜索索引存储在哪里。继续往下操作并通过Solr的Web站点( http://lu-cene .apache.org/solr)的操作指南安装Solr到这个box上。一旦Solr被安装,关机,因为还有一些配置要操作。 6.1.4.2、安装Solr的Liferay插件 下一步,你将有一个选择。如果你已经同一个Liferay运行的系统上安装了Solr,你可以通过控制面板并且简单的就可以安装solrweb插件。然而,这将会使得使用Solr的许多的目的得不到实现,因为本来的目标是卸载搜索索引至其它的box,这样做是为了释放Liferay的安装所需要的处理机的占用。由于这个原因,你不应该运行Liferay和你的搜索引擎在同一个box里面。不幸的是,插件的配置的系统设定就是使得Solr和Liferay运行在同一个box里面,因此应该要让它们分开独立运行,在你安装之前,你将不得不对插件里的配置文件做一些改变,以便你能够告之Liferay在哪里发送索引请求。在这件事情上,你可以到Liferay web站点( http://www.liferay.com )并人工的下载插件。 打开并提取插件。在插件里,你可以在WEB-INF/classes/META-INF这个文件夹里面找到文件solrspring.xml。用文档编辑器打开这个文件,你将会看到有两项,这两项定义了通过Liferay,去哪里找到Solr服务器 / 235 Liferay使用手册 《使用手册》 修改这些变量以便它们可以指向你所正在运行的Solr的服务器。修改完以后,保存文件并把文件放回到之前存放插件文档的同样的地方。 下一步,从插件中提取文件schema.xml。这个文件应该是放在文件夹docroot/WEBINF/conf里面。这个文件里面说明了Solr是怎样对来自Liferay的数据建立索引的,并且这个文件可以为你的安装进行定制。拷贝这个文件至$SOLR_HOME/conf这个在你的Solr的box里面的文件夹(你可能要创建conf这个目录)。现在你可以继续操作并启动Solr了。 你现在可以接着把solr-web这个插件部署到你的所有节点。你可以查阅下一个有关部署至一个聚类的说明书的章节。 一旦插件被部署后,你的Liferay搜索将会被自动升级,以便它可以使用Solr。然而,最初的搜索有可能会消失掉:这是因为当你要使用Solr的话,你将需要重新对所有的东西进行索引。 启动控制面板。在服务器这个部分,点击服务器管理(Server Administration)。然后在重定位所有位于页脚的搜索索引后,点击运行(Execute)这个按键。上述操作将会运行一段时间,但是Liferay将会开始发送索引的请求给Solr,让其执行。当进程完成后,Solr将会有一个属于你的地点的完全搜索索引,并且Solr将会独立地在你的所有Liferay节点上运行。 为你的节点安装插件,这将会起到覆盖掉任何通知Lucene为其进行搜索的作用。所有的Liferay的搜索box现在将会使用Solr作为搜索索引。这对于聚类环境来说是很理想的,因为它要求你的所有节点要共享一个搜索服务器和一个搜索索引,并且这个搜索服务器要在你的所有的节点上单独运行。 6.1.5、Lucene配置 作为Liferay使用的搜索索引器Lucene,它能够进行共享的配置,使其成为一个聚类的环境,或者是能够被创建在每一个聚类的节点上的一个索引。如果你希望可以拥有一个共享的索引,你将需要共享在文件系统或者数据库上的索引。 Lucene的配置可以通过修改你的portal-ext.-properties文件的变量来进行改变。打开你的portal.properties文件并搜索文本“Lucene”。复制那一个章节,然后便黏贴到你的文件portal-ext.-properties里。 如果你希望在被所有的Liferay节点所共享的文件系统上存储Lucene这个搜索索引,,你可以通过修改lucene.dir的属性来修改搜索索引的位置。通过系统设定,这个属性指向运行Liferay的用户的home文件夹里面的lucene文件夹: 改变这个至你选择的文件夹。为了使得改变生效,你将需要重启Liferay。你可以使得所有的节点指向这个文件夹,并且它们将会看到同样的索引。 / 235 Liferay使用手册 《使用手册》 然而,就像Jackrabbit一样,这不是共享搜索索引的最好方法,因为如果不同的节点同时尝试重新索引的话,它可以导致文件冲突。对于一个生产系统,我们不推荐这样操作。一个更好的方法就是共享一个经由一个数据库的索引,这样的话,数据库就可以使得索引的数据保持完整性。上述操作很容易办到。它仅仅是对文件portal-ext.properties的一个简单改变。 有一个称为lucene.store.type的单独属性。通过系统设定,它被设置到文件系统。你可以通过一下的操作来改变这种情况,以便使得索引可以被存储在数据库里面: 当下次Liferay被启动的时候,新的表格将会在Liferay数据库当中被创建,并且索引将会被存储在那里。如果所有的Liferay节点都指向同样的数据库表格,它们将会共享索引。如果这样操作的话,它所表现出来的性能不一定总能够像它应该有的那样好。你的DBAs可能可以把数据库索引压缩成一个比特,以便提高其性能。为了能够有更好的性能,你应该考虑使用一个独立的搜索服务器(参考上面的有关Solr的章节)。 注意:MySQL数据库的用户需要修改他们的JDBC的关联串以便使其可以运行。增加以下的参数到你的关联串: 你可以有选择性地不管如何配置,并每一个节点都将会有它们自己的索引。这就确保了当多个节点更新索引的时候,不会发生冲突,因为它们都有独立的索引。然而,这样也就复制了索引,并且这不一定是对资源的最好利用。再来,为了有一个更好的配置,你应该考虑使用一个独立的搜索服务器(参考上面的有关Solr的章节)。 热部署 热部署的插件需要被独立地部署到所有的Liferay站点上。因此,每一个节点应该拥有它自己的hot部署文件夹。这个文件夹对于用户来说,当Liferay正在运行的时候,它必须是可写的,因为当这些插件被部署的时候,它们将会从这个文件夹移到一个临时的文件夹。这样做是为了防止系统进入一个无限的死循环,因为文件夹中的一个插件的存在是引起hot部署进程的产生。 当你想要部署一个插件的时候,复制这个插件至所有的Liferay节点的hot部署文件夹。依靠着大量的节点,最好的方法就是创建一个脚本来完成以上的操作。一旦插件已经在所有的节点上部署好了,那么然后你就可以使用它了(依靠添加portle至一个页面或是为一个页面或页面分类选择作为外观和感觉的一个主题)。 一些存储器包含有这样的一个设备,这种设备允许最终用户部署一个应用到一个节点,接下来它便可以把这个部署复制到其它的所有节点。如果你已经配置了你的应用服务器以便可以支持这个应用,你就不必为所有的节点hot部署插件了—你的应用服务器将会自觉地处理。然而,你要确保使用Liferay的hot部署机,用来部署插件,由于在很多的情况下,当你hot部署插件的时候,Liferay会轻微地修改插件。 以上所说的一切操作将会使得Liferay聚类开始运行;然而,以上配置可以得到进一步的优化。我们将会在下面的章节中看到。 / 235 Liferay使用手册 《使用手册》 6.1.6、分布式缓存 Liferay 4.3.1还有更好的版本使用Ehcache,它具有分布式缓存的支持。这也就意味着:缓存是分布式的通过正在同时运行的多Liferay节点。为了使得这种缓存可以有显著的性能提升。举例来说,有两个用户正在浏览留言板。第一个用户点击一个主题进行阅读。Liferay必须从数据库中进行查找并且对其进行一定的格式修改以便可以在浏览器当中显示出来。伴随着分布式Ehcache的运行,这个主题能够从数据库找出来并且存储在缓存中,方便快速检索。然后,第二个用户想要阅读同样的讨论主题并点击了主题。这个时候,因为主题是存放在本地的缓存当中,再去数据库当中调取是没有必要的,因此检索缓存当中的数据会更快。 上述操作可以通过简单的让每一个节点都拥有一个独立运行的缓存来实现,但是分布式缓存的影响力要求其具有更多的功能。第一个用户可以发送一个信息到他或她所正在阅读的那个主题,并且缓存将会对所有的节点进行更新,使得来自本地缓存的新的公告马上可以被看到。如果没有这种功能的话,第二个用户将要等到他或她连接的那个节点上的缓存是独立的后,他或她才能够看到论坛公告的更新。 配置分布式的缓存需要对portal-ext.properties文件进行修改,就如同一个或多个其它的文件取决于你想要装备高速缓存一样。你将要做的第一件事是做出决定,这个决定就是你希望把你的缓存配置文件存放在你的服务器的哪个地方。这个必须放在Liferay的类路径的某个地方,因此你必须找到部署版本的Liferay存放在你的应用服务器的位置,并且在Liferay的文件夹WEB-INF/classes里面创建一个文件夹,以便用来存储文件。由于原始的版本的Liferay,系统谁的那个的文件都被存放在一个.jar的文件里面,你需要把它们提取到这个区域,然后告知Liferay它们存放的地方(使用the portal-ext.properties这个文件)。 举例说明,假如你正在Tomcat上运行Liferay。Tomcat在/webapps/ROOT这个目录下存放着已经部署好的Liferay版本。在这个文件夹里面存放着文件夹结构WEB-INF/classes。你可以创建一个新的称为myehcache的文件夹来存储传统的版本的缓存配置文件。从文件夹/ehcache—这个文件夹存放在portal-impl.jar这个文件里面---里复制文件到你刚刚创建的myechcache文件夹。然后你需要修改指向这些文件的portal-ext.properties这个文件的一些特性。复制/黏贴文件portal.properties的关于Hibernate的章节到你的portal.properties文件里面,然后修改net.sf.ehcache.configurationResourceName这个属性以便指向现在存放在你的传统文件夹里面的配置文件的聚类版本: 现在Liferay已经正在指向你的传统文件,你可以在这个文件里面进行修改,以便为Hibernate改变缓存配置。 下一步,复制/黏贴文件portal.properties的关于Ehcache的章节到你的portal.properties文件里面。修改其中的属性以便它们都指向在你的传统文件夹里面的文件。举例说明: 如果你想要使得分布式的聚类可行的话,以下的一行不能被注释掉,并且需要指向至你的传统文件的版本: / 235 Liferay使用手册 《使用手册》 你现在可以看一下这些文件里面的设置并且对它们进行调整,以便适合你的环境和应用。 如果你的Liferay项目正在使用环境的扩展以便使得对Liferay进行定制,那么你可以有选择地安排存放在扩展环境当中的缓存配置。这样的配置将会覆盖掉已经配置好的Liferay的系统设定。如果你希望做到这一点,你可以在文件夹extimpl/classes/ehcache中创建新的文件的版本。这些文件应该要加上后缀-ext.xml。举例说明,传统版本的hibernate.xml应该被命名hibernate-ext.xml,并且传统版本的liferay-multi-vm-clustered.xml也应该被命名为liferay-multi-vm-clustered-ext.xml。然后你变可以修改文件,并使得它们和你的环境/应用相匹配,并且 在除了你的扩展环境的剩余部分以外,它们将会被部署。 6.1.7、Hibernate缓存设置 通过系统设定,Hibernate(Liferay的数据库的暂留层)被配置以便使得Ehcache作为它的缓存提供。这是被推荐的设置。然而,系统设定的配置指向一个没有聚类功能的文件。为了使得其具有聚类功能,需要复制文件portal.properties的关于Hibernate的章节到portal-ext.properties文件里面。为了使其能够是一个聚类的缓存,需要对系统设定的文件进行注释(hibernate.xml)并不对文件的聚类版本进行注释,并且要确定你改变了路径,以便它指向你的文件的传统版本: 下一步,在文档编辑器中打开这个文件。你将会注意到:配置已经被建立,以便通过一个多点传送的连接来实现分布式缓存。然而,对于你的特殊应用,这不一定是最佳的配置。通过系统设定,你将会注意到,在Hibernate缓存当中惟一被配置缓存的对象是用户对象(com.liferay.portal.model.impl.UserImpl)。这也就意味着:当一个用户登陆的时候,他的或她的用户对象将会跑到缓存当中,以便任何的需要通过它的portal操作能够通过缓存,快速地检索到对象。 你可能希望增加其它的对象到缓存当中。举例说明,你的应用的大部分可能是使用文档库入口的文档管理。在这个例子当中,你可能想要对文档库对象进行缓存配置,例如DLFileEntryImpl,这样以便提高用户存取文档的性能。为了做到这一点,你可以增加其它的类的程序块至配置文件,这些配置文件你是想要放到缓存里面的: / 235 Liferay使用手册 《使用手册》 你的站点可能使用留言板入口,并且哪些留言板可能具有大量的堵塞。为了把留言板里面的主题放到缓存里,需要配置一个MBMessageImp类的程序块: 需要注意的是:如果你的开发者已经覆盖掉这些类的任何一个的话,你得指定已经被覆盖的版本,而不是存储来自Liferay Portal的那些类。 正如你可以看到的,增加特定的数据到缓存当中是很容易的。然而,要注意的是,如果JVM的运行超出了内存的范畴并且开始频繁地进行垃圾收集的时候,此时过多的数据在缓存里,这实际上会降低性能。就像之前的cache设置一样,你可能需要对在你的JVM上的存储设定进行试验。你可以在Ehcache的相关文档中找到这些设置的相关细节。 聚类的JACKRABBIT 如果你正在使用文档库,通过系统设定,你正在使用由Apache出品的Jackrabbit的JSR-170文档存储器。通过把它的配置移到一个数据库里面,你已经配置了在节点间共享的基本数据。你需要做的下一件事情是:为Jackrabbit配置聚类属性,以便每个节点都可以知道通过其它节点进入到存储器的数据。 你可以在找到/liferay/jackrabbit这个目录下找到Jackrabbit的配置文件。这个文件命名为repository.xml。当你为了移动数据至数据库而进行的配置修改,你可能已经编辑过这个文件。 / 235 Liferay使用手册 《使用手册》 在这个文件的尾部是一个被注释的聚类配置。如果你正在使用一个MySQL数据库,你可以把注释撤掉,并原原本本地使用它。你需要改变每个节点的聚类ID,以便它们不会和其它节点发生冲突。 如果你正在使用其它的数据库,连接、资格还有模式设置必须进行改变的。你可以通过你选择的数据库来进行修改,然后保存文件。以上便是配置Jackrabbit的聚类所有步骤。 6.2、工作流 流程的端口允许一个用户定义任何数量的简单到复杂的商业处理/流程,并对它们进行配置,并且通过一个portal接口进行管理。这个接口的权利就是允许用户创建基于窗体的数据属性应用,这些应用将会和Liferay的容许系统完全结合在一起。不必要写一个单独的代码,它们便可以拥有用户、群组和角色的知识---它仅仅需要创建一个独立的XML文档。 260~275: portlet依赖Mule或Apache ServiceMix作为一个企业服务总线(ESB)的功能,其扮演portal和工作流程引擎的中间者。从本质上讲,门户提供了一个通用的界面,让工作流程通过正常的HTTP调用来请求服务。该请求通过ESB路由,ESB反过来调用工作流引擎中用户在ESB配置中定义的的实现。默认情况下,提供了一个Liferay的JBoss的jBPM的工作流引擎的实现。 6.2.1、安装与测试 要启用在门户网站中的工作流,必须安装三个插件: 工作流容器本身,jBPM web 插件,ESB web 插件之一。后面两个方便定位于控制面板的插件安装部分的网络选项卡。您将需要有 jBPM 和安装的 ESB 插件之一。 一旦完成这些插件的安装,按照以下步骤合理配: 1. 对于Mule,确保在门户网站分机的以下属性按照如下设置: 对于ServiceMix, 保在门户网站分机的以下属性按照如下设置: 2. 如果需要修改以后属性,请重启相应的应用服务。 3. 作为门户网站管理员登录,默认的凭据时test@liferay.com/test.。 4. 增加工作流容器到页面。 5. 点击定义选项卡。 6. 点击增加按钮。 7. 复制黏贴jbpm-web.war/WEB-INF/definitions/datatypes_definition.xml里面的内容到文本区域,并点击保存新版本按钮。 8. 点击增加实例图标。 / 235 Liferay使用手册 《使用手册》 9. 从实例选项卡单击管理图标旁边输入数据。 10. 填写表格,然后单击保存按钮; 或者,您可以通过输入不正确的值,并单击保存按钮,测试各种错误检查功能。 11. 最终,输入正确的值,然后单击保存按钮。 12. 从实例选项卡中,点击信息图标旁边查看数据。 13. 确保所有的数据输入正确后,点击完成按钮。 14. 确保当前的实例处于结束状态。 6.2.2、使用不同的数据库 默认jBPM组件是使用在jbpmweb.war/WEB-INF/sql/jbpm.*中一种 HSQL数据库。为了改变HSQL数据库的位置,可以改变在jbpm-web.war/WEB-INF/classes/hibern-ate.cfg.xml.中的hibernate.connection.url属性值。位置是相对解决来自任何地方为您的服务器的启动脚本的位置。 除HSQL之外,要使用数据库,首先创造数据库图解使用一个SQL创造由在jbpmweb.war/WEB-INF/sql目录供应的剧本。然后取消对应阻塞在jbpmweb.war/WEB-INF/classes/hibernate.cfg.xml的连接属性块的注释。 6.2.3、工作流Portlet的工作机理 由于工作流容器的默认实现严重依赖 jBPM 的能力,这部分提供 jBPM 的技术概述,并解释了如何,它将集成到 Liferay 使用 jBPM 过程定义语言 (JPDL) 格式的 XML 文件。但是,它不给深入 jBPM 的视图。有关的请参阅 jBPM 用户指南。( http://docs.jboss com/jbpm/v3/ userguide ). 6.2.3.1、进程定义 可以使用工作流容器之前,必须定义业务流程。jBPM 的业务流程定义的 XML 文档称为进程定义,都写在 jBPMProcess定义语言 (JPDL)。此 XML 格式指定实体,如进程角色 (称为swimlane)、 各种状态在这种的过程(称为节点)。其中每个节点相关联的任务,与每个任务,一个节点转换为下一个节点,与每个任务的窗体关联的变量,在进入或退出一个的节点和许多其他上执行的外部操作相关联的角色。为深入了解流程定义和 JPDL 的 JBoss jBPM 用户指南 》,这个指南在上面的链接,请参阅。 集成用户,社区和角色 在JPDL,有称swimlanes的处理角色的概念。 Swimlanes可以同Liferay用户,社区联系在一起,并且角色通过IdentityAssignmentHandler分类。 / 235 Liferay使用手册 《使用手册》 在上面的XML, approver swimlane同有用户识别号10112并且属于公司ID 10095的Liferay用户联系在一起。 如以下XML小片所显示,您也能通过电子邮件同Liferay用户联系在一起swimlane。 在上述的 XML ,shipper swimlane与 Liferay 的用户相关联,并且该Lifeary用户都有一个电子邮件地址的test.lax.2@liferay.com而属于ID为10095的公司 。 在以上的XML,推销员swimlane联系任何一个属于社区3(如果你使用跟Liferay门户网站捆绑在一起的嵌入式HSQL数据库)和ID10095公司的Liferay用户。换而言之,推销员swimlane被分配给用户支持库。如果这些用户之一管理一个推销员任务,他/她会自动被分配给工作流中的所有其他的推销员任务。 上面的 XML 显示与使用实际社区名称的支持社会关联account swimlane的另一种方式。团体名称必须是唯一的每个公司 ID ,这种格式来实现相同的上一个 XML 结果。 / 235 Liferay使用手册 《使用手册》 上面二个XML的小片非常类似小组XML小片。 两个同他们的各自swimlanes联系在一起角色,但是第一XML做,因此使用角色ID,使用角色的唯一名字,并且第二XML如此做。 6.2.3.2、数据类型和错误检测 目前,jBPM不支持具有类型变量的数据。然而,通过纳入与该控制器变量的姓名,在工作流容器中数据类型已被处理。下表显示的数据支持的容器以及作为变量名的语法类型: / 235 Liferay使用手册 《使用手册》 请注意,所有名称和选项值,这些值必须在XML中在较低的词与词之间用连字符的情况输入: 在另外您应该在 Language.properties 文件中注册相应的显示值: 这个保证价值在对用户的容器恰当地被显示。 默认情况下,所有变量都是可读和可写的用户。因此,他们可以定义如下所示: 但是,如果变量应该只是可读或可写的,是否都需要变量,这些必须指定变量定义中: / 235 Liferay使用手册 《使用手册》 数据类型日期、数字、电子邮件和电话的可变量在业务通话被确认。 并且必需的领域被确认保证某一种类的价值递交了。 如果无效价值递交,用户返回到原来形状,并且错误信息在无效输入领域旁边被显示。 请参阅示例定义 jbpm-web.war/WEB-INF/definitions/datatypes_definition.xml 在单个窗体中使用的所有数据类型的示例。 JBoss也提供被实施作为Eclipse插件的一个图解JPDL编辑。 相对于使用可扩展标记语言编辑,这个编辑允许您图解地设计工作流。 您能在http://www.jboss.org /tools找到这个工具。 6.2.3.3、示例流程定义 最佳的方式了解JPDL将在3个样品XML文件包括有工作流portlet看到。 他们可以在jbpm- web.war/WEB-INF/definitions/找到。 下面其中每一的一个快的总结: datatypes_definition.xml--要了解如何使用每种以上一节中描述的数据类型的良好指南 holiday_definition.xml –一个简单的工作流,它允许一个雇员制定一个度假要求的开始和结束日期,然后经理可以批准、 拒绝,或发送回供审阅请求 websale_definition.xml –一个更复杂的工作流,它模拟控制的工作流通过各种角色的在线拍卖站点。这是最复杂的 3 的工作流,但它演示了几乎所有提供的 jBPM 的 BPM 功能 备注: ● JPDL定义XMLs可以通过JBoss提供的一套图解设计工具被创造,但是那是超出本文的范围之外(参见http://docs.jboss.com /jbpm/v3/gpd的一个详细说明)和也是超出容器的范围之外。 ● 为拥有与他们每个控制器中变量相关联的任务节点的节点将被转换为用户必须更新的表单元素。 / 235 Liferay使用手册 《使用手册》 ● 有与他们每个节点的转换相关联的任务的节点的被表示为任务的窗体中的按钮。转型期的 name 属性始终应以单词之间的连字符的大小写和在 Language.properties 注册。显示值用作按钮的名称。 ● 在 com.liferay.jbpm.handler 包中找到的许多的操作处理程序类,只是输出到控制台的有关文本的占位符。想象,这些类可以执行操作如启动更新的旧式系统等的批处理过程的电子邮件发送。 ● websale 工作流说明所有这些讨论进一步详细 jBPM 用户指南 (http://docs.jboss.com/jbpm/v3/user guide) 中的下列 jBPM 概念: 6.2.3.4、错误信息 如果您为您的服务器启用警告消息在您的控制台中可能看到以下消息输出的一些变量几次 jBPM 调用时: 根据 JBoss 论坛 (从 Koen Aers 到 jBPM 项目的主要参与者之一) 以下一职这不是一个错误并不具有意义。他解释了在这里引发此警告的原因: / 235 Liferay使用手册 《使用手册》 http://www. jboss .com/? module=bb&op=viewtopic&t=73123。基本上,问题归结为休眠做延缓加载的类。在一个查询后则返回一个集合,保存的存根类的集合。检索特定的实例时, 休眠去从数据库中获取,并替换该存根 (stub) 一个实际的实例可以从而打破了 = = 运算符。 6.2.4、管理 一旦通过成功地编写过程定义,定义您的业务流程的下一步是部署您的业务流程。一旦部署这些用户可以控制在从一个角色传递到下一个管理过程中的每个实例的生命。此部分是为了实际执行预定义的过程定义的最终用户。 6.2.4.1、部署工作流 一旦用户登录到门户并且增加工作流portlet到她的页,他或她将看事类似以下: 如果她点击“Definitions”选项,他或她将看见以下: 定义选项显示在系统部署了的所有工作流。 要部署工作流,点击增加定义按钮。 用户将看见以下屏幕: / 235 Liferay使用手册 《使用手册》 这时,用户在定义XML的内容能黏贴(为例子参见jbpm- web.war/WEB-INF/definitions)和点击Save New Version按钮。 如果XML是无效的,错误信息将被显示。 如果XML是合法的,它将部署,用户将返回到定义选项,并且成功消息将被显示。 因为业务流程可能会随着时间的推移更改,被维护每个版本的 worklows。要编辑现有版本,请单击定义名称旁边的编辑图标。更新的 XML 文本区,然后单击保存新版本按钮。新的版本号将从以前的版本 1 递增。要启动的工作流定义一个新的实例,请单击添加实例图标。实例选项卡上,将显示一个新的实例。要查看特定的 definiion 的所有实例,请单击视图实例图标。最后,用户也可以搜索的定义通过使用定义名称输入框中的名称。 管理实例 部署一个定义该定义的实例启动后,用户可以管理该实例的生命周期。实例管理控制从选项卡,下面是一个示例的用户可能会看到的实例: 实例选项卡将显示每个版本的每个工作流系统中部署的每个实例。他们按字母顺序列出定义名称以降序顺序依次开始日期。在屏幕顶部的搜索表单允许用户查找特定的实例来管理。在特别的是已经结束了复选框的隐藏实例允许用户显示只活动、 正在运行的实例。日期范围还允许用户在搜索的开始日期和/或结束日期 (注: 日期范围是包括的一天。为例如果 2007 年 12 月 23 日 — 2008 年 1 月 23,设置范围的开始日期然后只实例启动之间 2008 年 1 月 28,上午 12: 00 至 1 月 2008年 11: 59 下午会显示)。为每个实例的第一行描述实例的状态。任何后续行实例中的定义的当前状态与相关的任务。很多时候,当前状态和当前任务具有相同的名称。在下面的示例截屏,注意到网上出售版本 1.0 当前处"执行航运和付款";的状态,它具有与之关联的两个尚未完成的任务 — —"等待快件传递"和"等钱";。 / 235 Liferay使用手册 《使用手册》 在结果表中的最右侧列显示当前的用户可以在其当前状态中的给定实例执行什么操作。下表显示的所有可能的行动和什么每个方法: / 235 Liferay使用手册 《使用手册》 6.2.4.2、管理任务 任务管理控制从”任务”选项卡下的是的用户可能会看到一个示例: 任务选项卡将显示也直接向用户或用户所属的组/角色池已分配的每个任务。他们按创建日期列出按升序排列,并直接向用户分配的任务列出前 (如果在分配对象栏空白,意味着任务是打开到池) 分配给用户的池的任务。在屏幕顶部的搜索表单允许用户查找特定任务管理。在特别的是已经结束了复选框的隐藏任务允许用户仅显示活动任务。日期范围还允许用户在搜索任务的创建日期、 开始的日期和/或结束日期。用户也可以选择仅显示直接分配给她的任务、 任务分配给她的池或分配给通过使用分配给下拉的所有任务。 要开始任务,所有用户需要做的是点击它。 显示的下一个屏幕根据被定义了任务的种类将是不同的。 例如,如果用户使用提供了的样品请求假日定义,形式类似以下将被显示: 这些任务窗体生成的 XML 定义中定义和与该任务相关的控制变量。取决于数据所对应的元素是在窗体中创建的。必填的字段是由一个红色星号表示的。如果在用户提交无效数据的窗体,她将返回到该窗体的每个无效字段旁边的错误消息。如果所有的数据有效,并在用户提交表单她将返回到任务选项卡显示成功消息。 / 235 Liferay使用手册 《使用手册》 6.2.5、未来增强的功能 6.2.5.1、日志记录 目前,工作流portlet没有采伐的概念,除能力回顾用户分配了到他们或完成了的所有之外任务。 然而, jBPM提供相当健壮采伐的功能,因此管理员或用户能监测在特殊工作流采取了的每行动。 采伐的功能在新发行未被建立唯一的原因是,因为Liferay开发小组不是肯定的什么是对终端用户最有效的采伐的度规。 如果您或您的组织有采伐的要求,请递交他们给Liferay论坛,并且我们将回顾可能的包括的那些要求在工作流portlet的将来的版本。 6.2.5.2、可自定义前端 虽然工作流 portlet 的力量它可以提供基于窗体的数据输入应用程序,实际上是对即时,当他们呈现的 portlet 的窗体的外观显然不是很多控制。若要关注此 Liferay 开发团队计划创建样式表和可应用于香草的窗体的模板。该功能会非常相似,如何 XSL 样式表当前应用于文章 Liferay 杂志内容管理系统中。此增强功能将使组织布局和他们的表单的用户界面设计变得弹性化。 6.2.5.3、文件上载数据类型 已添加文件的数据类型提供的用户上传与工作流任务相关联的文件的方法的多个请求。肯定,这将是未来的增强。 6.2.6、常见问题 6.2.6.1、您编写一个新的过程定义的方式? 学会如何写一个更新过程定义的最佳方式是将使用一样品定义XMLs (在jbpm- web.war/WEB-INF/definitions/找到)作为一个起点。 Inparticular, websale_definition.xml展示jBPM的大多BPM特点, 为JPDL的一提供一个详尽的解释,参观JBoss’文献在http://docs. jboss .com /jbpm/v3/user guide或jpdl.html. 也有一位图解JPDL设计师可利用在http://labs.jboss .com/jboss jbpmx/downloads。 6.2.6.2、当我改变JBPM时的数据库为什么有“DUPLICATE FILE”异常? 因为我们使用ServiceMix作为service broker为我们的工作流组件(默认情况下,我们使用jBPM),我们不可能依靠工作流引擎维护我们的流程定义的版本。 所以,我们维护流程定义XMLs当做在我们的文件图书馆里中的系统文件。 XMLs被命名根据他们的定义身份证,并且定义身份证在jBPM数据库中被维护。 所以,如果您将换成数据库一个新的事例,也将重新设置定义身份证,并且,当系统设法存放流程定义XML,它发现复制品XML已经存在。 唯一的方式保证这个异常不发生是通过清除/liferay/jackrabbit文件夹在开关数据库之前。 然而,被警告这将删除所有文件在您的文件图书馆被存放。 建议,一旦您决定适合您的需要的jBPM数据库,您应该只使用那个数据库。 / 235 Liferay使用手册 《使用手册》 6.3、 部署一个自定义的 Liferay 这本书的安装章所述 Liferay 可以通过扩展环境容器的完全自定义。部署到服务器的扩展环境需要两种情况之一: ● Liferay开发工具(JDK、蚂蚁等等)在服务器被安装, Liferay的Portal原始代码是在服务器上可利用的,并且引伸环境被检查对在服务器上的一个目录。 ● 对客户端机器,包含 Liferay 开发工具、 可以映射的驱动器或文件夹安装,指向服务器上的安装目录。 一旦这两项要求之一已满足部署到服务器就像本地部署到开发人员的计算机一样容易。 6.3.1、直接在服务器上部署 部署引伸环境直接地在服务器上是建议使用的方法。 要做此,您将必须创造定义了部署的设置的二个新的配置文件。 在引伸环境里,创造称app.server.properties的一个文件,其中之下服务器可执行的奔跑帐户的用户名在。 如果,例如,您有一台Glassfish服务器运行以glassfish的用户名,您的文件将称app.server.glassfish.properties。 这个文件将忽略在app.server.properties被找到的缺省值。 您将需要配置在这个文件的两个属性: 服务器类型和服务器道路。 服务器类型应为以下值之一: 路径属性是类似于服务器类型。它应如下所示: 用上面服务器类型替换。 例如,如果您使用Glassfish,您的物产是: / 235 Liferay使用手册 《使用手册》 属性的值应该是到服务器的目录的完全限定的路径。其次,创造另一个文件类似称发行的第一个release..properties。 再次,与服务器跑下面的替补,并且在谁的证件之下您做着部署。 这个文件将忽略缺省在release.properties发现了。 此文件需要两个属性: 设置为等于安装 Liferay 门户源位置的完全限定的目录名称的 lp.source.dir 属性的值。设置为等于完全限定的 lp.ext.dir 属性的值已在此安装扩展环境的目录名称您已签出从存储源的代码库。例如: 一旦您已经设置了这两个属性文件,运行以下的 Ant 任务: 您定制的Liferay在您的应用服务器将自动地被编写并且被部署。 6.3.2、从客户机部署 如果您部署从客户端的定制的Liferay,您将需要映射驱动(在Windows)或在您的文件系统的一个文件夹(Mac或Linux)到服务器。 一旦您做了此,仿效被概述的同一种做法以上,除之外应该是用户的用户名登录对 client,在服务器上的不是。 您不会需要改变发行.properties文件; 将需要修改仅app.server.properties文件。 如果您使用的是开发人员的机器做了部署,这些配置文件将已经存在。修改app.server..properties文件,以匹配应用服务器的类型,目录位置(在其中它是在你的映射驱动器或文件夹中安装的)。然后运行上面的Ant任务来部署扩展的环境。 请注意,此第二种方法是不是最好的做法,因为在开发者的机器上本地的修改,然后直接部署到服务器,而没有先进行代码管理。最好是有开发者在所有检查他们的代码,代码版本,然后从你的代码管理软件提取版本部署到服务器。 6.4、 性能调试 一旦你的门户投入使用,你可能会发现需要调整它的性能,尤其是如果您的网站产生比你的预期更多的流量。您就可以采取一些明确的步骤,提高Liferay的性能。 / 235 Liferay使用手册 《使用手册》 6.4.1、内存 当你要优化的性能,内存是第一个考虑的。如果您有任何磁盘交换,这将对性能产生严重影响。请确保您的服务器有一个最佳的内存量和你的JVM是协调使用它。 有三个基本的JVM命令开关,控制Java堆的内存量。 -Xms -Xmx -XX:MaxPermSize 这三个设置控制最初JVM可用的内存量,JVM的内存的增长上限,以及单独的堆,即所谓的Permanent Generation空间。 前两个设置应设置为相同的值。这可以防止如果应用程序需要更多的JVM,重新分配内存。他们设置为相同的值会导致JVM中被创建起来的最大内存量你想给的。 -Xms1024m -Xmx1024m -XX:MaxPermSize=128m 这对于中等大小机器或开发机器是完全合理的。这些设置给予堆大小为1024MB的JVM和有一个128MB的PermGen空间。不过,如果你有一个Liferay的与4GB内存的服务器和您有性能要求,首先你可能想的是增加可用内存给JVM。您将可以告诉如果在服务器上运行诸如Jprobe,YourKit,或在NetBeans分析器分析内存是否有问题。如果你看到垃圾收集(GC)运行频繁,你一定会想增加JVM的可用内存空间。 请注意,有一个内存返回递减规律,特别是64位系统。这些系统允许你创建非常大的JVM,但JVM越大,就需要更多的时间用于垃圾收集。基于这个原因,你可能不会想要创造超过2 GB大小的JVM。为了较好的利用但系统的内存数量,运行Liferay的多个JVM。 与PermGen空间的问题也可能会影响性能。 PermGen空间包含长期使用的类,匿名类和内部串。特别的, Liferay广泛使用的Hibernate,已经知道利用PermGen空间。如果您增加的可用内存给JVM,您可能需要增加相应的PermGen空间量。 6.4.2、垃圾收集 当系统运行时,创建各种Java对象。有些对象是长期存在的,有些则不是。那些没有成为引用,这意味着JVM中不再与他们有联系,因为他们已不再是有用的。这些可能是已返回他们的值的函数所使用的变量,数据库中一个不再登录用户的检索对象,或主机的其他东西。这些对象在内存中,并填满了JVM的堆空间,直到JVM决定清理他们。 一般来说,当垃圾收集(GC)运行时,它停止在JVM中的所有处理,同时它通过堆寻找死对象。一旦发现他们,它释放了他们占用的内存,然后可以继续处理。如果这发生在一个服务器环境中,它可以减缓请求的处理,因为当垃圾收集(GC)运行时,所有的处理停顿下来。 / 235 Liferay使用手册 《使用手册》 有些JVM开关,您可以启用,可以减少当收集垃圾处理停止的时间。应用正确的话,这些可以提高您的Liferay的安装性能。一如往常,你将需要使用分析器来监视在加载测试时正确垃圾收集,以调整您的服务器硬件,操作系统和应用程序服务器的号码。 6.4.3、Java内存结构说明 Java的堆是分成不同的部分,分为年轻的一代,老的一代和永久的一代,这个年轻的一代又分为三个部分:一个Eden,这是新对象创建的地方,两个生存空间,我们把他叫为From和To。 对于垃圾回收机制发生的阶段。一般来说,年轻的一代更经常发生,而老的一代不经常发射管你,甚至永久的一代不经常出现,在那里可以永久的存储。年轻的一代的垃圾回收机制,Eden是偏移的对象,不再是引用。那些都会在移动到To生存空间,而清除From空间的内容。这个空间里面的其他对象都把他们的引用移动到To空间,然后From空间的内容全部一起清除,经过这样以后,就实现了From空间跟To空间的交换,这样加工解放直到下一次的JVM垃圾收集再确定是否需要运行。 经过“代”的垃圾收集尚存,预定对象个数可能会被移动到老一代。同样,在预定的数目对“代垃圾收集的”在老一代上面,存活下来的对象可能移动到永久的一代。 默认情况下,使用一个串行的JDK垃圾收集器实现这一目标。这个工程非常好一个短命的桌面Java应用,但不一定是最好的每前者对于一个像Liferay的基于服务器的应用程序。基于这个原因,你不妨切换到并行马克扫(CMS)的收藏家。 而不是完全停止处理申请,这些垃圾收集器使一个应用程序的执行短暂停标志对象直接到达从应用程序代码。然后,它允许应用程序运行,同时它标志着所有转播,jects这是一套从它标志着到达。最后,它增加了一个阶段称为定型的阶段,这句话再次修改任何对象标记,而应用程序正在运行。然后,它通过收集和垃圾清扫。这已是大大减少了执行时间,必须停止,以量的影响清理出没用的对象。 几乎所有的内存管理方式方面的工作可以在Java调整。在你的剖析,你可能要与以下设置一些实验,看看其中的任何可以增加你的表现。 / 235 Liferay使用手册 《使用手册》 NewSize,MaxNewSize:初始大小和最大规模的新的或年轻一代。 +UseParNewGC:使垃圾收集发生在平行,使用多中央处理器。这减少垃圾收集的开+销,并提高应用程序通过,付诸表决。 +UseConcMarkSweepGC:使用并行马克扫垃圾收集器。这将使用更短的垃圾收集停顿,这对应用程序有一个良好的一套比较大的长寿命的数据,机器上运行两个或更多例如Web服务器处理器。 +CMSParallelRemarkEnabled:对于不育系气相色谱法,使垃圾回收器合作医疗过程中使用多线程句话阶段。这减少暂停期间这一阶段。 ServivorRatio:控制两个幸存者空间的大小。这是一个比例关系幸存者和Eden空间的大小。默认为25。有没有为多邦巴克在这里,但它可能需要进行调整。 ParallelGCThreads:数目的线程用于并行垃圾回收。应等于CPU的内核数量在您的服务器。 一个示例配置使用上述参数可能看起来类似这样: 6.4.4、属性文件的变化 也有一些变化,您可以对您的门户ext.properties文件一旦你是在生产环境中。设置以下为false来禁用检查的最后修订在服务器端的日期CSS和JavaScript。 设置此属性为true加载更快装载主题的文件合并的CSS生产。默认情况下它被设置为false为便于开发调试。你也可以通过设置禁用URL参数快速装载css_fast_load为0。 设置此属性为true加载到一个压缩文件加载更快的生产从属性javascript.files合并JavaScript文件。默认情况下它是设置为false调试更容易发展。您还可以通过禁用快速装载URL参数js_fast_load设置为0。 6.4.5、Servlet过滤器 Liferay的过滤器来启用并投入运营17 servlet的默认。很可能为您的安装,你不需要它们。要禁用一个servlet过滤器,只需评论是出于你的web.xml文件。如果是由一个servlet过滤器,你知道你是不是使用支持功能,你可以评论它,以及达到某些性能收益。例如,如果您没有使用中科院单点登录,注释掉中科院筛选。如果你不使用单点登录组件NTLM身份,注释掉的NTLM筛选。如果你不使用虚拟社区托管功能,注释掉虚拟主机筛选。该较少的servlet过滤器在运行,处理能力就越是需要为每个请求。 / 235 Liferay使用手册 《使用手册》 6.4.6、Portlets Liferay的预装了它含有很多很多的portlet捆绑功能,知音但并非每个网站,是基于Liferay的运行需要使用他们。在portlet.xml中和Liferay的portlet.xml中,注释掉那些你不使用。虽然有一贷款计算器,模拟时钟,或为用户提供的刽子手游戏添加到页面是不错的,那些可能会占用的portlet所需要的资源定制你写的portlet为您的网站。如果您有性能问题,注释掉一些未使用的portlet可以给你提高你的表现需要。 6.4.7、读写数据库配置 Liferay的5.2.x,您可以使用阅读和写作两个不同的数据源。这使您可以分成两套数据库的基础设施:一个是OPTIM纤维,阅读而且是写了优化。由于所有主要数据库燮,在这种或那种形式端口复制,然后你可以使用你的数据库供应商的发言人,杨勇机制,以保持同步,如果在1比更快地你的数据库有一个单一的数据来源,处理一切。 启用一读的作家数据库很简单。在您的门户ext.properties文件,配置两个不同的数据来源,以Liferay的使用,一个用于阅读,书写之一: 当然,指定用户名和密码到您的数据库在上面配置。在此之后,启用了读的注释,作家数据库配置Spring配置文件,使您的spring.configs财产(线,它是在大胆的注释: / 235 Liferay使用手册 《使用手册》 下次您重新启动Liferay的,它现在将使用两个数据源,您有定义。一定要确保你已经正确设置了你的两个数据库,供复制开始之前Liferay的。 6.4.8、数据库共享 Liferay的5.2.3版本开始,支持数据库sharding不同的门户网站实例。 Sharding是用来描述一个为大量用户极高的可扩展性的系统配置的一个术语。在图表中,数据库通常描绘成一个圆柱体。相反,图片作为玻璃瓶它的数据的完整。现在采取的瓶子,并粉碎了具体人行道上它。将有玻璃碎片随处可见。如果这瓶是一个数据库,每个碎片现在是一个数据库,以在每个碎片的数据子集。 这使您可以通过数据拆分,可能有不同类型的数据库它。例如,一个数据库中的一些sharding实现分裂的用户:同一个姓氏的开头为D走在一个数据库中,E来我在另一个去;等当用户登录后,他们被定向到连接到对应的数据库应用程序实例的姓氏。在这种方式下,加工分裂均匀,数据量的应用需求排序通过降低。 默认情况下,Liferay的支持允许你通过不同的门户实例sharding,使用循环碎片选择。这是一个阶级作为默认服务算法在Liferay的sharding。使用这种算法,Liferay的将选择几个不同的门户和均匀分布的情况在他们的数据。当然,如果你希望你的开发人员实现自己的sharding算法,你可以做到这一点。你可以选择算法是积极通过门户ext.properties文件: / 235 Liferay使用手册 《使用手册》 启用sharding很容易。您将需要确保您使用的是Liferay的数据而不是代码实现您的应用程序服务器的。你的各种设置在您的门户ext.properties数据库碎片文件是这样的: 一旦你这样做,你可以设置你的DNS,使几个域名指向您Liferay的安装(例如,abc1.com,abc2.com,abc3.com)。接下来,进入控制面板,单击门户网站在服务器类的实例。创建2至3实例绑定到您所配置的DNS名称。如果您使用的是RoundRobinShardSelector类,Liferay的将自动进入每一个数据一个实例,自动。如果您使用的是ManualShardSelector类,你必须为每个使用UI实例碎片。过去的事你需要做的是修改spring.configs节你门户ext.properties文件,使sharding配置,默认情况下是注释掉。要做到这一点,你的spring.configs应该像这样(修改部分粗体): / 235 Liferay使用手册 《使用手册》 这就是这么简单。您的系统正在建立sharding。 / 235

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 5 人已下载

下载文档