IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

使用 WebSphere Studio Application Developer 的 WebSphere Portal Server 开发: 第 2 部分:开发 Portal Server 项目

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码


级别: 初级

Alvin Khor (khorewa@sg.ibm.com), 专职软件工程师,IBM Emerging Technology Center, 新加坡 IBM

2002 年 4 月 01 日

您了解 IBM WebSphere Portal Server 吗?这是 Alvin Khor 撰写的系列文章的第 2 部分,本部分演示了如何使用 WebSphere Studio Application Developer 来快速开始所有 WebSphere Portal Server 开发活动。

© Copyright International Business Machines Corporation 2002. All rights reserved.

简介

这是介绍使用 IBM® WebSphere® Portal Server(以下称作 PortalServer)和 IBM WebSphere Studio Application Developer(以下称作 Application Developer)进行开发的系列文章的第 2部分。本系列演示了如何扩展 WebSphere Portal Server 2.1 以提供动态主题选择,并且演示了如何使用IBM WebSphere Studio Application Developer 来快速开始所有 WebSphere Portal Server 开发活动。

本系列的 第1 部分介绍了如何实现 Portal Server 的动态主题定制。第 2 部分将探讨如何使用 Application Developer开发 Portal Server 项目。我们将通过遵守循序渐进的指示来创建可重用的 Portal Server项目模板。我们还将探讨如何利用 Application Developer 中的 Ant来实现项目开发自动化。

本文假设您安装了 WebSphere Portal Server 2.1 和 WebSphere Application Server 3.5.4。您还应该熟悉Portal Server 和 Application Server 管理。要查看本文中所提供项目的源代码,必须安装 WebSphereStudio Application Developer 4.0。如果您在机器上安装了上述软件的更新版本,一些屏幕可能看起来与本文中显示的屏幕不同。

在本文中,我们将:

  1. 创建可重用的 Portal Server 项目模板。
  2. 创建用于 PAR 构建自动化的 Ant 脚本。
  3. 设置用于 DTD 支持的 Application Developer 工作台首选项。

在本文中,您需要更改某些文件和源代码。为配合本文而开发的项目和源文件可以在 helloworld_source.ziptemplate_source.zip 文件(请参阅 下面的下载文件)中找到。如果您不喜欢手工输入这些更改,那么请下载可用的ZIP 文件,然后打开 template_source.zip 寻找所有与 WebSpherePortal Server 项目模板相关的源代码,并访问 helloworld_source.zip 寻找样本 portlet。可以通过选择 File => Import => Zip Files将这些文件导入Application Developer。如果您愿意,在开始学习下面的教程之前,可以花一些时间来研究项目的结构。





回页首


WebSphere Portal Server 和 WebSphere Studio Application Developer

WebSphere Portal Server 是高度可扩展和可配置的框架,用于创建基于 Web 的门户站点。它的核心功能之一就是只需调整配置文件中的参数就可以定制用户界面。在本系列的 第1 部分中,我们通过重设 JSP 标记处理程序的行为定制了 Portal Server。此项技术说明了当没有等价的配置参数适用时,如何扩展Portal Server。虽然此项技术注重于提供动态主题选择,但相同的概念可以应用到 Portal Server UI 的其它方面。

与 Portal Server 相关的开发活动大致分成两种潮流:系统集成与扩展和 portlet开发。系统集成强调如何定制 Portal Server 核心框架,并使它符合与操作要求一致。一个示例就是重新排列Portal Server 选项卡来改变其现有行为(即出现在一行中),使它们出现在一列中。扩展和 portlet开发注重于启用门户站点的内容传递。大多数 portlet 会充当内容检索的角色,并且生成内容的再现。虽然这两种活动本来就与Portal Server 框架耦合在一起,但系统集成和扩展通常都要求开发人员熟悉逻辑在 Portal Server中的流动方式。对于 portlet 开发,有一套定义明确的 portlet API管理着开发活动,而且有一套需要遵守的最佳实践。在被上传到门户站点之前,portlet通常会被打包到 Portlet Archive(PAR)文件中。有关 Portlet API 的更多信息,请访问 WebSpherePortal Server InfoCenter以及参阅可以从 Portal Server 安装中找到的 Javadoc API 参考。

