随笔-86  评论-767  文章-3  trackbacks-3

第三部分 Liferay Portal部署

本部分主要内容

Portlet部署  ANT  管理Portlet

第四章 部署自己的Portlet

Liferay PortalTomcat5.0集成在一起,从本质上讲,liferay-portal-pro-3.6.0-tomcat.zip是一个Tomcat压缩包,只是其中将liferay作为默认应用,并将跟Portlet有关的操作都交给liferay应用处理而已。因此,Liferay Portal支持所有针对Tomcat5.0的部署方式,包括:手动部署、Ant部署,并且支持热部署。

第一节  手动部署

手动部署可以采用拷贝文件夹、war部署、编写部署文件三种方式:

、拷贝文件夹:与单纯的Tomcat一样,我们可以将{APP_HOME}\webapp目录拷贝到{PORTAL_HOME}\webapps\下,该webapp目录名为TestPortal。启动Liferay Portal(双击{PORTAL_HOME}\bin\startup.bat)即可。

war部署:或者将{APP_HOME}\webapp打包成TestPortal.war,拷贝war{PORTAL_HOME}\webapps\下,启动Liferay Portal,让Tomcat自动解压。在命令行模式下切换到{APP_HOME}\webapp目录,执行 jar cvf TestPortal.war *

、编写部署文件:

{PORTAL_HOME}\conf\Catalina\localhost目录下,创建TestPortal.xml文件,内容如下:

部署成功后,登录Liferay Portal,可以在桌面底部的下拉列表中看到HelloWorldPortletHelloJSPPortlet两个Portlet。将它们添加到桌面中。
图4.1-2.jpg图4.1-3.jpg

第二节  Ant自动部署

确保之前已经安装Apache Ant,并正确添加ANT_HOME到系统环境变量。

、拷贝之前打包的TestPortlet.war{APP_HOME}/deploy目录;

、从http://prdownloads.sourceforge.net/lportal/Portlet-deployer-3.6.0.xml 下载Portlet-deployer-3.6.0.xml {APP_HOME}\deploy,改名为build.xml以便Ant自动加载;

、确保JDK1.4.2Ant 1.6安装成功,并配置到系统环境变量;

、确保Tomcat或者其他服务器已经正确安装,或者Liferay Portal正常安装。

编辑build.xml,使其只想你的应用服务器或者Servlet容器。比如,如果你安装JBoss+Jetty/opt/liferay目录,那么编辑build.xml,确保只有JBoss+Jetty部分没有被注释,修改app.server属性为/opt/liferay

Build.xml默认是开启JBoss+Jetty部分,本文采用的是Tomcat集成包,所以将JBoss+Jetty部分注释掉,开始Tomcat部分。修改app.server.dir属性,指向{PORTAL_HOME}。如下图:
图4.2-1.jpg

、命令行切换到到{APP_HOME}/deploy目录,执行 ant deploy ,系统会自动将TestPortal.war解压,必要时修改web.xmlportlet.xml等部署文件,将解压后的TestPortal文件夹拷贝到{PORTAL_HOME}\webapps目录下。

启动Liferay Portal之前,建议先确认修改后的web.xmlportlet.xml等部署文件是否正确。

第三节  加入Liferay Portal自有列表

之前我们提到过,Liferay Portal集成了78个默认的Portlet应用。这些应用都通过{PORTAL_HOME}\liferay\WEB-INF\目录下的portlet.xmlliferay-portlet.xmlliferay-display.xml描述。我们只要更改这些描述文件,就可以将我们自己的应用加入到Liferay PortalPortlet列表中了,效果跟手动部署和Ant自动部署一样。

、拷贝{APP_HOME}\webapp目录的内容到{PORTAL_HOME}\liferay\html\Portlet目录下,更改文件夹名称为TestPortal

、将TestPortal\WEB-INF\classes文件夹剪切到{PORTAL_HOME}\liferay\WEB-INF目录下。

、将TestPortal\WEB-INF\web.xml的内容合并到{PORTAL_HOME}\liferay\WEB-INF\web.xml中。删除TestPortal\WEB-INF\web.xml

、将TestPortal\WEB-INF\Portlet.xml中关于HelloWorldPortletHelloJSPPortlet的内容合并到{PORTAL_HOME}\liferay\WEB-INF\portlet.xml中。删除TestPortal\WEB-INF\ portlet.xml

、将TestPortal\WEB-INF\liferay-portlet.xml中关于HelloWorldPortletHelloJSPPortlet的内容合并到{PORTAL_HOME}\liferay\WEB-INF\liferay-portlet.xml中。删除TestPortal\WEB-INF\liferay-portlet.xml

、将TestPortal\WEB-INF\liferay-display.xml中关于HelloWorldPortletHelloJSPPortlet的内容合并到{PORTAL_HOME}\liferay\WEB-INF\liferay- display.xml中。删除TestPortal\WEB-INF\ liferay- display.xml

这个方法比较复杂,而且不容易扩展和调试,通常不建议采用。

