Pluto2.0.1第一個例子

apache上2.0的開發文檔很少,看了前人寫的2.0的開發示例,以及pluto2.0.1自帶的例子,完成了第一個開發例子。


相關參考資料:

IBM上的例子,以及 pluto2.0.1自帶的pluto-testsuite;


第一步:

  首先配置Eclipse中的tomcat:

   注意點: 在server窗口配置中, Server Locations 中選擇 Use Tomcat Installation,Deploy Path選擇 ${TOMCAT_HOME}\webapps,必須設定 Deploy Path 爲 Tomcat 安裝目錄下的 webapps 目錄,否則使用 Eclipse 啓動 Tomcat 後,Pluto 不能加載進來。(詳見IBM例子的tomcat配置說明)。


第二步:創建portlet應用:

1. 首先在Eclipse中,建立一個Dynamic Web Project

    -- 注意創建Project時候,“dynamic web module version”:選用的versin,必須要和自己配置的tomcat版本相適應。自己在開發的時候,爲了調整tomcat,有時候用了tomcat5.5,可是工程配置不進來,原因就是在創建工程的時候選擇了2.5版本,而tomcat5.5只支持2.4的版本


2. 在 META-INF 下新建 context.xml 文件

 

<Context crossContext="true" />

 

 該文件爲 Tomcat 的特有配置文件,根據 Pluto 的要求,該 Web 工程的上下文應該可以被其它 JavaEE 程序訪問,所以 crossContext 參數設置爲 true。


3. 在 WEB-INF 下新建 portlet.xml 文件

 

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app
    xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
            http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
    version="2.0">
   <!-- 在該位置填寫portlet描述內容,在後面開發好的portlet要加入進來 -->
</portlet-app>
 

 

4. 新增Java類:

   在IBM的說明中,是實現了 javax.portlet.Portlet 和 javax.portlet.ResourceServingPortlet 接口,在新下載的pluto test-suite中,是繼承了GenericPortlet

 

import javax.portlet.GenericPortlet;

public class TestPortlet extends GenericPortlet {
 ...

    public void serveResource(ResourceRequest request, ResourceResponse response)
            throws PortletException, IOException {

        getPortletContext().getRequestDispatcher("自己的頁面").include(request, response);
        
   }


    @Override    
    public void doView(RenderRequest request, RenderResponse response)
    throws PortletException, IOException {

        PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher(顯示的頁面);
  
        dispatcher.include(request, response);
    
   }

}
 

 

在這個類中的實現也和IBM的說明不同

 

5. 增加2個頁面:

    portlet 呈現階段所顯示的 jsp 文件 TestPortletView.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<%@taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0"%>
<portlet:defineObjects />
<table>
    <tr>
        <td><h1>Test portlet page.</h1></td>
    </tr>
    <tr>
        <td><a href="<portlet:resourceURL/>">Click me to request Resource URL</a></td>
    </tr>
</table>
 

 

 portlet 資源服務所請求的 jsp 文件 TestPortletResource.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<%@taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0"%>
<portlet:defineObjects />
<table>
    <tr>
        <td><h1>Test portlet resource page.</h1></td>
    </tr>
</table>
 

 

6.編輯 portlet.xml 文件, 爲 TestPortlet 增加一個 portlet 定義片斷,該 TestPortlet 僅支持 View 模式

 

<portlet>
    <portlet-name>TestPortlet</portlet-name>
    <display-name>TestPortlet</display-name>
    <portlet-class>com.ibm.samples.jsr286.portlets.TestPortlet</portlet-class>
    <supports>
        <mime-type>text/html</mime-type>
        <portlet-mode>VIEW</portlet-mode>
    </supports>
    <portlet-info>
        <title>TestPortlet</title>
    </portlet-info>
</portlet>

 

 

7. 編輯 web.xml 文件,增加 Pluto 所需的 servlet 定義及映射。讀者請注意,該定義爲 Pluto 2.0 Portlet 容器所需,不屬於 JSR 286 標準的要求。

 

<servlet>
    <servlet-name>TestPortlet</servlet-name>
    <servlet-class>
        <!-- IBM例子中的類: org.apache.pluto.core.PortletServlet -->
        <!-- 在pluto2.0.1 test-suite中的類:-->
        org.apache.pluto.container.driver.PortletServlet
    </servlet-class>
    <init-param>
        <param-name>portlet-name</param-name>
        <param-value>TestPortlet</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>TestPortlet</servlet-name>
    <url-pattern>/PlutoInvoker/TestPortlet</url-pattern>
</servlet-mapping>
 

8. 將工程加到server中,運行server,餘下的部分,看一下IBM示例中的說明操作即可

 

 

在 Eclipse 的 Servers 視圖中,右鍵單擊 Tomcat 服務器,點擊 Add and Remove Projects,在彈出的對話框中將 jsr286portlets 項目添加到右側欄目中,點擊 Finish 確認,如圖13:


圖 13. 部署項目到服務器 
部署項目到服務器 

在 Servers 視圖中啓動服務器,Console 視圖中輸出 Tomcat 啓動信息。

瀏覽器中輸入相應 url 訪問 pluto 的 portal 頁面,登錄,點擊 Pluto Admin 導航欄,如圖14:


圖 14. Pluto 管理界面 
Pluto 管理界面 

使用該工具新建一個頁面,如 "Test JSR 286 Portlet Page"。導航欄中馬上新增一項 "Test JSR 286 Portlet Page",點擊進入該頁面可以見到目前該頁面沒有內容。

選擇 jsr286portlets 應用程序中的 Portlet TestPortlet,選擇上一步新建的頁面,點擊 Add Portlet 按鈕,將 TestPortlet 佈局到 "Test JSR 286 Portlet Page"頁面。如圖 15:


圖 15. 佈局 Portlet 到 Portal 頁面 
佈局 Portlet 到 Portal 頁面 


進入"Test JSR 286 Portlet Page"頁面,該頁面新增了一個 Portlet TestPortlet,如圖16:


圖 16. TestPortlet 界面 
TestPortlet 界面 

注意到上圖 portlet 的標題顯示爲 null, 這是由於 pluto 2.0 目前處於開發階段,存在一些 bug,讀者可不必理會。

點擊超鏈接,進入所請求的資源頁面,如圖 17:


圖 17. TestPortlet 資源界面 
TestPortlet 資源界面 

觀察此頁面,發現此頁面只顯示了 TestPortletResource.jsp 的內容,未經過 Portal 容器的修飾, 和直接請求一個 Servlet 或者 JSP 頁面的效果是一樣的。這就是 JSR 286 Portlet 資源服務的主要特性。對照此示例,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章