在撰写本文时,Portal Server 被看成是 WebSphere Application Server 3.5.4的一个企业应用程序。因此,开发技术的可用优先选择主要是基于 VisualAge® forJava™。可用于 Portal Server 的正式受支持的开发和调试辅助是 WebSpherePortal Server Test Environment,也就是 VisualAge for Java 环境。此外,虽然当有可用的插件时可以添加其它应用程序服务器,但适用于 WebSphereStudio Application Developer 的服务器端开发和调试工具支持 WebSphere Application Server 4.0和 Tomcat。因此,尽管 Application Developer 有许多强大的功能,但大多数 Portal Server项目目前仍使用 VisualAge for Java 进行开发。

WebSphere Studio Application Developer 是用于 Java开发的可扩展集成开发环境。Application Developer 的最大优点之一就是其可扩展功能。Application Developer提供了一套丰富且健壮的 API,供独立软件供应商开发附加开发工具。可以将打包成插件的新功能插入Application Developer,就象执行简单的文件夹复制操作一样容易。Application Developer插件通常在生成开发所需的样板代码时会提供向导级别的辅助。除了可高度扩展的插件框架之外,ApplicationDeveloper 还附带了一个插件库,它可以提高企业项目的开发效率。有用的 Java 开发工具(JavaDevelopment Tools(JDT))功能之一就是 ApacheFoundation中的 Ant 工具,此工具已被集成到 Application Developer 平台核心中。Ant是基于 Java 的构建工具,其设计意图是促进跨平台构建代码,而不必处理跨平台制作文件(makefile)问题。

请访问官方 IBMWebSphere Studio Application Developer 网站以了解关于 Application Developer的最新信息。在同一网站上还可以下载 Application Developer 的试用版。如果您使用的是 EclipseIDEWebSphere StudioWorkbench,也可以应用本文中描述的技术和方法。





回页首


创建项目模板

现在,我们将遵守下面的循序渐进的指示,为 PortalServer portlet 开发创建可重用的项目模板。portlet 项目基本上是基于 Java的项目,因为典型的 portlet 应用程序块是由 Java 类组成的。创建了项目之后,可以把它当作用于将来的portlet 开发的项目模板。


图 1. Application Developer Preferences 中的 Java 项目文件夹设置
Application Developer Preferences 中的 Java 项目文件夹设置的抓屏

在开始项目创建任务之前,请确保已按照上面的图 1 配置了Application Developer Java 项目文件夹设置。确保选择了 Use 'src' and 'bin' folders as defaultin new Java projects选项,以便由 Application Developer 新建的基于 Java 的项目将使用 src 作为定位 Java 文件的缺省源文件夹,并使用 bin 作为已编译类的输出文件夹。

创建骨架项目

要开始创建项目,我们将使用 ApplicationDeveloper 的 Java Project向导为我们的模板创建一个空的 Java 项目。选择菜单选项: File=> New => Other => Java => Java Project来启动 Application Developer 的 Project Creation向导。这样就打开了 New - SelectCreate a Java project向导。

单击 Next,然后指定 WPS Template 作为 Java 项目的项目名(当然,对于 portlet 项目,可以使用您喜欢的任何名称,但在本教程中,我们将使用项目名 WPS Template )。确保选择了 Use default location。单击 Finish完成向导过程。现在,已经在 Application Developer 中创建了标准项目文件夹结构。

缺省情况下,Application Developer 工作台设置会把 src 配置成包含 Java 文件的源文件夹,把 bin 配置成包含已编译类文件的输出文件夹。如果使用了另一个名称作为源或输出文件夹,那么以后就需要更改 Ant 脚本。在下一节中会详细说明 Ant 脚本。Application Developer 创建的项目不应该有预先生成的Java 代码。以下的图 2 显示了在 Application Developer 工作区中展开时, WPS Template 项目的外观。


图 2. 新的 Java 项目
Application Developer 中创建的 WPS Template 的抓屏

创建 build.xml Ant 脚本

通常,Ant 脚本提供了可以用于执行构建和编译的脚本编制能力。但是,我们要利用由Ant 支持的一套丰富的任务命令来创建 portlet 项目的文件夹结构。请参考 WebSpherePortal Server InfoCenter以获得 portlet 应用程序中每个子文件夹的作用和目的的描述。

我们要创建一个称为 build.xml 的文件来保存 Ant脚本。此文件类似于传统的制作(make)世界中的制作文件。其主要区别是为支持 Ant 语法所创建的脚本是跨平台的,而且由 Ant解释器解释的任务是可以扩展的。选择并突出显示 WPS Template项目,然后单击鼠标右键。从弹出上下文菜单中选择 New => Other => XML => XML File。这样就打开了 New- Select Create a new XML File向导。

单击 Next前进到下一个向导页。由于要在没有受任何 DTD 管理的情况下从头创建 build.xml 文件,选择 Create XML file from scratch选项,然后单击 Next

确保 WPS Template 是所选的项目,而且提供了 build.xml 文件作为新 XML 文件的文件名。单击 Finish完成 Application Developer 向导,让它生成必需的代码存根。


图 3. 指定 build.xml 作为文件名
让您指定 build.xml 作为文件名的“XML File Name”向导的抓屏

由 Application Developer 创建的 build.xml 文件应该只包含一行 XML 头。请参阅 下面的下载文件以查找“Listing1:build.xmlfor WPS Template project”,并将其中的内容输入 build.xmlbuild.xml 文件就是我们将用于所有Portal Server 项目自动化的 Ant 脚本。下表包含了每个目标任务做些什么的描述。

表 1. build.xml 的任务描述


目标名 描述
@GeneratePar公有目标。在不进行重新编译的情况下,生成 PortletApplication 的 PAR 文件。取决于 JarPortletClasses 和GenerateParPortlet 任务。
@RebuildPar公有目标。重新编译所有 Java 类,生成 Portlet Application的 PAR 文件。取决于 @CompilePortlet、JarPortletClasses 和 GenerateParPortlet 任务。
@CompilePortlet公有目标。编译 src 文件夹中找到的所有 Java 代码,并将已编译的类输出到 classes 文件夹。取决于 init。
@CreateFolderStructure公有目标。创建 PortletApplication 项目的文件夹层次结构。将 Portlet 应用程序归档到单个可重新分发的PAR 文件中时,就需要这个层次结构。取决于 init。
GenerateParPortlet私有目标。通过把PortletRoot文件夹压缩到一个 JAR 文件中,生成 PAR 文件。取决于 init。
CleanUp私有目标。清除由脚本创建的已编译类和 JAR 文件。
JarPortletClasses私有目标。把已编译的类文件压缩到一个 JAR 文件中,然后把它放到 PortletRoot\lib 目录中。取决于 init。
init私有目标。通过在项目根下预先创建 classesPortletPar 文件夹,初始化构建环境。这些文件夹由脚本中的各种编译任务使用。

下面的图 4 显示了 WPS Template 项目的工作区视图,其中打开了 build.xml 文件以供编辑。


图 4. build.xml Ant 脚本
在工作区中显示的 build.xml ANT 脚本的抓屏

创建文件夹结构

现在,已经有了一个使用 Java Project向导和 Ant脚本文件 build.xml 创建的初始 WPS Template 项目文件夹,我们可以通过调用在 build.xml 文件中脚本编制的 Ant目标在 WPS Template 项目中创建必需的文件夹结构。选择 WPS Template项目文件夹下的 build.xml 文件。在 build.xml 文件上单击鼠标右键,然后选择 Run Ant选项。


图 5. 调用 Ant 脚本
在 Application Developer 中调用 ANT 脚本的抓屏

在选择列表中会显示 build.xml 脚本中找到的可用 Ant目标的列表。由于 WPS Template 项目不包含任何 Java 代码,因此选择 @CreateFolderStructure并取消选择 @RebuildPar以指出您只想创建文件夹结构。单击 Finish启动 build.xml 脚本的目标执行。


图 6. 选择 @CreateFolderStructure 目标
选择了 @CreateFolderStructure 目标的“Execute Ant Script”向导的抓屏

当脚本完成时,Ant Console 视图显示了执行过程的状态。


图 7. Ant 控制台
Ant 控制台的抓屏

WPS Template项目文件夹上单击鼠标右键,选择 Refresh from Local选项。现在, WPS Template 项目包含了文件夹结构。


图 8. WPS Template 项目的文件夹结构
在 Application Developer 工作区中显示的 WPS Template 项目的文件夹结构的抓屏

导入基本文件

现在,我们要将四个必需的 JAR 文件导入由 Ant脚本创建的 lib 文件夹。突出显示 WPS Template 项目下的 lib 文件夹,然后选择 File => Import => File System。出现了 Application Developer 的 Import向导。单击 Next,出现一个对话框。请参阅下面的图 10。对话框看上去应该是空的,里面没有出现任何文件夹结构。单击 Browse以选择 Portal Server 安装的 WEB-INF 文件夹。 WEB-INF 文件夹位于 <WPS_ROOT>\app\web\folder 下面。选择了 WEB-INF 文件夹之后,单击 OK