第四节  普通Java Web应用转化为Portlet应用

随着开发的深入,我们希望能够将原来的Java Web应用迁移到Liferay Portal,构建真正的企业门户。Liferay Portal灵活的二次开发机制,允许用户将各种各样的内容集成到Portal平台上来,消除信息孤岛。将一个Java Web应用转化为Portlet应用的步骤如下:

、撰写扩展自GenericPortletPortletJSP页面。这个Portlet可以使用PrintWriter输出或者调用JSP页面输出方式。通常,如果Java Web应用是采用MVC三层模式,那么只需要更改View层就可以了。

、修改web.xml,增加2.6.1所述的Portlet监听器和Portlet标签库,增加针对上步骤所写的servletservlet映射。

      

              yourPortlet

              com.liferay.portal.servlet.PortletServlet

             

                     Portlet-class

                     full.name.of.yourPortlet

             

              0

      

      

              yourPortlet

              /yourPortlet/*

      

、创建portlet.xml,增加相应的Portlet定义信息,规范参考2.6.2

、创建liferay-portlet.xml,增加相应的Portlet定义信息,规范参考2.6.3

、创建liferay-display.xml,增加相应的Portlet类别定义信息,规范参考2.6.4

、拷贝portlet.jarliferay-Portlet.tld到当前应用。其中,portlet.jarPortlet API包,作用类似servlet-api.jar,位于{PORTAL_HOME}\common\lib\ext\liferay-portlet.tldLiferay Portal提供的Portlet标签库。

、选择适当的部署方式,将修改后的Java Web应用部署到Portlet平台上。

第四部分 附录

本部分主要内容

资源网站 Portlet范例 参考资料 后序

第五章 相关资源

作为一个开源的门户产品,Liferay Portal已经比较成熟,有比较齐全的文档。随着应用的深入,开源免费的中文化文档也在陆续出现。

第一节 资源网站

Liferay Portal 官方网站:http://www.liferay.com 

Liferay Portal 中文网站:http://www.liferay.cn 

Liferay Portal 论坛:http://forums.liferay.com 

Tracker http://support.liferay.com 

邮件列表:http://sourceforge.net/mailarchive/forum.php?forum=lportal-development 

JavaLobby专题:http://www.javalobby.org/articles/liferay/

OSQS专题:http://cstsolaris.cst.nait.ab.ca/ist410/gerry/liferay/index.jsp 

Leonardsoko1专题:http://www.leonardsokol.com/liferay/

Developer专题:http://www.developer.com/java/web/article.php/10935_3372881_1

第二节  示例

Liferay Portal随程序包提供了丰富的documentation,其中的Portlet ExamplesPortal内置的Hello WorldIFrameCalendarMessage BoardsMail五个Portlet进行了比较详细的解说。启动Liferay Portal后,浏览这里:

http://localhost/web/guest/documentation/development/Portlet

另外,Liferay Portal还在官方网站上提供了Sample Layout TemplateSample PortletSample Themes供下载。其中,Sample Portlet包括Sample JSP PortletSample Struts PortletSample JSF SUN PortletSample JSF MyFaces Portlet。浏览这里:

http://localhost/web/guest/downloads/sample_Portlet


 

第六章参考资料

、文档

JSR168 PORLET标准手册汉化整理》                       作者:Jini

Portlet应用开发(JSR168)                                        作者:Terry Lee

(原创翻译)Liferay-Portal架构》                   作者:eamoi

、网站

http://www.liferay.com

http://www.liferay.cn

 

后序

研究Liferay Portal属于半路出家。从开始到本文完成,俩月有余。作为一个开源的Portal产品,Liferay的确值得称许,虽然还有不少bug。在本文截稿的时候,Liferay Portal V3.6.1已经发版,新版本在拖拉PortletSpring远程传输和布局热部署方面有比较大的提升。本文不会就此终结,暂称V1.0,作为前段工作的总结。本文的用户策略部分参考了同事Kevin的文档,特此感谢。

PS:写文章真的很费脑筋。


posted on 2005-10-21 09:26 eamoi 阅读(10146) 评论(19)  编辑  收藏 所属分类: Java

评论:
# re: 【原创】Liferay Portal二次开发指南(11) 2005-12-18 21:25 | sunshineblue
很不错的文章呢
有空交流一下portal方面的东西  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2006-06-08 11:43 | ituser
按照以上的步骤,创建了TestPortal.

但一访问http://127.0.0.1:8080/TestPortal/HelloWorldPortal 出错了

提示:
java.lang.NullPointerException
com.liferay.portal.servlet.PortletServlet.service(PortletServlet.java:77)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

请问这是什么回事呢?  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2006-06-08 11:43 | ituser
按照以上的步骤,创建了TestPortal.

但一访问http://127.0.0.1:8080/TestPortal/HelloWorldPortal 出错了

提示:
java.lang.NullPointerException
com.liferay.portal.servlet.PortletServlet.service(PortletServlet.java:77)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

请问这是什么回事呢?  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2006-11-02 14:05 | 高薪招聘若干名Java Portal开发高级工程师
用友软件工程有限公司(http://www.use.com.cn)高薪招聘若干名Java Portal开发高级工程师。本文信息一周内有效。

职责:
1. 参与产品需求分析、定义。
2. 参与产品设计和实现。

技能要求:
熟悉Liferay,有1年以上Java Portal and Portlet开发经验。对Hibernate和structs熟悉的优先考虑

待遇
根据技能高低,至少8k

联系方式:
邮件 xujian@use.com.cn
电话 82373737-8016
联系人 徐先生

有意者给我发邮件吧。
  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-01-24 15:11 | rain_zhou
我的也是.到底怎么回事???
java.lang.NullPointerException
  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-01-24 15:11 | rain_zhou
我的也是.到底怎么回事???
java.lang.NullPointerException
  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-04-21 21:30 | mr.white
2007-4-21 13:19:08 org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class com.liferay.portal.servlet.PortletContextListener
java.lang.ClassNotFoundException: com.liferay.portal.servlet.PortletContextListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3677)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4187)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:608)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
2007-4-21 13:19:08 org.apache.catalina.core.StandardContext listenerStart  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-04-21 21:32 | mr.white
SEVERE: Error configuring application listener of class com.liferay.portal.servlet.PortletContextListener
java.lang.ClassNotFoundException: com.liferay.portal.servlet.PortletContextListener

在运行HelloJSPPortlet 的例子的时候,监听老是启动不起来,好象找不到该类,加载不上,请各位高手指点一下,谢谢了  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-04-21 21:33 | mr.white
SEVERE: Error configuring application listener of class com.liferay.portal.servlet.PortletContextListener
java.lang.ClassNotFoundException: com.liferay.portal.servlet.PortletContextListener
在运行HelloWorldPortlet 的例子的时候,监听老是启动不起来,好象找不到该类,加载不上,请各位高手指点一下,谢谢了  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-05-22 14:42 | hello
@mr.white

我也碰到同样问题了。  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-05-22 16:54 | hello
解决了。注意下版本。如果是4.2的。要将com.liferay.portal.servlet.PortletContextListener 改成
com.liferay.portal.kernel.servlet.PortletServlet,
最后将portal-kernel.jar 导入
就可以了。输入http://localhost:8080/TestPortal/view.jsp就能看到结果  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-05-22 17:00 | hello
发错了,应该是com.liferay.portal.servlet.PortletContextListener==》com.liferay.portal.kernel.servlet.PortletContextListener

com.liferay.portal.servlet.PortletServlet==>
com.liferay.portal.kernel.servlet.PortletServlet

两个地方  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) [未登录] 2007-07-31 14:17 | 飞马
我在liferay4.2.2按指南的操作,能够加载portlet上下文,但登录进portal后,无法通过add content将portlet加入页面,在portlet列表中没有新建的portlet;但是在admin portlet中可以看到新建的portlet,但此处无法加入页面。
如何才能把新建的portlet加入页面呢?谢谢  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) [未登录] 2007-08-20 21:53 | test
java.lang.NullPointerException
com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:83)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2007-08-23 11:10 | 朱XX
我在liferay4.2.2按指南的操作,能够加载portlet上下文,但登录进portal后,无法通过add content将portlet加入页面,在portlet列表中没有新建的portlet;但是在admin portlet中可以看到新建的portlet,但此处无法加入页面。
如何才能把新建的portlet加入页面呢?谢谢


我也遇到同样的问题,请教高手指点啊
QQ 81009382 谢谢  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2008-05-13 17:38 | taihua
深圳泰华天成科技有限公司(www.taihuatech.com.cn)成立于2007年,专注为大中型企业提供整体解决方案。公司拥有门户、工作流、ESB等系列产品线,并已在实际项目中得到不同程度应用。目前公司急缺善于跟踪和应用JAVA流行框架,对门户(如liferay)、ESB、工作流方面有经验的技术人才加盟共同创业。
如果有兴趣,或者周遍朋友有类似经验,真诚请您推荐加盟我们。

简历投放地址:taihuatech@163.com
联系方式:fasit-jlle @hotmail.com,QQ:8181740
谢谢您的关注。
  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2009-02-09 16:22 | wzhangb
关于Liferay 门户,大家可以联系大连Peter,他们是liferay中国唯一合作伙伴,我和peter 交流过,msn : eonpeter@gmail.com  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2009-11-06 12:17 | 大海之声
顶一下 !!!PETER人不错!  回复  更多评论
  
# re: 【原创】Liferay Portal二次开发指南(11) 2010-08-12 20:59 | hmf0786
中国大连Liferay服务

QQ:1417153858 (Liferay支持)
QQ:1410151582 (Liferay培训)
QQ:1492270185 (Liferay企业版)

24小时电话联系:
0411-84898263 (总机)
15601156692 (市场部)

Liferay中国服务大连QQ群: 49845872  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: