级别: 初级 Alvin Khor (khorewa@sg.ibm.com), 专职软件工程师, IBM Emerging Technology Center
2002 年 8 月 01 日 本文演示了如何使用 WebSphere Studio Application Developer 来快速开始所有 WebSphere Portal Server 开发活动。
© Copyright International Business Machines Corporation 2002. All rights reserved.
简介
本文是一组系列文章中的第 3 部分,该系列文章介绍了使用 IBM®WebSphere® Portal Server(以后简称 Portal Server)和 IBMWebSphere Studio Application Developer(以后简称 ApplicationDeveloper)来进行开发工作。该系列文章演示了如何才能扩展 WebSphere Portal Server 2.1 以提供动态主题选择,同时还显示了如何使用 IBM WebSphere Studio ApplicationDeveloper 来快速开始包括开发、打包和调试在内的所有 WebSphere Portal Server 开发活动。
该系列文章的
第 1 部分介绍了如何实现 Portal Server 的动态主题定制,而
第 2 部分则探讨了如何使用 Application Developer 开发 Portal Server 项目以及如何利用 Application Developer 中的 Ant 来使项目开发自动化。本文,也就是第 3 部分,展示了如何重用第 2 部分中创建的项目模板,以及如何将该模板应用于现有的 portlet 样本项目。
本文假定您已经安装了 WebSphere Portal Server2.1 和 WebSphere Application Server 3.5.4。您还应该熟悉 Portal Server 和 Application Server 管理。要查看同本文一起提供的项目的源代码,您必须安装 WebSphereStudio Application Developer 4.0。如果在您的机器上安装了上述软件的更新版本,那么屏幕显示的某些内容看起来可能同本文中显示的有些不同。
在整篇文章中,您将需要对某些文件和源代码做些改动。如果您不想手工输入这些改动,那么请下载
下面可获得的 ZIP 文件,然后访问
template_source.zip 以获取所有同 WebSpherePortal Server 项目模板有关的源代码,并访问
helloworld_source.zip 以获取样本 portlet。由于我们将在本文中使用的文件与第 2 部分中需要的文件相同,因此我们提供了相同的 ZIP 文件供下载。
WebSphere Portal Server 和 WebSphere Studio Application Developer
在第 1 部分和第 2 部分中对 Portal Server 的作了常规简介,在第 2 部分中同时还对 Application Developer 作了描述。如果您还没有阅读该系列文章的前两部分,那么建议您先阅读这两篇文章。有关 WebSphere Portal Server 和 portlet 开发的更多细节,请参考
WebSpherePortal Server InfoCenter。
请查阅
IBMWebSphere Studio Application Developer 网站以获取有关 Application Developer 的最新信息。同时还可以从该网站下载 Application Developer 的试用版。如果您正在使用
EclipseIDE或
WebSphere StudioWorkbench,那么本文中描述的技术和方法将同样可以适用。
在本文中,我们将:
- 从模板创建一个 Portal Server portlet 项目。
- 测试运行所创建的项目。
可以在
helloworld_source.zip 和
template_source.zip 文件中获得为本文所开发的项目和源文件。请访问
下面的下载文件。可以通过选择
File => Import => ZipFiles将这些文件导入 Application Developer。如果您不希望按本文所述执行这些步骤,那么请下载
helloworld_source.zip 文件,将它们导入 Application Developer,然后使用本文作为参考指南。
创建样本 portlet 项目
现在,我将讨论如何在您的 Portal Server 开发过程中使用我们在第 2 部分中创建的框架模板。如果您已经执行了第 2 部分中的步骤并且已经在 Application Developer 中创建了必需的文件和文件夹结构,那么您的项目模板现在就可供重用了。为了演示可以怎样将项目模板应用于现有的 portlet 项目,我们将从 Portal Server 样本
samplets_helloworld 导入 Portlet 的 Java 代码,然后手工创建
Portlet.xml 文件。我们还将修改
build.xml 文件以反映本样本项目所需的改动。
对于新项目重用项目模板
在可以重用我们在第 2 部分中创建的 WPS Template 项目之前,首先必须将 WPS Template 项目导出到外部资源库。这样做的结果是,每次将项目导入回 Application Developer 工作区时,都允许重用该项目。如果安装了 CVS 服务器并且在 Application Developer 中进行了库设置,那么您就可以将项目导出到 CVS 库并从 CVS 服务器共享该项目。否则,请将项目导出到一个 ZIP 文件(选择
File => Export => Zip)。目前,我们将使用同本文一起提供的
template_source.zip 文件。该 ZIP 文件是被导出到一个单独的 ZIP 文件中的 WPS Template 项目的示例。
在可以在模板 ZIP 文件上执行导入之前,我们需要创建一个新的基于 Java 的项目。请重复前面一节中所列出的步骤并创建一个称为
WPS Portlet Development 的基于 Java 的新项目。参考
第 2 部分中的图 2 和图 3。
图 1. 新 portlet 项目
新创建的项目应该没有任何缺省创建的文件夹结构。我们将导入包含在第 2 部分中创建的 Template 项目的 ZIP 文件。这一导入过程将把文件和文件夹结构复制到这一新项目中。请选择
WPS Portlet Development项目,然后从菜单栏选择
File => Import => Zip File。
图 2. 选择 ZIP 文件作为导入类型
请使用
Browse按钮来浏览包含项目模板(即
template_source.zip )的 ZIP 文件。一旦选择了 ZIP 文件,则 ZIP 文件内的文件夹结构会出现在 Import 对话框的选择列表上。请选择
/ 根文件夹以表明导入 ZIP 文件内所有的内容。请确保选定的目标文件夹指向 WPS Portlet Development 项目。
图 3. 选择 ZIP 文件内容
单击
Yes to All按钮以接受 ZIP 文件中的所有文件。
图 4. 导入所有文件
在 Import Wizard 完成所有导入操作之后,请展开
WPS Portlet Development项目,您会发现该新项目中的文件夹结构和文件内容与在
第 2 部分中创建的 WPS Template 项目相似。那么,为什么相似却又不
完全相同呢?
图 5. WPS Portlet Development 项目的内容
在将 WPS Template 项目导出到 ZIP 文件时,空文件夹在导出过程中不会被导出。幸运的是,我们可以执行 ANT 脚本目标
@CreateFolderStructure 来重新构造丢失的文件夹。请参阅
第 2 部分中的图 9 和图 10。一种不丢失这些空文件夹的备选方法是在这些文件夹中创建哑文件(例如,
.info )。Application Developer 的大多数视图中将隐藏名称以点开始的文件。
HelloWorld portlet
由于本文的目的是演示如何创建 Portal Server 项目模板并将其重用于实际的 portlet 开发项目,因此我们不会花时间来从头开始编写 portlet 类。相反,我们将从 WebSphere Portal Server 提供的 HelloWorld 样本导入代码。这是一个样本 portlet 应用程序,可以在 Portal Server 安装目录下找到。选择 WPS Portlet Development 项目下的
src 文件夹,然后从菜单栏选择
File =>Import => File System。单击
Browse按钮并浏览包含 HelloWorld 样本的 Java 源文件的文件夹。选中
com 文件夹复选框;该文件夹是
<WPS_ROOT>\ src\portlets\samplets_helloworld\src 文件夹中的一个子文件夹。确保目标文件夹指向 WPS Portlet Development 项目的
src 文件夹。单击
Finish以完成导入过程。
图 6. 导入 HelloWorld 样本
当导入过程完成时,WPS Portlet Development 项目的
src 文件夹下应该有一个 Java 文件列表。这是为执行 HelloWorld 功能而导入的 Java 文件的列表。我们需要修改
build.xml 文件,以便在为项目构建 PAR 文件时使用名称
HelloWorldApp 。修改 WPS Portlet Development 项目的
build.xml 文件以反映下面的清单 1 中显示的变化。
清单 1. 修改 build.xml 文件
... Some code above truncated ...
<!-- Set ParName to indicate the name of the par file
to be created -->
<property name="ParName" value="HelloWorldApp"/>
... Some code below truncated ...
|
Portal Server HelloWorld 样本提供了本地化支持。该 portlet 使用的文本标签存储在一些
helloworld_xx.properties 文件中(
xx 是语言代码)。所选语言环境对应的特性文件将在运行时选中,portlet 将使用选中的特性文件中的本地化标签。出于演示目的,我们将导入特性文件的英语和西班牙语版本。
在 WPS Portlet Development 项目的
PORTLET-INF\classes 下创建称为
nls 的子文件夹。将使用该文件夹来包含特性文件的本地化版本。选择
nls 文件夹,然后从菜单栏选择
File => Import => File System。使用
Browse按钮来浏览
<WPS_ROOT>\app\web\WEB-INF\classes\nls 文件夹。选择文件
helloworld.properties 、
helloworld_en.properties 和
helloworld_es.properties 。确保目标文件夹指向了 WPS Portlet Development 项目的
PORTLET-INF\classes 文件夹。单击
Finish以完成文件导入过程。
图 7. 导入特性文件
当导入过程完成时,WPS Portlet Development 项目的文件夹和文件内容应该跟图 8 差不多。
图 8. HelloWorld 项目导入的文件和文件夹结构
修改 Application Developer HelloWorld portlet 的 Portlet.xml 文件
既然我们已经有了 HelloWorld 项目的 Java 类和资源特性文件,就必须更新项目的
portlet.xml 文件以反映 portlet 注册信息。
Portlet.xml 文件含有可被组合为单个 portlet 应用程序的 portlet 的定义。修改位于 WPS Portlet Development 项目的
PortletRoot\PORTLET-INF 文件夹下的
portlet.xml 文件,并用清单 2 中的更改更新该文件。在下面用黑体字突出显示了更改。或者,您也可以重用修改过的
portlet.xml 文件,可在本文的下载部分中找到它。将
WSADHelloWorld 作为 portlet 名称指派给这个新 portlet 应用程序。这样做是为了避免同安装在 WebSphere Portal Server 服务器中的原始 HelloWorld portlet 样本相混淆。
清单 2. 修改 HelloWorld portlet 的 portlet.xml 文件
... Some code above truncated ...
<portlet-app-name>WPS_Project_Development</portlet-app-name>
<portlet>
<portlet-name>WSAD HelloWorld</portlet-name>
<portlet-class>com.ibm.wps.portlets.MVCPortlet</portlet-class>
... Some code truncated ...
<language locale="en">
<title>Hello World with WSAD! for English users</title>
... Some code truncated ...
<language locale="es">
<title>Hello World with WSAD! for Spanish users</title>
... Some code below truncated ...
|
自动化构建和打包
在前一节中,通过从第 2 部分中继承创建的模板项目创建了 WPS Portlet Development 项目。HelloWorld portlet 代码是从 Portal Server 样本目录中导入的,目的是为了演示重用项目模板的过程。当 HelloWorld portlet 所需的文件被导入时,修改了
build.xml 和
portlet.xml 文件以反映 HelloWorld portlet 应用程序所需的变化。
一旦进行了这些更改,您就可以使用
build.xml 脚本来构建 WPS Portlet Development 项目以及生成包含期望的 portlet 应用程序的 PAR 文件。只需点几下鼠标,所有这些都可自动完成。但首先,我们将使用 Java Development Tools (JDT) 的 Application Developer 构建器来重构项目。推荐这一步并非因为我们创建的
build.xml 文件需要它,而是因为:在使用 JDT 构建器编译 Java 代码时,可以捕获源自该项目的任何类型的编译错误和警告。JDT 将把错误记录到 Application Developer 的 Task 视图中。请从工作区选择
WPSPortlet Development项目,然后单击鼠标右键并从弹出的上下文菜单选择
Rebuild Project。
图 9. 使用 Application Developer 的构建器重构项目
如果编译过程是成功的,那么项目的
bin 文件夹现在应该含有已编译的 Java 类文件。由于 Application Developer 项目视图隐藏了
bin 文件夹,因此您必须从操作系统的文件系统检查该文件夹。如果您熟悉使用 Application Developer 透视图,那么您可以使用 Resources 透视图来查看
bin 文件夹。与 JDT 构建器相反,
build.xml 脚本将编译并输出 Java 类文件到项目文件夹下的
classes 文件夹中。为了避免 JDT 生成的类文件和
build.xml 生成的类文件之间的混淆,有意对这些类文件这么处理。
下面的清单 3 显示了
build.xml 脚本的一段摘录。
@CompilePortlet 目标将把已编译的类文件输出到由
${build} 变量指定的文件夹。
清单 3. build.xml 编译任务
... Some code above truncated ...
<!-- set global properties for this build -->
<property name="src" value="./src"/>
<property name="build" value="./classes"/>
<property name="wpslib" value="./lib"/>
<!-- Compile the portlet code from SRC directory and
save classes in BUILD -->
<target name="@CompilePortlet" depends="init">
<javac srcdir=" destdir="${build}" debug="${debug}"
classpath="${JRE_LIB}" optimize="${optimize}"
deprecation="off">
<classpath>
<path>
<fileset dir="${wpslib}">
<include name="**/*.jar"/>
</fileset>
</path>
</classpath>
</javac>
</target>
... Some code below truncated ...
|
当 portlet 项目可以重构和打包时,在 WPS Portlet Development 项目文件夹下的
build.xml 文件上单击鼠标右键。从下拉菜单选择
Run Ant选项。仅选中
@RebuildPar而不选择其它目标。单击
Finish以开始 ANT 脚本的执行。使用
Refreshfrom Local选项以查看由 ANT 脚本所引起的变化。
图 10. 使用 ANT 脚本重构并生成 PAR
Application Developer 中的 ANT Console 将显示
build.xml 脚本的执行状态。如果碰到任何错误,该控制台都将显示错误消息。
图 11. 审查生成的 PAR 文件
使用
Refresh from Local选项来更新工作区中的 WPSPortlet Development 项目。要验证是否已经成功地执行了重新构建和打包,请审查 WPS Portlet Development 项目下面的
PortletPar 文件夹。您应该能够找到驻留在里面的 PAR 文件,例如
HelloWorldApp_0.0.1_20020319.par 。这将成为用来部署到 WebSphere Portal Server 服务器的 PAR 文件。
测试代码
将在前面一节中创建的 PAR 文件安装到您的 Portal Server 服务器。请参考
WebSpherePortal Server InfoCenter以获取关于如何使用 web 浏览器安装 portlet 的进一步指导。完成这一操作之后,在 PortalServer 服务器创建一个新的选项卡页以容纳原始的 HelloWorld portlet 和新的 ApplicationDeveloper HelloWorld portlet。当成功地呈现了 portlet 时,您就会知道自动化特性已经为您成功地生成了 PAR 文件。
图 12. 在 web 浏览器中显示的 HelloWorld
结束语
同 WebSphere Portal Server 有关的开发活动通常涉及编写一些扩展 Portal Server 缺省行为的 Java 类或者处理内容检索和转换的 portlet 代码。虽然目前还没有用于这种开发的专用 Application Developer 插件,但使用 Application Developer 来快速开始 Portal Server 的开发仍然是可能的。通过使用 Application Developer 内置的某些脚本编制功能,可以自动化 portlet 代码编译和部署以提高生产率。开发人员可以致力于实现 portlet 项目的逻辑,而让自动化特性处理构建和打包活动。在本系列文章的下一部分中,我将演示如何调试为 WebSphere Portal Server 编写的代码。
下载 | 名字 | 大小 | 下载方法 |
|---|
| helloworld_source.zip | 448 KB | HTTP | | template_source.zip | 439 KB | HTTP | | listing2.zip | 1 KB | HTTP |
参考资料
关于作者  | 
|  |
Alvin Khor 是位于新加坡的 IBM Emerging Technology
Center 的专职软件工程师,他在那里担任普及计算领域的应用程序开发的技术团队领导。在加入 IBM 之前,他从事过各种技术领域工作,包括数据仓库、语音处理和多媒体。在 IBM,Alvin 工作过的领域包括转码、WAP、门户网站与个性化以及宽带联网,而且正在开始开发支持语音的应用程序。除了开发活动以外,Alvin 还参加亚洲各地关于 PVC 主题的培训指导。1993 年,Alvin 从英国获得 Essex 大学计算机科学荣誉学位。可以通过
khorewa@sg.ibm.com和 Alvin 联系。
|
对本文的评价
|