图 9. 导入 Portal Server JAR 文件
用于导入 Portal Server JAR 文件的向导的抓屏

图 10 中的对话框又出现了,只不过现在对话框中都是 WEB-INF 文件夹的子文件夹结构。导航并展开左边选择列表上的 generic_portlets文件夹。选择文件 allportlets.jarJetspeed-portlets.jar 。接下来,导航并展开左边选择列表上的 lib 文件夹。选择文件 Jetspeed.jarPortalCore.jar


图 10. 选择要导入哪些 JAR 文件
选择了要导入的适当 JAR 文件的“Import - File system”向导的抓屏

在单击 Finish之前,确保没有选择 Create complete folder structure选项。Application Developer 通过在 WPS Template 项目的 lib 文件夹中逐一复制四个 JAR文件来导入这些文件。确保所选的目标文件夹指向 lib 文件夹。如果有任何在进行 Portal Server开发时需要的 JAR 文件,可以将相关的 JAR 文件导入 lib 文件夹中。请记住,您也许要限定此文件夹只包含用于所有Portal Server 项目的 JAR 文件。

图 11. 导入到 lib 文件夹的 JAR 文件
显示要导入 lib 文件夹的 JAR 文件的抓屏

最后,要导入的最后一个文件是 <WPS_ROOT>\app\web\dtd 中的 portlet.dtd 文件。重复前面的步骤(请参考上面的图 9)? 这一次,导航到 dtd 文件夹,然后单击 OK


图 12. 导航到 dtd 文件夹
突出显示了 dtd 文件夹的抓屏

选择 portlet.dtd 文件,如下面的图 13 所示。单击 Finish完成文件导入。


图 13. 导入 portlet.dtd 文件
选择了要导入 protlet.dtd 文件的“Import - File system”向导的抓屏

portlet.dtd 文件的副本会被复制到 WPS Template 项目的 lib 文件夹中。


图 14. 导入到 lib 文件夹的 portlet.dtd 文件
显示导入到 lib 文件夹的 portlet.dtd 文件的抓屏

设置 Java 构建路径

由 Application Developer 执行的导入过程会将所需的 JAR 文件和 portlet.dtd 文件复制到 lib 文件夹。通过将这些文件包括到 WPS Template 项目的子文件夹中,对这些文件的任何引用都会相对于 WPS Template 项目的根目录。这样做是必需的,以便当项目被复制到不同机器上时才能够保持可移植性。例如,将这些基本文件导出到 ZIP文件并将它们导入回来之后,对它们的引用将保持一致。如果这些文件位于 WPS Template 项目的文件夹结构之外,那么在对这些文件的引用无效的环境中,项目本身是不可重用的。

要设置对 JAR 文件的引用,在 WPS Template项目上单击鼠标右键,从上下文菜单中选择 Properties。出现类似于图 15 的“Properties”对话框。从左边的选择列表中选择 Java Build Path。选择 Libraries选项卡页,然后单击 Add JAR按钮。现在,ApplicationDeveloper 会显示 Application Developer 工作区中所有可见的 JAR 文件。


图 15. 设置项目构建路径
显示四个 WPS Template JAR 文件的抓屏

展开 WPS Template 项目,通过按住 CTRL键并逐一单击这四个JAR 文件来突出显示它们。单击 OK,把对所选 JAR 文件的引用添加到项目中。单击 OK,返回到 Application Developer 工作区。对 JAR 文件的引用将出现在 WPSTemplate 项目中。


图 16. 项目中的 JAR 文件引用
显示 WPS Template JAR 文件引用的抓屏

设置 XML Catalog

最后,设置项目模板所需的最后一步是将 Application Developer XML Catalog配置成包含 portlet.dtd 文件的一项。如果您想要利用 Application DeveloperXML 编辑器的关键字自动完成功能,那么最好执行这一步。向 XML Catalog注册 portlet.dtd 文件意味着根据 DTD DocType 创建的新 XML 文件将享受由Application Developer 向导自动创建缺省必要元素的好处。此外,当保存 XML 文档时,还会验证它的结构。

从菜单栏中选择 Workbench=> Preferences => XML => XML Catalog,启动“Workbench Preferences”对话框。


