日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

hello world: websphere portal v5 最簡(jiǎn)單的 portlet:第 1 部分,創(chuàng)建和部署

 smoking_boy 2005-08-24

引言

經(jīng)常有人問我這個(gè)問題:“如果從頭開始的話,人們能夠通過 WebSphere Portal Version 5 創(chuàng)建的最簡(jiǎn)單的 portlet是什么?”。固定不變的答案是“hello world”。本文將花較長(zhǎng)的篇幅來詳細(xì)回答這個(gè)問題。我準(zhǔn)備帶您了解如何創(chuàng)建 WebSphere PortalV5 的最簡(jiǎn)單的 protlet。您將從一些 Java 代碼開始,接著對(duì)其進(jìn)行編譯,然后打包。接下來,您將創(chuàng)建把有關(guān) portlet的信息告訴應(yīng)用程序服務(wù)器和門戶網(wǎng)站所需的部署描述符。最后,我們將其打包在一起,并將新的 portlet 部署到門戶網(wǎng)站內(nèi)。

創(chuàng)建目錄結(jié)構(gòu)

首先創(chuàng)建一個(gè)目錄結(jié)構(gòu),您將在這個(gè)目錄結(jié)構(gòu)中創(chuàng)建 portlet。下面是我將用于這個(gè)簡(jiǎn)單的 portlet 的目錄結(jié)構(gòu):

  • helloWorld\com\ibm\portlets\sample -- 存放源代碼的位置
  • helloWorld\WEB-INF -- 部署描述符所在的位置
  • helloWorld\WEB-INF\lib -- JAR 文件存放的位置

創(chuàng)建 Java文件

sample 目錄是您將存放 Java 源代碼的位置。在 sample 目錄中創(chuàng)建一個(gè)名為 HelloWorld.java 的文件,然后用您喜歡的文本編輯器打開該文件。下面是您需要輸入(或者復(fù)制、粘貼)到 HelloWorld.java 文件中的類:


package com.ibm.portlets.sample; 
 
//portlet APIs 
import org.apache.jetspeed.portlet.*; 
 
//Java stuff 
import java.io.*; 
 
public class HelloWorld extends PortletAdapter { 
 
  public void 
        service(PortletRequest 
        request, PortletResponse 
        response) 
    throws PortletException, 
        IOException { 
 
    PrintWriter writer = 
        response.getWriter(); 
    writer.println("
        hello, world"); 
  } 
}
                
      

編譯代碼

一旦您已經(jīng)創(chuàng)建好了源文件,就可以對(duì) Java 代碼進(jìn)行編譯了。在一個(gè)批處理文件中可以使用下面的腳本來編譯 portlet。您首先定義一些環(huán)境變量(例如,Java 主目錄的位置)。用 WebSphere Application Server 附帶的 JDK對(duì)此進(jìn)行編譯通常是一個(gè)好主意,因?yàn)檫@是您將要運(yùn)行應(yīng)用程序的環(huán)境。您還要設(shè)置 PATH 以便訪問 Java 編譯器。此外還需要將變量LIBPATH 設(shè)置為指向 WebSphere JAR 文件所在的目錄。

接下來,您為我們的編譯類路徑構(gòu)建一個(gè)名為 CP 的變量。CP變量可以構(gòu)建在一行上,但是為了說明所需的不同 JAR 文件,我們將其拆開分行顯示。然后,您調(diào)用 Java 編譯器來對(duì)代碼進(jìn)行編譯。這假定您位于helloWorld 目錄下。請(qǐng)將目錄路徑調(diào)整為適合安裝的路徑。



set JAVA_HOME=C:\WebSphere\AppServer\java 
set PATH=%JAVA_HOME%\bin 
set LIBPATH=C:\WebSphere\AppServer\lib 
set CP=. 
set CP=%CP%;%LIBPATH%\j2ee.jar 
set CP=%CP%;%LIBPATH%\dynacache.jar 
set CP=%CP%;C:\WebSphere\PortalServer\shared\app\portlet-api.jar 
 
javac -classpath %CP% com\ibm\portlets\sample\HelloWorld.java 

                

如果由于某些原因這不能編譯,您必須在往下繼續(xù)之前修正錯(cuò)誤。一些常見的錯(cuò)誤是:

  • 輸入錯(cuò)誤 -- 類名稱、路徑、變量名稱輸入錯(cuò)誤
  • 文件名稱 -- 文件名稱必須和類名稱匹配。在我們的例子中,文件名是 HelloWorld.java ,類名稱是 HelloWorld 。如果您已經(jīng)改變了一個(gè)名稱,另一個(gè)名稱也要改變。
  • 編輯器錯(cuò)誤 --確定編輯器確實(shí)將文件存儲(chǔ)為文本。像寫字板這樣的編輯器,不會(huì)將文件默認(rèn)存儲(chǔ)為文本。

