隨筆-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 閱讀(10158) 評論(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  回復  更多評論
            
          主站蜘蛛池模板: 左贡县| 武安市| 五华县| 灵宝市| 佛学| 思南县| 德江县| 巴东县| 尼勒克县| 甘南县| 保亭| 达州市| 林甸县| 芜湖县| 富阳市| 霸州市| 丰都县| 阳东县| 白朗县| 汾西县| 贵港市| 道真| 棋牌| 鄂伦春自治旗| 南岸区| 富平县| 龙陵县| 祥云县| 八宿县| 海丰县| 宜良县| 田林县| 正阳县| 无棣县| 获嘉县| 文成县| 海兴县| 洪雅县| 高邮市| 门源| 会泽县|