图 17. XML Catalog 设置
XML Catalog 设置的抓屏

单击 New按钮以注册一个新 DTD 文件。在 ID 域中,输入字符串 -//IBM//DTD Portlet Application 1.0//EN ,在 URI 域中,输入 WPS Template/lib/portlet.dtd 。“Edit XML CatalogEntry”对话框如下面的图 18 所示。单击 OK。注:如果您使用的Application Developer 是不同版本,那么“Edit XML Catalog Entry”对话框看上去可能会不同。


图 18. 向 XML Catalog 注册 portlet.dtd
“Edit XML Catalog Entry”对话框的抓屏

创建 portlet.xml 模板

现在,我们已经向 XML Catalog 注册了 portlet.dtd 文件,已经准备好创建 portlet.xml 文件,该文件将充当所有 Portal Server portlet 项目的模板。在 ApplicationDeveloper 工作区中,选择 WPS Template => PortletRoot => PORTLET-INF。在此文件夹上单击鼠标右键,从弹出上下文菜单中选择 New => Other

New - Select Create a new XML File向导中,选择 XML File作为要创建的文件类型,然后单击 Next。接着,选择 Create XML file from a DTD file选项,然后单击 Next。这会告诉Application Developer 向导通过使用所提供的 DTD 文件来生成新的 XML。确保输入了 WPSTemplate 项目下的 PORTLET-INF 文件夹作为要创建的新 XML文件所在的位置。输入 portlet.xml 作为新 XML 文件的文件名。完成时单击 Next


图 19. 指定 XML 文件的位置和名称
让您指定 portlet.xml 作为文件名的“XML File Name”向导的抓屏

选择 Select File from XML Catalog选项。现在显示了可用的系统和用户DTD 的列表。选择 portlet.dtd 项,然后单击 Next继续。


图 20. 选择要使用的 portlet DTD
选择了 portlet.dtd 项的“Select DTD File”向导的抓屏

最后,确保选择了 Create required content only选项。此选项会导致 Application Developer 创建带有必要元素的 portlet.xml 文件。


图 21. 指定 Document Type 信息
可以让您指定文档类型信息的“Select Root Element”向导的抓屏

生成的 portlet.xml 文件应该看起来类似于下面的图 22。


图 22. 完整的 portlet.xml 文件
显示了完整的 portlet.xml 文件的抓屏

现在,您已经创建了适合于 portlet 开发的干净项目模板。





回页首


结束语

与 WebSphere Portal Server 相关的开发活动通常涉及到编写扩展Portal Server 缺省行为的 Java 类或者处理内容检索和再现的 portlet 代码。尽管对于此类开发还不存在专门化的Application Developer 插件,但使用 Application Developer 仍有可能快速开始 Portal Server开发。通过使用构建在 Application Developer 中的某些脚本编制功能,可以自动执行 portlet代码编译和部署以提高生产率。开发人员可以把精力集中到实现 portlet 项目的逻辑,然后让自动功能处理构建和打包活动。

在本文中,我们探讨了使用 Application Developer 创建Portal Server 项目所需的步骤。向您介绍了 Application Developer的内置制作工具,并演示如何利用它来自动完成项目开发过程的构建和打包阶段。在本系列的下一部分中,我将演示对于某个现有portlet 项目,如何重用本文中创建的项目模板。






回页首


下载

名字大小下载方法
helloworld_source.zip448 KBHTTP
template_source.zip439 KBHTTP
listing1.zip2 KBHTTP
关于下载方法的信息


参考资料

使用 WebSphere Studio Application Developer 的 WebSphere Portal Server 开发 — 第 1 部分:Portal Server 2.1 的动态主题定制



关于作者

照片:Alvin Khor

Alvin Khor 是位于新加坡的 IBM Emerging Technology Center 的专职软件工程师,他在那里担任普及计算领域的应用程序开发的技术团队领导。在加入 IBM 之前,他从事过各种技术领域工作,包括数据仓库、语音处理和多媒体。在 IBM 中任职时,Alvin 工作过的领域包括转码、WAP、门户站点和个性化以及宽带联网,而且正在开始开发支持语音的应用程序。除了开发活动之外,Alvin 还参与亚洲各地关于 PVC 主题的培训指导。1993 年,Alvin 在英国获得了 Essex 大学计算机科学荣誉学位。可以通过 khorewa@sg.ibm.com联系 Alvin。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款