創(chuàng)建 JAR 文件

在完成了 Java 源文件的編譯以后,您就需要在 WEB-INF\lib 目錄下創(chuàng)建一個(gè) JAR 文件。再次假設(shè)您位于 helloWorld 目錄下。如果您在 編譯代碼一節(jié)創(chuàng)建了一個(gè)批處理文件,就可以將這些語句作為該文件的一部分包含在其中。這取決于您已經(jīng)將 PATH 設(shè)置為指向 jar 程序。


set JAVA_HOME=C:\WebSphere\AppServer\java 
set PATH=%JAVA_HOME%\bin 
 
jar -cv0f .\WEB-INF\lib\HelloWorld.jar com/ibm/portlets/sample/*.class 

                

創(chuàng)建部署描述符

現(xiàn)在,您需要?jiǎng)?chuàng)建兩個(gè) XML 文件:

  • helloWorld/WEB-INF/web.xml — Web 部署描述符。
  • helloWorld/WEB-INF/portlet.xml — portlet 部署描述符。

web.xml— Web 部署描述符

Web 部署描述符是 WebSphere Portal 所需要的?,F(xiàn)在 Portlet 擴(kuò)展了 Servlet,所以需要使用 Web 部署描述符來聲明 Servlet(portlet)類。


<?xml version=
        "1.0" encoding=
        "UTF-8"?> 
<!DOCTYPE web-app 
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
  "http://java./dtd/web-app_2_3.dtd"> 
<web-app id="HelloWorldWebApp"> 
  <display-name>HelloWorldPortlet<
        /display-name> 
  <servlet id="Servlet_1"> 
    <servlet-name>HelloWorld<
        /servlet-name> 
    <servlet-class>com.ibm.portlets.sample.HelloWorld<
        /servlet-class> 
  </servlet> 
  <servlet-mapping id=
        "ServletMapping_1"> 
    <servlet-name>HelloWorld<
        /servlet-name> 
    <url-pattern>/HelloWorld/*<
        /url-pattern> 
  </servlet-mapping> 
</web-app>
                

portlet.xml— portlet 部署描述符

portlet 部署描述符向門戶網(wǎng)站定義 portlet。每個(gè) portlet 通過 portlet 元素的 href 屬性映射到 Web 部署描述符中定義的一個(gè) Servlet 上。以 粗體表示這些引用。portlet必須定義一個(gè)惟一的 id,每個(gè)具體的 portlet 都能引用該 id。每個(gè)具體的 portlet 使用 concrete-portlet 元素的 href 屬性的特定 id 來引用 portlet。以藍(lán)色表示這些引用。


<?xml version=
        "1.0" encoding=
        "UTF-8"?> 
<!DOCTYPE portlet-app-def 
  PUBLIC "-//IBM//DTD Portlet Application 1.1//EN" "portlet_1.1.dtd"> 
<portlet-app-def> 
  <portlet-app uid=
        "com.ibm.portlets.sample.HelloWorld.1" major-version="1"
        minor-version="0"> 
    <portlet-app-name>HelloWorld0Portlet<
        /portlet-app-name> 
 <portlet href=
        "WEB-INF/web.xml#Servlet_1"id="Portlet_1" major-verion="1"
 minor-verion="0"> 
      <portlet-name>HelloWorld<
        /portlet-name> 
      <cache> 
        <expires>0<
        /expires> 
        <shared>no<
        /shared> 
      </cache> 
      <allows> 
        <maximized/> 
        <minimized/> 
      </allows> 
      <supports> 
        <markup name=
        "html"> 
          <view/> 
        </markup> 
      </supports> 
    </portlet> 
  </portlet-app> 
  <concrete-portlet-app uid=
        "com.ibm.portlets.sample.HelloWorld.1.2"> 
    <portlet-app-name>Concrete HelloWorld<
        /portlet-app-name> 
    <context-param> 
      <param-name>Author<
        /param-name> 
      <param-value>tcat@us.ibm.com<
        /param-value> 
    </context-param> 
   <concrete-portlet 
        href="#Portlet_1">
      <portlet-name>HelloWorld<
        /portlet-name> 
      <default-locale>en<
        /default-locale> 
      <language locale=
        "en"> 
        <title>Hello World</title> 
        <title-short></title-short> 
        <description></description> 
        <keywords></keywords> 
      </language> 
    </concrete-portlet> 
  </concrete-portlet-app> 
</portlet-app-def>
                
      

創(chuàng)建這些 XML文件時(shí),許多地方會(huì)出錯(cuò)。只有在您試圖將 portlet 部署到門戶網(wǎng)站時(shí)才會(huì)發(fā)現(xiàn)這些錯(cuò)誤。這里有一些需要特別注意的地方:

  • 檢查每一個(gè) XML 元素,確保它們都有一個(gè)閉元素。
  • 檢查類名是否輸入錯(cuò)誤,對(duì)于本例來講,檢查您給類起的名稱是否是 HelloWorld 。
  • 確保 id 和 href 相匹配。
  • 確保編輯器確實(shí)將文件保存成文本。

創(chuàng)建 WAR 文件

最后,我們就可以創(chuàng)建供分發(fā)的 WAR文件了。我們將使用標(biāo)準(zhǔn) jar 命令來構(gòu)建 WAR 文件。在 helloWorld 目錄下運(yùn)行以下命令:


set JAVA_HOME=C:\WebSphere\AppServer\java 
set PATH=%JAVA_HOME%\bin  
jar -cf HelloWorld.war WEB-INF 

                

部署 WAR文件

  1. 以門戶網(wǎng)站管理員的身份( wpsadmin )登錄到門戶網(wǎng)站。
  2. 在缺省主題的右上角選擇 Administration鏈接。

    圖 1. 管理員鏈接
    管理員鏈接

  3. 在左邊選擇 Portlets頁面,并選擇 Installportlet。

    圖 2. 安裝 portlet 管理頁面
    安裝 portlet 管理頁面

  4. 單擊 Browse 按鈕
  5. 找到 WAR文件的位置,選定,然后單擊 Open 按鈕。

    圖 3. 文件選擇對(duì)話框
    文件選擇對(duì)話框

  6. 單擊 Next。這可能要花費(fèi)一些時(shí)間,請(qǐng)耐心等待它完成。
  7. 驗(yàn)證 Portlet是否為 HelloWorld。單擊 Install 按鈕。再次等待直到安裝完成。

    圖 4. Portlet 安裝驗(yàn)證屏幕
    Portlet 安裝驗(yàn)證屏幕

  8. 最后,您將看到這條確認(rèn)消息: Portlet 安裝成功。

如果在部署過程中碰到某類出錯(cuò)信息,這通常意味著您在某個(gè) XML文件中出錯(cuò)了。仔細(xì)分析安裝頁面呈現(xiàn)給您的出錯(cuò)信息,您通常能夠從中找到出錯(cuò)的原因。這些信息也會(huì)記錄在最新的日志文件中:
%WPS_HOME%/log/wps_YYYY.MM.DD-HH.MM.SS.log

創(chuàng)建部署描述符列出了 XML 文件的常見錯(cuò)誤。您還應(yīng)該檢查下列內(nèi)容:

  • XML聲明必須位于文件的第一行(沒有空格)。
  • 在正確的大小寫情況下,xml 文件有正確的名稱。

將 portlet 添加到某一頁面中

  1. 在左邊選擇 Portal User Interface頁面。
  2. 點(diǎn)擊 Manage Pagesportlet。

    圖 5. 管理頁面 portlet
    管理頁面 portlet

  3. 然后選擇 My Portal頁面。
  4. 單擊 New page。
  5. 為新頁面鍵入一個(gè)標(biāo)題。
  6. 單擊 OK 按鈕
  7. 看到 OK 成功消息以后單擊 OK 按鈕。
  8. 單擊新頁面邊上的編輯頁面圖標(biāo) 編輯頁面。
  9. 單擊 添加 portlets。
  10. 搜索 Hello ,單擊 查找。
  11. 選中 Hello World portlet 并單擊 OK 按鈕

    圖 6. 查找 portlets
    查找 portlets

  12. 單擊 完成來完成頁面版面設(shè)計(jì)。

    圖 7. 編輯版面設(shè)計(jì)
    編輯版面設(shè)計(jì)

  13. 在右上角單擊 My Portal 鏈接,然后選擇您創(chuàng)建的頁面。

    圖 8. 顯示我們創(chuàng)建的 portlet 的門戶網(wǎng)站
    顯示我們創(chuàng)建的 portlet 的門戶網(wǎng)站

結(jié)束語

現(xiàn)在您已經(jīng)創(chuàng)建了一個(gè)新的 portlet,您應(yīng)該為此而感到高興!您現(xiàn)在知道了如何從頭開始創(chuàng)建一個(gè)簡(jiǎn)單的 portlet。首先編寫、編譯并打包Java 代碼。然后創(chuàng)建部署描述符,并將 portlet 打包以便分發(fā)和部署。最后,將 portlet 部署到您的門戶網(wǎng)站中。

從現(xiàn)在開始,編寫任何 portlet 對(duì)您來說都是可能的。祝您好運(yùn),玩得開心!

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多