将 Struts 应用程序迁移到 WebSphere Portal
 

2009-05-14 作者:Colin Yu 来源:ibm

 
Struts 是一个流行的开放源代码开发框架,它提供了一种便利的方式,可以用于将模块化的应用程序清楚地分解成逻辑、表示和数据。IBM WebSphere Portal 包含内置的 Struts Portlet Framework,使得 Struts 能够继续普及到门户应用程序。本文将展示可以如何使用 Struts Portlet Framework 来迁移现有的 Struts 应用程序并将其部署到部署到 WebSphere Portal 中。

Struts 是一个流行的开放源代码开发框架,它提供了一种便利的方式,可以用于将模块化的应用程序清楚地分解成逻辑、表示和数据。IBM WebSphere Portal 包含内置的 Struts Portlet Framework,使得 Struts 能够继续普及到门户应用程序。本文将展示可以如何使用 Struts Portlet Framework 来迁移现有的 Struts 应用程序并将其部署到部署到 WebSphere Portal 中。

引言

Struts是模型-视图-控制器(Model-View-Controller,MVC)框架最著名的开放源代码体现之一,它提供了一种便利的方式,可以用于将模块化的应用程序清楚地分成逻辑、表示和数据。JavaServer Pages(JSP)在 MVC 框架中通常是作为视图(View),它根据业务逻辑和数据生成动态用户界面(UI)。Struts非常流行,因为它能够帮助开发人员有效地设计 Web应用程序。

IBM? WebSphere? Portal 包含内置的 Struts Portlet Framework,使Struts 能够继续普及到门户应用程序。可以通过使用 Struts Portlet Framework 来迁移现有的 Struts 应用程序并将其部署到 WebSpherePortal 上。

IBM WebSphere Studio Application Developer(以下简称为 ApplicationDeveloper)有内置的工具和运行时支持,可以用于开发 Struts应用程序并对其进行单元测试。通过 ApplicationDeveloper 中的 WebSphere Portal Toolkit,也可以使用 WebSphereStudio 来开发门户应用程序并对其进行单元测试。

本文将描述如何使用 WebSphereStudio 来将现有的 Struts应用程序迁移到门户应用程序。本文假设您具备 Struts和 WebSphere Studio 中的 Struts工具的基础知识。(要了解关于本主题的基本信息,请参阅 用WebSphere Studio V5 编写一个简单的 Struts 应用程序。)

开发的先决条件

在本文中创建的门户应用程序是针对 WebSphere PortalV5。因此,需要如下软件来完成本示例:

  • WebSphere Studio Application Developer Version 5.01
  • WebSphere Portal Toolkit Version 5 安装有 WebSphere Portal V5 Unit Test Environment。

下面概括了安装您所需软件的步骤的顺序:

  1. 安装 WebSphere Studio Application Developer V5。
  2. 安装 WebSphere Studio Application Developer 5.01 PTF
  3. 将 WebSphere Application Server 5.01 PTF 安装到 WebSphere Test Environment(要了解更多细节,请参考 WPS_CDSets\cd0\PortalToolkit\InstallGuide\was_ptf1.htm )。
  4. 安装 WebSphere Application Server 5 Interim fixes(要了解更多细节,请参考 WPS_CDSets\cd0\PortalToolkit\InstallGuide\was_ptf1.htm )。
  5. 安装 WebSphere Portal Toolkit V5。在安装的过程中,请确保选择了 WebSphere Portal V5 单元测试环境。系统将提示您使用 WebSphere Portal V5 CD 或安装文件夹,所以请确保您手边有 CD 或者在安装前下载 CD 的镜像。

创建并测试一个简单的Struts 应用程序

我们从 下载一个已创建好的样本 Struts项目开始。如果您想要了解有关使用 WebSphere Studio V5创建简单的 Struts 应用程序的细节,请参考文章 用 WebSphere Studio V5 编写一个简单的Struts 应用程序,该文章同样适用于 WebSphere Studio V5.01。它们之间的区别在于WebSphere Studio V5 支持 Struts 1.1 Beta 2,而 WebSphere Studio V5.01支持 Struts 1.1 Beta 3;在您计划迁移到门户应用程序的 StrutsWeb 项目中,您将需要使用 Struts 1.1 Beta 3 框架。

下载本文包含的 SimpleStruts.ear ,然后遵循如下步骤以测试该 SimpleStruts项目:

  1. SimpleStruts.ear 导入 Application Developer 工作区。您将创建两个项目: SimpleStruts SimpleStrutsWeb
  2. 创建 WebSphere Test Environment V5 服务器实例和配置。
  3. SimpleStruts 应用程序添加到服务器配置中。
  4. 启动服务器。
  5. 右键单击 SimpleStrutsWeb\Web Content目录下面的 submitpage.jsp并在上下文菜单中选择 Run on Server

    图 1. 一个简单的 Struts 应用程序
    一个简单的 Struts 应用程序
     
  6. 提交带有一些信息的表单以查看结果。
  7. 测试过后,关闭服务器。

