小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Jetspeed JetExpress Tutorial Portal 筆記4 -- po...

 zengdongping 2008-01-18

Jetspeed JetExpress Tutorial Portal 筆記4 -- portlets開發(fā)

Category: Jetspeed, Author: admin, Popularity: 4% [?]

Jetspeed JetExpress Tutorial Portal筆記4

-- portlets開發(fā)

0. 前言
本文主要介紹基于Java Portlet API的Portlet開發(fā)。
包括的內(nèi)容:

  • Eclipse集成
  • Portlet編寫,portlet.xml配置
  • 高級Portlet編程

說明:本系列文章并不是Jetspeed Tutorial JetExpress的完全翻譯,關(guān)注點是其流程和其中容易出錯的地方,及做Jetspeed二次開發(fā)比較關(guān)注的Jetspeed本身涉及的內(nèi)容,因此原文中的圖,只要不涉及Jetspeed原理及架構(gòu)等的,都不會貼圖。并且內(nèi)容上可能并不完全一樣,會把作者自己的一些心得和注意事項隨時加入到需要的地方。

1. Eclipse集成
使用maven生成eclipse項目文件,導(dǎo)入到eclipse中即可。maven能夠為eclipse生成project文件和classpath文件,并且能夠自動添加依賴關(guān)系(主要指編譯時依賴的jar)。

1.1 為jetexpress項目創(chuàng)建eclipse項目:
# Linux 
cd /JetspeedTraining/workspace/jetexpress
mvn eclipse:eclipse
cp portal/.classpath .
cp portal/.project .
# Windows
cd \JetspeedTraining\workspace\jetexpress
mvn eclipse:eclipse
copy portal\.classpath .
copy portal\.project .

1.2 為express-demo項目創(chuàng)建eclipse項目:
# Linux 
cd /JetspeedTraining/workspace/jetexpress/applications/express-demo
mvn eclipse:eclipse
# Windows
cd \JetspeedTraining\workspace\jetexpress\applications\express-demo
mvn eclipse:eclipse

1.3 eclipse項目說明

同樣為express-demo portlet應(yīng)用項目創(chuàng)建eclipse項目。因為eclipse不支持maven形式的多項目(基于pom的父子項目),所以為每個maven管理的項目建立獨立的eclipse項目。

1.4 設(shè)置eclipse項目
創(chuàng)建好之后,在eclipse中導(dǎo)入即可(類型為workspace中已存在項目)。
導(dǎo)入之后為eclipse添加一個變量M2_REPO,指向C:/JetspeedTraining/maven/repository(相關(guān)知識請參閱maven文檔)。
設(shè)置好之后eclipse會自動重新編譯項目(編譯設(shè)置發(fā)生改變時)。
如果喜歡的話,可以安裝eclipse的SVN插件,這樣就可以在eclipse直接訪問jetspeed的SVN庫了(相關(guān)知識請另行參閱相關(guān)文檔)。

2. Portlet編寫及配置

2.1 編寫Hello World Portlet
在express-demo工程中,為com.bluesunrise.portal.portlets.tutorial包添加BonjourWorld類,繼承javax.portlet.GenericPortlet類。

注:這里javax.portlet.GenericPortlet類即portlet API。

為BonjourWorld類增加對doEdit、doHelp、doView三個方法的實現(xiàn)。這里的每個方法都關(guān)聯(lián)了一個portlet模式(portlet mode),即對編輯按鈕點擊、幫助按鈕點擊和瀏覽portlet時的處理方法。添加一個簡單的輸出如下:
    protected void doView(RenderRequest request, RenderResponse response) throws

PortletException, IOException
    {
        response.setContentType(”text/html”);
        response.getWriter().println(”<b>Bonjour: View Mode</b>”);
    }
doEdit和doHelp處理類似。
2.2 配置portlet.xml

寫好了之后,我們來編輯portlet.xml文件,為我們的portlet創(chuàng)建一個portlet描述條目。portlet.xml文件在工程的WEB-INF目錄下,與web.xml同級目錄。注意<supports>里面定義的就是我們剛剛寫好的幾個方法。
    <portlet>
        <description>Bonjour Monde Portlet</description>  
        <portlet-name>BonjourMonde</portlet-name> 
        <display-name>Bonjour Monde</display-name>
        <portlet-class>com.bluesunrise.portal.portlets.tutorial.BonjourWorld</portlet-class> 
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>VIEW</portlet-mode>
            <portlet-mode>EDIT</portlet-mode>
            <portlet-mode>HELP</portlet-mode>           
        </supports>
        <supported-locale>en</supported-locale>       
     <portlet-info>
        <title>Bonjour Monde</title>
          <short-title>Bonjour</short-title>
          <keywords>tutorial,bonjour,hello</keywords>
       </portlet-info>
    </portlet>
2.3 配置頁面
2.3.1 創(chuàng)建portal site
創(chuàng)建一個頁面來放剛剛創(chuàng)建的portlet。在jetexpress工程(/JetspeedTraining/workspace/jetexpress)里,添加一個目錄portal/src/webapp/WEB-INF/pages/tutorial/,把它作為我們創(chuàng)建的portal site的根目錄(portal site就是具有樹狀結(jié)構(gòu)的頁面)。

2.3.2 編寫folder.metadata文件來描述這個portal資源
<?xml version=”1.0″ encoding=”UTF-8″?>
<folder>
  <title >Tutorial</title> 
  <metadata name=”title” xml:lang=”fr”>Autodidacte</metadata>

  <security-constraints>
    <security-constraints-ref>public-edit</security-constraints-ref>
  </security-constraints>
</folder>

2.3.3 創(chuàng)建默認(rèn)頁面degault-page.psml
<page>
  <defaults layout-decorator=”express-page”
            portlet-decorator=”express-portlet”
            skin=”express”/>
  <title>JetExpress Tutorials</title>
  <short-title>Tutorials</short-title>
  <fragment id=”tutorial-100″ type=”layout” name=”jetspeed-layouts::VelocityTwoColumns”> 
   <fragment id=”express-101″ type=”portlet” name=”express-demo::BonjourMonde”/>
  </fragment>
</page> 
為portlet窗口添加新portlet的引用

2.3.4 部署新的portlet和新的頁面
# Linux 
cd /JetspeedTraining/workspace/jetexpress
ant
cd applications/express-demo
mvn
cp target/express-demo-1.0.war /JetspeedTraining/tomcat-express/webapps/express-demo.war

# Windows
cd \JetspeedTraining\workspace\jetexpress
ant
cd applications\express-demo
mvn
copy target\express-demo-1.0.war \JetspeedTraining\tomcat-express\webapps\express-demo.war

注:命令的含義在筆記3中有相關(guān)描述
ant 調(diào)用默認(rèn)target,拷貝修改的頁面到tomcat
mvn 默認(rèn)為install,生成war文件
cp …  拷貝war文件到tomcat中(熱部署)

3 高級Portlet編程
直接集成javax.portlet.GenericPortlet的開發(fā)方式雖然可行,但是無論從哪個角度說都不是最好的方式,因此實際應(yīng)用中,這樣的應(yīng)用很少(除非應(yīng)用本身及其簡單)。
對于大多數(shù)Jetspeed的二次開發(fā)者來說,都希望能用自己最熟悉的技術(shù)來開發(fā)portlets,而Jetspeed剛好提供了這樣的可能。

3.1 Apache Portals Bridges項目介紹
Portals Bridges項目提供了符合JSR-168標(biāo)準(zhǔn)的portlet的多種開發(fā)方式,為開發(fā)者提供了使用自己熟悉的技術(shù)開發(fā)portlet的能力,開發(fā)者可以使用Struts、JSF,甚至PHP、Perl、Velocity等等進(jìn)行portlet的開發(fā)。

3.2 基于Portals Bridges的開發(fā)
本小節(jié)已經(jīng)是對原文的擴(kuò)展,具體細(xì)節(jié)本文不再詳述,筆者會在其他文章中描述。

4. 總結(jié)
無論是基于portlet API的開發(fā),還是基于Portals Bridges的開發(fā),流程都比較簡單,具體的應(yīng)用還需要依賴具體的環(huán)境。

對于目前涉及到的內(nèi)容來說,還缺少portlet的測試內(nèi)容,portlet的測試類似于servlet的測試,需要依賴于portlet容器,而通過部署到Jetspeed中進(jìn)行集成測試的話又比較浪費時間和精力,畢竟不能只修改一點代碼就部署一次,因此需要探索更高效和可行的測試方法。

下一步將研究如果通過Portals Bridges進(jìn)行開發(fā)及portlet的測試工作。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多