Hello World —— WebSphere Portal V5 最简单的 portlet:第 1 部分,创建和部署

本文详细介绍了如何在WebSphere Portal V5中创建最简单的Portlet,即Hello World Portlet。从创建目录结构、编写Java源代码、编译代码、创建JAR文件、构建部署描述符,到最后打包WAR文件并部署到门户网站,文章逐步指导读者完成整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将带您了解在 WebSphere Portal Version 5 中创建和部署一个简单的 portlet 的步骤。

引言
经常有人问我这个问题:“如果从头开始的话,人们能够通过 WebSphere Portal Version 5 创建的最简单的 portlet 是什么?”。固定不变的答案是“hello world”。本文将花较长的篇幅来详细回答这个问题。我准备带您了解如何创建 WebSphere Portal V5 的最简单的 protlet。您将从一些 Java 代码开始,接着对其进行编译,然后打包。接下来,您将创建把有关 portlet 的信息告诉应用程序服务器和门户网站所需的部署描述符。最后,我们将其打包在一起,并将新的 portlet 部署到门户网站内。

创建目录结构
首先创建一个目录结构,您将在这个目录结构中创建 portlet。下面是我将用于这个简单的 portlet 的目录结构:

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

创建 Java 文件
sample 目录是您将存放 Java 源代码的位置。在 sample 目录中创建一个名为 HelloWorld.java 的文件,然后用您喜欢的文本编辑器打开该文件。下面是您需要输入(或者复制、粘贴)到 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"); 
  } 
}

编译代码
一旦您已经创建好了源文件,就可以对 Java 代码进行编译了。在一个批处理文件中可以使用下面的脚本来编译 portlet。您首先定义一些环境变量(例如,Java 主目录的位置)。用 WebSphere Application Server 附带的 JDK 对此进行编译通常是一个好主意,因为这是您将要运行应用程序的环境。您还要设置 PATH 以便访问 Java 编译器。此外还需要将变量 LIBPATH 设置为指向 WebSphere JAR 文件所在的目录。

接下来,您为我们的编译类路径构建一个名为 CP 的变量。CP 变量可以构建在一行上,但是为了说明所需的不同 JAR 文件,我们将其拆开分行显示。然后,您调用 Java 编译器来对代码进行编译。这假定您位于 helloWorld 目录下。请将目录路径调整为适合安装的路径。


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 

如果由于某些原因这不能编译,您必须在往下继续之前修正错误。一些常见的错误是:

  • 输入错误 —— 类名称、路径、变量名称输入错误
  • 文件名称 —— 文件名称必须和类名称匹配。在我们的例子中,文件名是 HelloWorld.java,类名称是 HelloWorld。如果您已经改变了一个名称,另一个名称也要改变。
  • 编辑器错误 —— 确定编辑器确实将文件存储为文本。像写字板这样的编辑器,不会将文件默认存储为文本。

创建 JAR 文件
在完成了 Java 源文件的编译以后,您就需要在 WEB-INF/lib 目录下创建一个 JAR 文件。再次假设您位于 helloWorld 目录下。如果您在编译代码一节创建了一个批处理文件,就可以将这些语句作为该文件的一部分包含在其中。这取决于您已经将 PATH 设置为指向 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 

创建部署描述符
现在,您需要创建两个 XML 文件:

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

web.xml — Web 部署描述符
Web 部署描述符是 WebSphere Portal 所需要的。现在 Portlet 扩展了 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.sun.com/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 部署描述符向门户网站定义 portlet。每个 portlet 通过 portlet 元素的 href 属性映射到 Web 部署描述符中定义的一个 Servlet 上。以粗体表示这些引用。portlet 必须定义一个惟一的 id,每个具体的 portlet 都能引用该 id。每个具体的 portlet 使用 concrete-portlet 元素的 href 属性的特定 id 来引用 portlet。以蓝色表示这些引用。

<?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>

创建这些 XML 文件时,许多地方会出错。只有在您试图将 portlet 部署到门户网站时才会发现这些错误。这里有一些需要特别注意的地方:

  • 检查每一个 XML 元素,确保它们都有一个闭元素。
  • 检查类名是否输入错误,对于本例来讲,检查您给类起的名称是否是 HelloWorld
  • 确保 id 和 href 相匹配。
  • 确保编辑器确实将文件保存成文本。

创建 WAR 文件
最后,我们就可以创建供分发的 WAR 文件了。我们将使用标准 jar 命令来构建 WAR 文件。在 helloWorld 目录下运行以下命令:

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

部署 WAR 文件

  1. 以门户网站管理员的身份(wpsadmin)登录到门户网站。
  2. 在缺省主题的右上角选择 Administration 链接。

    图 1. 管理员链接
    管理员链接

  3. 在左边选择 Portlets 页面,并选择 Install portlet。

    图 2. 安装 portlet 管理页面
    安装 portlet 管理页面

  4. 单击 Browse 按钮
  5. 找到 WAR 文件的位置,选定,然后单击 Open 按钮

    图 3. 文件选择对话框
    文件选择对话框

  6. 单击 Next。这可能要花费一些时间,请耐心等待它完成。
  7. 验证 Portlet 是否为 HelloWorld。单击 Install 按钮。 再次等待直到安装完成。

    图 4. Portlet 安装验证屏幕
    Portlet 安装验证屏幕

  8. 最后,您将看到这条确认消息: Portlet 安装成功

如果在部署过程中碰到某类出错信息,这通常意味着您在某个 XML 文件中出错了。仔细分析安装页面呈现给您的出错信息,您通常能够从中找到出错的原因。这些信息也会记录在最新的日志文件中:
%WPS_HOME%/log/wps_YYYY.MM.DD-HH.MM.SS.log

创建部署描述符列出了 XML 文件的常见错误。您还应该检查下列内容:

  • XML 声明必须位于文件的第一行(没有空格)。
  • 在正确的大小写情况下,xml 文件有正确的名称。

将 portlet 添加到某一页面中

  1. 在左边选择 Portal User Interface 页面。
  2. 点击 Manage Pages portlet。

    图 5. 管理页面 portlet
    管理页面 portlet

  3. 然后选择 My Portal 页面。
  4. 单击 New page
  5. 为新页面键入一个标题。
  6. 单击 OK 按钮
  7. 看到 OK 成功消息 以后单击 OK 按钮
  8. 单击新页面边上的编辑页面图标 编辑页面
  9. 单击 添加 portlets
  10. 搜索 Hello,单击 查找
  11. 选中 Hello World portlet 并单击 OK 按钮

    图 6. 查找 portlets
    查找 portlets

  12. 单击 完成 来完成页面版面设计。

    图 7. 编辑版面设计
    编辑版面设计

  13. 在右上角单击 My Portal 链接,然后选择您创建的页面。

    图 8. 显示我们创建的 portlet 的门户网站
    显示我们创建的 portlet 的门户网站

结束语
现在您已经创建了一个新的 portlet,您应该为此而感到高兴!您现在知道了如何从头开始创建一个简单的 portlet。首先编写、编译并打包 Java 代码。然后创建部署描述符,并将 portlet 打包以便分发和部署。最后,将 portlet 部署到您的门户网站中。

从现在开始,编写任何 portlet 对您来说都是可能的。祝您好运,玩得开心!

回到页首

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值