将此简单的 Struts应用程序迁移到一个 Portal 应用程序中

  1. 使用 Portlet Struts Framework 替换 Apache Struts Framework;WebSphere Portal 为 Portal 环境重新编写了 Apache Struts Framework 的实现,因此您需要使用如下所示的相关 JAR 文件和 TLD 文件:
    1. WSAD_InstallDir\runtimes\portal_v50\dev\struts\StrutsPortlet\PortalStrutsBlank.war 导入到工作空间。使用 PortletStrutsBlank 作为此 Web 项目的名称并创建一个新的 Enterprise Application 项目来包括该 Web 项目。
    2. PortletStrutsBlank\Web Content\WEB-INF\lib 中的所有 JAR 文件复制到 SimpleStrutsWeb\Web Content\WEB-INF\lib
    3. PortletStrutsBlank\Web Content\WEB-INF\tld 中的所有 TLD 文件复制到 SimpleStrutsWeb\Web Content\WEB-INF
    4. portlet.tld 导入到 SimpleStrutsWeb\Web Content\WEB-INF\ 。可以在 WSAD_InstallDir\runtimes\portal_v50\shared\app\WEB-INF\tld 中找到此标记库文件。
  2. 修改 Web 部署描述符:
    1. 打开 SimpleStrutsWeb\Web Content\WEB-INF 下面的 web.xml
    2. 单击 Servlets选项卡,然后将 Servlet 的名称从 action更改为 Struts
    3. Struts的 Servlet 类更改为 com.ibm.wps.portlets.struts.WpsStrutsPortlet。因为编辑器不认为 WpsStrutsPortlet 是一个 Servlet,所以您可能难以从编辑器的 Servlets选项卡更改类的名称。因此,您需要切换到编辑器的 Source选项卡并如下更改类名:

      <servlet-name>Struts</servlet-name> <servlet-class>com.ibm.wps.portlets.struts.WpsStrutsPortlet</servlet-class>

    4. 将 Struts Servlet 的 URL 映射从 /*.do 更改为 /Struts/*
    5. 确保初始化参数 config 指向 Struts 配置文件,然后添加一个新的名为 struts-servlet-mapping 的初始化参数:

       
      参数名称 参数值
      config /WEB-INF/struts-config.xml
      struts-servlet-mapping *.do
    6. 单击 Pages选项卡,删除 Welcome Pages列表中所有的项,然后将 submitpage.jsp 添加到 Welcome Pages 列表。
    7. 保存此 Web 部署描述符。
  3. 修改 Struts 配置文件:将下列元素添加到 SimpleStrutsWeb\Web Content\WEB-INF 下的 struts-config.xml 中的 <struts-config> 元素:

    <controller processorClass="com.ibm.wps.portlets.struts.WpsRequestProcessor">
    </controller>

  4. 创建 Portlet 部署描述符:
    1. portlet.xml PortalStrutsBlank\Web Content\WEB-INF 复制到 SimpleStrutsWeb\Web Content\WEB-INF
    2. 在编辑器中打开 portlet.xml
    3. Portlet Application项,将 Display name 更改为 Pizza Order Application ,然后将 UID 域更改为 PizzaOrderApplicaton:1 ,如图 2 所示。您需要确保 UID 在部署到 WebSphere Portal 的所有门户应用程序中是惟一的。

      图 2. 修改 portlet.xml
      修改 portlet.xml
       
    4. Portlet Application下的 Portlet_1项,将 Portlet 的 Display name 更改为 Pizza Order Portlet 。单击 Browse按钮,然后从弹出窗口中选择 Struts作为 Portlet 的实现,如图 3 所示。

      图 3. 修改 portlet.xml
      修改 portlet.xml
       
    5. 从编辑器中选择 Concrete Portlet Application项。将 Display name 更改为 Pizza Order Application 并将 UID 更改为 PizzaOrderApplication:1.1 ,如图 4 所示。

      图 4. 修改 portlet.xml
      修改 portlet.xml
       
    6. 选择 Concrete Portlet Application下的 Portlet_1项,然后将 Display name 更改为 Pizza Order Portlet 。将标题(Title)、短标题(Short title)和描述(Description)的值更改为 Order a Pizza
    7. 保存此 Portlet 部署描述符。
  5. 修改 JSP 中的 HTML 标记:Portlet 不能包含一般的 HTML 标记,因此您需要对应用程序中的所有 JSP 作出如下更改:
    1. 删除 <!DOCTYPE> 标记。
    2. 添加一个新的标记库:

      <%@ taglib uri="/WEB-INF/struts-portal-html.tld" prefix="portalhtml" %>

    3. <HEAD> 标记更改为 <portalhtml:head>
    4. <BODY> 标记更改为 <portalhtml:body>
  6. 测试此 Portal 应用程序:
    1. 创建 WebSphere Portal V5 Test Environment 服务器实例和配置。
    2. 将企业项目 SimpleStruts添加到服务器配置中。
    3. 启动服务器。
    4. 右键单击项目 SimpleStrutsWeb并从上下文菜单中选择 Run on the server...
    5. 此门户应用程序的首页将如图 5 所示。

      图 5. 在迁移后测试门户应用程序
      在迁移后测试门户应用程序
       
    6. 提交带有一些信息的表单以查看结果。(您可以从本文的 下载部分获得此应用程序的一个迁移后的副本 SimpleStrutsPortal.ear 。)

结束语

现在,由于 WebSphereStudio中包含了流线型的过程,所以通过遵循本文所提供的一般说明,将Struts 应用程序迁移并部署到 WebSphere Portal会比从前容易得多。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织