<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>雪飞南国</title>
    <description></description>
    <link>http://xuefeinanguo.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>【转帖】liferay配置说明</title>
        <author>雪飞南国</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xuefeinanguo.javaeye.com">雪飞南国</a>&nbsp;
          链接：<a href="http://xuefeinanguo.javaeye.com/blog/179145" style="color:red;">http://xuefeinanguo.javaeye.com/blog/179145</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          转自：http://www.cnpoint.com/web/2007/0119/content_5228.htm <br />关于Liferay的配置文件 —— 基于Struts开发Portlet <br />结合Liferay实例sample-struts-portlet，基于Struts开发Portlet一般具有以下配置文件：<br /><br />liferay-display.xml <br />liferay-portlet.xml <br />portlet.xml <br />struts-config.xml <br />tiles-defs.xml <br />web.xml <br /><br /><br />--------------------------------------------------------------------------------<br />（1）liferay-display.xml （定义Portal 中Portlet 管理的目录结构）<br />        配置在Portlet 的显示名称，以及该portlet 在显示列表中所在的目录。值得注意的是该处并没有直接给出在Portlet 显示列表中的显示名字，而是给出了Portlet ID，根据在porlet.xml 中portlet ID与Name 的关联，可得到该Portlet 的显示名字。<br /><br />        &lt;display><br />            &lt;category name="category.test"><br />                &lt;portlet id="sample_struts_portlet" /><br />            &lt;/category><br />        &lt;/display><br /><br />        效果：添加porlet 内容时，也就是在点击“add content” 时，名叫sample_struts_portlet 的portlet 将在目录中的test 项下显示。<br /><br />（2）liferay-portlet.xml （定义基于Liferay Portal 下的Portlet 的特有属性）<br />    该配置文件定义portlet 属性和角色，该配置文件对基于JSR168的 portlet.xml 的属性进行扩展。<br /><br />        &lt;liferay-portlet-app><br />        &lt;portlet><br />            &lt;!-- 配置portlet 名，该名应对应于liferay-display.xml 中portlet 的id 属性 --><br />            &lt;portlet-name>sample_struts_portlet&lt;/portlet-name><br />            &lt;!-- 配置portlet 的实现类，该类响应该portlet 的请求，实现功能  --><br />            &lt;portlet-url-class><br />                    com.liferay.portal.apache.bridges.struts.LiferayStrutsPortletURLImpl<br />            &lt;/portlet-url-class><br />            &lt;use-default-template>true&lt;/use-default-template><br />            &lt;restore-current-view>true&lt;/restore-current-view><br />        &lt;/portlet><br />        &lt;!-- 配置该portlet 的角色，以及角色的显示名字，角色名role-name 是由portlet.xml 中进行定义 --><br />        &lt;role-mapper><br />            &lt;role-name>administrator&lt;/role-name><br />            &lt;role-link>Administrator&lt;/role-link><br />        &lt;/role-mapper><br />        &lt;role-mapper><br />            &lt;role-name>guest&lt;/role-name><br />            &lt;role-link>Guest&lt;/role-link><br />        &lt;/role-mapper><br />        &lt;role-mapper><br />            &lt;role-name>power-user&lt;/role-name><br />            &lt;role-link>Power User&lt;/role-link><br />        &lt;/role-mapper><br />        &lt;role-mapper><br />            &lt;role-name>user&lt;/role-name><br />            &lt;role-link>User&lt;/role-link><br />        &lt;/role-mapper><br />    &lt;/liferay-portlet-app><br /><br />    效果：该portlet 由com.liferay.portal.apache.bridges.struts.LiferayStrutsPortletURLImpl 类的实例进行处理，允许使用模版和实时刷新页面。可配置administrator，guest，power-user，user 四种角色对其拥有不同的权限。<br /><br />（3）portlet.xml （Portlet 的标准属性，该配置文件中的各项属性符合JSR168 标准，并非Liferay专用）<br />       该配置文件设置Portlet的各个属性，该各项属性在Portlet初始化时得以加载。<br /><br />&lt;portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"><br />    &lt;portlet><br />        &lt;portlet-name>sample_struts_portlet&lt;/portlet-name><br /><br />       &lt;!-- display-name 即为该Portlet显示的名字，liferay-display.xml 中配置了Portlet  id，关联该配置文件可找到其显示的名字，如下“Sample Struts Portlet" --><br />        &lt;display-name>Sample Struts Portlet&lt;/display-name><br /><br />       &lt;!-- 由于在开发Portlet 时必须继承Portlet 的基础类，而此处是基于Struts 开发Portlet 时可继承该类  --><br />        &lt;portlet-class>org.apache.portals.bridges.struts.StrutsPortlet&lt;/portlet-class><br />        <br />       &lt;!-- init-param 标签表示Portlet 的初始化参数 ，由name 标签和 value 标签指明其名字和值的一对数据 --><br />        &lt;init-param><br />            &lt;name>ServletContextProvider&lt;/name><br />            &lt;!-- 其值为该Portlet 可接收响应的URL或者类，URL 对应的类是哪个由Struts-config.xml 定义--><br />            &lt;value>com.liferay.util.apache.bridges.struts.LiferayServletContextProviderWrapper&lt;/value><br />        &lt;/init-param><br />        &lt;init-param><br />            &lt;name>EditPage&lt;/name><br />            &lt;value>/portlet_action/sample_struts_portlet/edit&lt;/value><br />        &lt;/init-param><br />        &lt;init-param><br />            &lt;name>HelpPage&lt;/name><br />            &lt;value>/portlet_action/sample_struts_portlet/help&lt;/value><br />        &lt;/init-param><br />        &lt;init-param><br />            &lt;name>ViewPage&lt;/name><br />            &lt;value>/portlet_action/sample_struts_portlet/view&lt;/value><br />        &lt;/init-param><br /><br /><br />        &lt;expiration-cache>0&lt;/expiration-cache><br /><br />       &lt;!-- 定义该Portlet 所支持的功能，体现在每个Portlet 的展现模式 --><br />        &lt;supports><br />            &lt;mime-type>text/html&lt;/mime-type><br />            &lt;portlet-mode>edit&lt;/portlet-mode><br />            &lt;portlet-mode>help&lt;/portlet-mode><br />        &lt;/supports><br /><br /><br />        &lt;portlet-info><br />            &lt;title>Sample Struts Portlet&lt;/title><br />            &lt;short-title>Sample Struts Portlet&lt;/short-title><br />            &lt;keywords>Sample Struts Portlet&lt;/keywords><br />        &lt;/portlet-info><br /><br />        &lt;!-- 指明对该Portlet 可能拥有权限的角色，该角色定义决定了liferay-portlet.xml 所配置的角色名  --><br />        &lt;security-role-ref><br />            &lt;role-name>administrator&lt;/role-name><br />        &lt;/security-role-ref><br />        &lt;security-role-ref><br />            &lt;role-name>guest&lt;/role-name><br />        &lt;/security-role-ref><br />        &lt;security-role-ref><br />            &lt;role-name>power-user&lt;/role-name><br />        &lt;/security-role-ref><br />        &lt;security-role-ref><br />            &lt;role-name>user&lt;/role-name><br />        &lt;/security-role-ref><br />    &lt;/portlet><br />&lt;/portlet-app><br /><br />效果：定义了Portlet 的基本信息，展现方式，以及对该Portlet 可能分配权限的用户角色。<br /><br /><br />（4）struts-config.xml （该配置文件为Struts 的配置文件，并非Liferay 专用）<br />&lt;struts-config><br /><br />    &lt;!-- Forms Beans --><br />    &lt;form-beans><br />        &lt;form-bean name="subscribeForm" type="com.sample.struts.struts.form.SubscribeForm" /><br />        &lt;form-bean name="unsubscribeForm" type="com.sample.struts.struts.form.UnsubscribeForm" /><br />        &lt;form-bean name="uploadForm" type="com.sample.struts.struts.form.UploadForm" /><br />    &lt;/form-beans><br /><br />    &lt;!-- Action Mappings --><br /><br />    &lt;action-mappings><br /><br />        &lt;!-- Sample Struts --><br /><br />        &lt;action path="/sample_struts_portlet/edit" forward="portlet.sample_struts_portlet.edit" /><br /><br />        &lt;action path="/sample_struts_portlet/help" forward="portlet.sample_struts_portlet.help" /><br /><br />        &lt;action path="/sample_struts_portlet/subscribe/action" type="com.sample.struts.struts.action.SubscribeAction" name="subscribeForm" scope="session" validate="true" input="portlet.sample_struts_portlet.subscribe"><br />            &lt;forward name="/sample_struts_portlet/subscribe_success" path="/portlet_action/sample_struts_portlet/subscribe_success" redirect="true" /><br />        &lt;/action><br /><br />            &lt;!-- <br />            ……<br />            该处省略的雷同的设置代码 <br />             ……<br />            --><br /><br />    &lt;!-- Custom Request Processor --><br /><br />    &lt;controller processorClass="org.apache.portals.bridges.struts.PortletTilesRequestProcessor" /><br /><br />    &lt;!-- Message Resources --><br /><br />    &lt;message-resources parameter="content.test.Language" /><br /><br />    &lt;!-- Tiles Plugin --><br /><br />    &lt;plug-in className="org.apache.struts.tiles.TilesPlugin" ><br />        &lt;set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /><br />        &lt;set-property property="moduleAware" value="true" /><br />        &lt;set-property property="definitions-parser-validate" value="true" /><br />    &lt;/plug-in><br /><br />    &lt;!-- Validator Plugin --><br /><br />    &lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"><br />        &lt;set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /><br />    &lt;/plug-in><br />&lt;/struts-config><br />效果：此处可与其它基于Struts 应用开发同样配置，与Liferay 相互独立。<br /><br /><br />（5）tiles-defs.xml （该配置文件是利用Tile 进行页面的布局管理，并非Liferay 专用）<br /><br />&lt;tiles-definitions><br /><br />    &lt;!-- 关于页面的布局定义，表示当请求的Url为 portlet.sample_struts_portlet 则以路径path参数指定的 /html/portlet/sample_struts_portlet/template.jsp 页面进行响应--><br />    &lt;definition name="portlet.sample_struts_portlet" path="/html/portlet/sample_struts_portlet/template.jsp" /><br />    &lt;!-- 关于页面的布局定义，表示名为 portlet.sample_struts_portlet.edit Url 的页面嵌套页面 /portlet/sample_struts_portlet/edit.jsp --><br />    &lt;definition name="portlet.sample_struts_portlet.edit" extends="portlet.sample_struts_portlet"><br />        &lt;put name="portlet_content" value="/portlet/sample_struts_portlet/edit.jsp" /><br />    &lt;/definition><br />    <br />    &lt;!-- <br />            ……<br />            该处省略的雷同的设置代码 <br />             ……<br />      --><br />    <br />&lt;tiles-definitions><br />   <br />效果：此处可与其它基于Tiles 应用开发同样配置，与Liferay 相互独立。<br /><br /><br />（6）web.xml （该配置文件为Tomcat 的应用配置文件，并非Liferay 专用）<br />&lt;web-app><br />    &lt;!-- 注意：此处的display-name与portlet.xml 中的display-name 含义不同，此处仅标识在Tomcat 下的应用编写此不得与其它Portlet 和发布的其他应用标识重名 --><br />    &lt;display-name>sample-struts-portlet&lt;/display-name><br /><br />    &lt;context-param><br />        &lt;param-name>company_id&lt;/param-name><br />        &lt;param-value>liferay.com&lt;/param-value><br />    &lt;/context-param><br /><br />    &lt;listener><br />        &lt;listener-class>com.liferay.portal.kernel.servlet.PortletContextListener&lt;/listener-class><br />    &lt;/listener><br /><br />    &lt;servlet><br />        &lt;servlet-name>sample_struts_portlet&lt;/servlet-name><br />        &lt;servlet-class>com.liferay.portal.kernel.servlet.PortletServlet&lt;/servlet-class><br />        &lt;init-param><br />            &lt;param-name>portlet-class&lt;/param-name><br />            &lt;param-value>org.apache.portals.bridges.struts.StrutsPortlet&lt;/param-value><br />        &lt;/init-param><br />        &lt;load-on-startup>0&lt;/load-on-startup><br />    &lt;/servlet><br />    &lt;servlet><br />        &lt;servlet-name>PortletActionServlet&lt;/servlet-name><br />        &lt;servlet-class>com.liferay.util.apache.bridges.struts.LiferayPortletServlet&lt;/servlet-class><br />        &lt;init-param><br />            &lt;param-name>config&lt;/param-name><br />            &lt;param-value>/WEB-INF/struts-config.xml&lt;/param-value><br />        &lt;/init-param><br />        &lt;load-on-startup>1&lt;/load-on-startup><br />    &lt;/servlet><br />    &lt;servlet><br />        &lt;servlet-name>TestSessionServlet&lt;/servlet-name><br />        &lt;servlet-class>com.sample.struts.servlet.TestSessionServlet&lt;/servlet-class><br />        &lt;load-on-startup>2&lt;/load-on-startup><br />    &lt;/servlet><br /><br />    &lt;servlet-mapping><br />        &lt;servlet-name>sample_struts_portlet&lt;/servlet-name><br />        &lt;url-pattern>/sample_struts_portlet/*&lt;/url-pattern><br />    &lt;/servlet-mapping><br />    &lt;servlet-mapping><br />        &lt;servlet-name>PortletActionServlet&lt;/servlet-name><br />        &lt;url-pattern>/portlet_action/*&lt;/url-pattern><br />    &lt;/servlet-mapping><br />    &lt;servlet-mapping><br />        &lt;servlet-name>TestSessionServlet&lt;/servlet-name><br />        &lt;url-pattern>/test_session/*&lt;/url-pattern><br />    &lt;/servlet-mapping><br /><br />    &lt;taglib><br />        &lt;taglib-uri>http://java.sun.com/portlet&lt;/taglib-uri><br />        &lt;taglib-location>/WEB-INF/tld/liferay-portlet.tld&lt;/taglib-location><br />    &lt;/taglib><br />    &lt;taglib><br />        &lt;taglib-uri>http://struts.apache.org/tags-bean&lt;/taglib-uri><br />        &lt;taglib-location>/WEB-INF/tld/struts-bean.tld&lt;/taglib-location><br />    &lt;/taglib><br />    &lt;taglib><br />        &lt;taglib-uri>http://portals.apache.org/bridges/struts/tags-portlet-html&lt;/taglib-uri><br />        &lt;taglib-location>/WEB-INF/tld/struts-portlet-html.tld&lt;/taglib-location><br />    &lt;/taglib><br />    &lt;taglib><br />        &lt;taglib-uri>http://struts.apache.org/tags-logic&lt;/taglib-uri><br />        &lt;taglib-location>/WEB-INF/tld/struts-logic.tld&lt;/taglib-location><br />    &lt;/taglib><br />    &lt;taglib><br />        &lt;taglib-uri>http://struts.apache.org/tags-nested&lt;/taglib-uri><br />        &lt;taglib-location>/WEB-INF/tld/struts-nested.tld&lt;/taglib-location><br />    &lt;/taglib><br />    &lt;taglib><br />        &lt;taglib-uri>http://struts.apache.org/tags-tiles&lt;/taglib-uri><br />        &lt;taglib-location>/WEB-INF/tld/struts-tiles.tld&lt;/taglib-location><br />    &lt;/taglib><br />&lt;/web-app>
          <br/>
          <span style="color:red;">
            <a href="http://xuefeinanguo.javaeye.com/blog/179145#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 13:43:05 +0800</pubDate>
        <link>http://xuefeinanguo.javaeye.com/blog/179145</link>
        <guid>http://xuefeinanguo.javaeye.com/blog/179145</guid>
      </item>
  </channel>
</rss>