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

developerWorks 中国  >  WebSphere  >

CCF 到 J2C 的迁移: 第 4 部分:将应用程序从 VisualAge for Java CCF IMS 迁移到 WebSphere Studio J2C IMS

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Ellen Matheson McKay (ecmckay@ca.ibm.com), WebSphere Information Developer, IBM Toronto Lab
Barry Searle (searle@ca.ibm.com), WebSphere Studio Developer, IBM Toronto Lab

2004 年 3 月 01 日

这篇由五个部分组成的系列文章向您介绍如何将应用程序从 VisualAge for Java Common Connector Framework(CFF)迁移到 WebSphere Studio J2EE Connector Architecture(JCA/J2C)。第 4 部分为您展示如何设置 WebSphere Studio CCF Migration Assistant,以及如何将 CCF IMS 构件迁移到 WebSphere Studio Application Developer Integration Edition。(术语注解:JCA,J2EE Connector Architecture 的旧缩写,现在用来表示 Java Cryptography Architecture。J2EE Connector Architecture 的新缩写是 J2C。)

引言

本文是一系列介绍从 IBM VisualAge for Java CCF 到 WebSphere Studio J2C 的迁移的文章的一部分,这一系列文章描述了将应用程序从 CCF CICS ECI、IMS 或 WebSphere MQ 迁移到 J2C 的典型活动。这一系列文章包括以下几个部分:

CCF 到 J2C 的迁移:第 4 部分:将应用程序从 VisualAge for Java CCF IMS 迁移到 WebSphere Studio J2C IMS

本文的大部分内容和这一序列文章的 第 3 部分同样是描述 CICS-ECI 的迁移。在大多数情况下,“CICS-ECI”简单地用“IMS”来代替,但它们还是有些区别的:

  • CICS-ECI 安装的是 WebSphere Studio IMS RAR(资源适配器)而非 CICS RAR(或除它之外)。
  • CICS-ECI 从 IMS Connector for Java(IC4J)产品复制 imsconn.jar,而非从 CTGateway 产品复制 ctgclient.jar(或除它之外)。imsconn.jar 也可作为可用工具的一部分从 IC4J Web page下载。(单击 IMS Connector for Java,然后单击 downloads)。在下载和安装所有 IC4J 工具之后,请查看目录 IMSICO\CCF。
  • CICS-ECI 安装然后迁移 VAJ IMS PhoneBook(Command)样本,而非 CICS-ECI Adder 样本(或者除它之外)。
  • CCF Migration Assistant(CMA)处理 CICS-ECI 和 IMS 构件都是使用同一个 CMA。
  • 有特定于 IMS 的 构件(Command 和 Record)限制和指导原则
  • 有特定于 IMS 的 应用程序限制和指导原则

另外,我们假定许多 IMS 程序设计人员可能没有读过 CICS-ECI 文章,所以本文写得比较全面,它包含完整的 IMS 迁移信息。





回页首


概述

VisualAge for Java 使用 Common Connector Framework(CCF)来简化访问主机 Enterprise Information Systems(EIS's)的 Java 应用程序的创建和维护。这些 EIS 资源是典型的 Customer Information Control System(CICS)事务、Information Management System(IMS)事务或者 WebSphere MQ 消息队列。VisualAge for Java Enterprise Access Builder(EAB)能够提供创建 CFF 连接器对象(Java Command 和 Record 类)的工具以及使用这些 CCF 连接器对象的应用程序,从而支持 CFF 框架。

由于 CCF 框架的价值已被认可和接受,IBM 已经提交它以考虑将其制订为行业标准。经过评审和修改,它就成为了 J2EE Connector Architecture(J2C)。虽然 J2C 和它的前身 CCF 相类似,但还是存在许多显著的区别,迁移还是有很大价值的。因此,将现有的应用程序从 VisualAge for Java CCF 迁移到 WebSphere Studio J2C 是可取的(只要存在等价的 J2C)。本文包括两个主题:

  • EAB 工具生成的 CCF IMS 连接器构件的迁移
  • 开发人员编写的使用这些对象的 IMS 应用程序的迁移

重要:如果您的 CCF IMS Command 和 Record 的数量还不到十来个,那么最好的方法就是在 WebSphere Studio 中手工重新生成 J2C 构件,并手工迁移您的应用程序。如果您有多于 100 个左右的 CCF Command 和 Record ,那么使用本文介绍的方法和 CCF Migration Assistant(CMA)是您迁移到 WebSphere Studio J2C 最简单的途径。如果您有 10 个至 100 个 CCF 命令和记录,那么推荐您阅读本文,然后自己决定采取哪种途径。





回页首


迁移帮助服务

IBM WebSphere Services 有各种各样的迁移帮助,顾客都可以购买到:

  1. WebSphere Application Server V3.5 => V4 => V5 应用程序迁移的在线培训或帮助
  2. CCF 应用程序迁移、工作描述和有效范围的在线评估
  3. 安装并熟悉 CCF Migration Assistant (CMA)程序
  4. 小应用程序或应用程序组件的试验迁移
  5. 较大的应用程序的选择性迁移

要获取进一步的信息,请联系:

  • 北美或南美洲:Mitch Johnson,请通过邮箱 mitchj@us.ibm.com 或电话 1-919-254-0065 联系
  • 欧洲或中东:Richard Johnson,请通过邮箱 richardj@uk.ibm.com 或电话 44-1962-817714 联系
  • 亚太地区:Rick Jones,请通过邮箱 rick.jones@au1.ibm.com 或电话 61-2-9478-8219 联系




回页首


构件(服务)和应用程序(Web 或 Java)项目的最佳实践

VisualAge for Java IMS PhoneBook(Command)样本将生成的 CCF 构件及其 Ex01Execute 应用程序放在一个项目中(因为总共只有九个 Java 文件)。您的特定 VisualAge for Java CCF 应用程序可以只有一个 VisualAge for Java 项目,也可以有多个,这取决于您的 CCF 应用程序 VisualAge for Java 项目的组织方式。

迁移到 WebSphere Studio 的期间是保证正在进行迁移的项目结构遵循简单的“最佳实践”的最佳时间。我们建议您准备一个或多个 WebSphere Studio Service 项目来包含相关的 J2C Service 组,以及一个或多个 Web 或 Java 项目来包含您的应用程序(一般来说,您的整个应用程序中的的每个主要子系统都有一个 Web 或 Java 项目):

  • 例如,您可能有一个 WebSphere Studio 服务项目 —— PersonnelServices —— 它包含一组访问 CICS 个人程序和 IMS 个人程序的服务。
  • 另外,您可能还有一个使用 PersonnelServices 项目的 WebSphere Studio Web 项目 —— PersonnelWeb, 一个使用其他 InventoryServices 项目的 InventoryWeb 项目,以及一个通过前两个 Services 项目来访问管理程序的 AdminJava 项目。
  • 这些服务和 Web 项目或 Java 项目组合在一起就构成了完整的应用程序。

一个小小的逻辑结构大大简化了对这些项目长时间的了解和维护。





回页首


从 CCF 到 J2C IMS 的迁移步骤

本文详细描述了如何将应用程序从 CCF IMS 迁移到 J2C IMS,其中包括以下步骤:

  1. 设置VisualAge for Java 和 WebSphere Studio Integration Edition。
  2. 从 VisualAge for Java 导出 CCF IMS 类构件和 CCF IMS 应用程序源代码。
  3. 导入 CCF IMS 构件并将其迁移到(使用 WebSphere Studio CMA)J2C。
  4. 导入并手工迁移 CCF IMS 应用程序(使用 从 CCF 迁移到 J2C IMS 编码指导原则)。这种应用程序迁移活动包含了所有的应用程序生命周期维护,从而能够适应新的 JDK 级别、新的 Server API 等等。
  5. 部署和测试
  6. 迁移的 J2C 构件和应用程序的 生命周期维护




回页首


步骤 1. 设置 VisualAge for Java 和 WebSphere Studio

  1. CCF 迁移概述文章所述,请确保您正确设置了 VisualAge for Java V3.5.3 或 V4.0 :
    • 本系统必须包括您的 CCF IMS 应用程序和生成的 IMS 构件(Command 和 Record)。
    • 可选项:CCF IMS PhoneBook(Command)样本(如果您希望像本文所介绍的那样对它进行迁移的话)。

  2. CCF 迁移概述文章所述,确保您正确设置了 WebSphere Studio V5.1.1:
    • 确保必需的补丁包和所有必需的临时补丁以下图所示方式进行安装:

    • 按照 IMS/MFS 样本的安装说明中的“Building a service that submits commands to IMS ”样本(来安装您的 IMS RAR,并确保一切都设置好了并可操作):

      并确保所有必需的资源适配器(在本文中为 IMS)都已经安装到 RAR 项目中(以下所示为 Cics、Ims 和 Hod3270 项目):

    • 确保安装了 CCF Migration Assistant(CMA)插件:
      • 概述这篇文章介绍了如何请求和获得 CMA 插件。
        CMA 插件 并非 WebSphere Studio 的一部分也 受它支持 —— 您不能调用 IBM 支持和请求帮助,或者向它报告相关的问题。
      • 要获得该插件,请允许有一到两周的时间来完成以下的事情:
        • 发送电子邮件到 searle@ca.ibm.com 请求该插件。
        • 我们返回给您包含“As-Is”许可的电子邮件。
        • 您返回给我们接受该许可的电子邮件。
        • 我们返回给您包含当前 CMA 插件的电子邮件(或者 FTP 指令)。
  3. 以上步骤是是必要的,它能够让您明确该插件是我们按“仅此状态”提供给您的,并且如果有什么最新的 CMA 的话,我们也将会发送给您。以下屏幕截图显示了在安装完 CMA 插件之后插件注册中心看起来的样子:





回页首


步骤 2. 导出 VisualAge for Java CCF 构件和 CCF 应用程序

您可以将 CCF 构件类(和可选的源文件)外加 CCF 应用程序源文件(和可选的类)一起导出到一个 Java Archive (JAR)文件中。事实上,如果您现在还采用将构件外加应用程序导入到 WebSphere Studio,然后编辑源文件并重新编译所有的文件这种不受支持的方法,那么上述过程将是最简单的。正如 CCF 迁移概述文章所提到的那样,这一过程看起来对大多数应用程序都是有效的,但事实上它是 受支持的,因为它还 没有由 IBM 进行广泛的系统测试。由于有不同的 JDK 编译器级别、不同的支持库,所以它们可能还存在着一些小问题。

XxxxBeanInfo 助手类只用于 VisualAge for Java,在迁移的过程中不需要使用它(只需使用 XXXXRecord、XXXXRecordType 和 XxxxCommand 类)。XxxxBeanInfo 构件 可以包含在导出的 JAR 中,但 CMA 程序不会运行它们,并在 CMA 日志中写入一个对这种现象的警告。如果只导出 Command、Record 和 RecordType 类 ,则 JAR 文件会显得更加简洁。Java 源文件也可包含在导出的 JAR 文件中,但它们通常会被 CMA 程序忽略。

在通常情况下,对于 CCF Migration Assistant (CMA)迁移,您需要将所有 CCF 生成的构件迁移到 JAR 文件中。在您迁移 CCF Adder sample 时,您可能需要将生成的 CCF 构件类导出到一个名为 IMSphoneClasses 的 JAR 文件中。因此,要导出 PhoneBook(Command)> 构件,您需要执行以下操作:

  1. 展开 com.ibm.connector.ims.sample.phonebook.command 包,右键单击来选择必需的 EX01Command、InMsg、OutMsg、InMsgInfo 和 OutMsgInfo 多个文件。
  2. 然后单击 Export => JAR file => Next => .class(如果愿意,也可把 .java 文件选上;CMA 会忽略它们)。
  3. 在 JAR file 字段内,键入 C:\CCF\IMSphoneClasses.jar 然后单击 Finish。这样就可导出 CCF 构件了:

  4. 同样,对于 CCF 应用程序迁移,请选中 Ex01Execute,并将它的一个 .java 源文件导出到 C:\CCF\IMSphoneExecute.jar

对于这个小样本,您可能更倾向于将所有必需的 .class 和 .java 文件放在一起导出到 C:\CCF\IMSphoneEverything.jar 文件中。如果您想尝试不受支持的导入,然后在 WebSphere Studio 中对它进行编辑和重建,那么这种方法就是最简单的。





回页首


不受支持:WebSphere Studio 源代码的导入以及 CCF 构件和应用程序的重建

大部分的 CCF 应用程序和 CCF 构件看起来都能够在 WebSphere Studio 中很好地重建,然后在 WebSphere Application Server 中成功地运行。但由于 Java 编译器级别的不同、使用其他最新的库文件以及系统 API 的改变等原因造成了它们 不能被测试和支持。因此,短期 CCF 应用程序维护的一个不受支持的方法是将 CCF 连接器安装到 WebSphere Studio 和 WebSphere Application Server 中(请参阅 关于局限的文章,并注意实际安装 CCF 连接器时需要运行时许可并且需要在 WebSphere Application Server 中使用),然后将 EAB 生成的 CCF 构件(生成的 command 和 record 类的 Java 源代码)导出到 WebSphere Studio 中。

开发人员编写的 VisualAge for Java CCF 应用程序的 Java 源代码以及生成的 CCF 构件可以作为一个 JAR 文件导出,并可将其导入到某一 WebSphere Studio Java 项目中,与其他的 Java 程序一样。因为它们仅仅是 Java 源文件,同时 WebSphere Studio 不能重新生成任何的 CCF 构件,这样您就可以使用缺省的 WebSphere Studio Java 编辑器对它们进行编辑了。例如,假设您要将所有的 VisualAge for Java IMS PhoneBook (Command)文件导出到 IMSphoneEverything.jar 中,然后将其导入 WebSphere Studio,您就可以按照以下的步骤来进行:

  1. 创建一个 Java 项目。单击 File => New => Project => Java => Java project => Next, 然后在 Project Name 字段中输入 CCFphoneIMS ,并单击 Finish,这样就可创建一个 Java 项目了。
  2. 导入 CCF 源文件:
    1. 选择 CCFphoneIMS 项目,然后单击 File => Import => Zip file => Next。找到您的 C:\CCF\IMSphoneEverything.jar,然后单击 Finish 将它植入到 Java 项目中。
    2. 如果您还导出了 XxxxBeanInfo 文件(Ex01CommandBeanInfo 或 InMsgBeanInfo 或 OutMsgBeanInfo),那么请将它们选中并删除。
  3. 根据依赖性排除错误:
    1. 您的 IMS CCF 应用程序需要创建和运行 IMS Connector for Java (IC4J)的 imsconn.jar。您可以创建一个项目 ImsConn,然后将该文件放在这个项目中以便共享使用,但由于我们只有一个 CCF IMS 项目,最简便的方法就是将它(作为一个文件系统文件)导入到项目中。
    2. 现在请单击 Libraries 选项卡。imsconn.jar 和四个 WebSphere Application Server 主运行时 CCF jar(ccf.jar、eablib.jar、j2ee.jar、recjava.jar)都必须在构建路径中,而且在任务视图中不能显示有编译错误。

  4. 执行 —— 请右键单击 Ex01Execute 类并选择 Run。这样在控制台视图中就会有一个成功的 CCFphoneIMS 执行结果。

  5. 部署和测试 —— 您也可以将重新编译的 CCFphoneIMS 应用程序(以及必要的 CCF 运行时 JAR)部署到一个远程的工作台上,然后运行它。




回页首


步骤 3. 使用 WebSphere Studio CCF Migration Assistant(CMA)将 CCF 构件迁移到 J2C

  1. 将 CCF 构件作为一个文件系统文件(使之成为一个 JAR)导入到期望的 Service 项目中。
  2. 使用程序将这些构件从 CCF 迁移到 J2C。
  3. 最后,在 WebSphere Studio 中进行正常的生命周期维护。

1. 将 CCF 构件 JAR 导入 WebSphere Studio Service 项目中

  1. WebSphere Studio CMA 插件:确保它是在 WebSphere Studio Setup 过程中安装的。
  2. WebSphere Studio IMS RAR 项目:确保它是在 WebSphere Studio Setup 过程中安装的。
  3. 创建您想要的 J2C Service 项目:
    1. 单击 File => New => Project => Business Integration => Service Project => Next,并在 Project Name 中输入 IMSphoneServices
    2. 单击 Next => Projects => Ims => Finish。这样就加入了 Ims RAR 项目运行时依赖性。
  4. (作为一个文件系统文件)导入 CCF 构件 JAR:
    1. 选择新的 IMSphoneServices 项目,然后单击 File => Import => File system => Next。定位到您的 C:\CCF\IMSphoneClasses.jar 文件,然后单击 Finish 导入并保留为 JAR 文件。

2. CMA 将 CCF 构件迁移到 J2C Service 中

  1. 右键单击 IMSphoneClasses.jar 并选择 Migrate CCF artifacts
  2. VisualAge for Java 可以使用几种不同方式的访问器方法来生成代码:

    • “shorten”方式的形式为 Xxx__Yyyy。
    • “no shorten”方式的形式为 XXX__YYYY。
    • WebSphere Studio Integration Edition 的形式为 Xxx__yyyy。
  3. 选中 no shorten names compatibility option 单选按钮,然后单击 Next

  4. 选中 Do not generate JNDI Name entry,然后单击 Finish

  5. CMA 进行迁移并最后完成,其结果是创建 Command、Record 和 RecordFormatHandler Java 类以及 WSDL 元数据文件:

在这个阶段已经有了一个 J2C 服务代理、一个数据 bean 以及一个 CICS ECI Adder 程序的 Format Handler 助手类。您还需要迁移一个实际使用它的应用程序,如下面的步骤 4 所示。

在这个阶段已经有了一个 J2CsService 代理(CommandBean)、一些数据 bean(Message)以及 IMS PhoneBook(Command)程序的助手类。您还需要 迁移一个实际使用它的应用程序(步骤 4)





回页首


3. 在 WebSphere Studio 中进行 J2C 构件维护

现在,您只需要对 WebSphere Studio 中的 J2C 构件进行正常的生命周期维护。惟一需要特别注意的是:

  • 无论什么时候您重新生成一个 J2C 构件,都请记住要使用同样的选项( name style 等)来保持现有的应用程序的兼容性。
  • 如果您使用 CMA 生成的 CCF 兼容性方法来加速您原始应用程序的迁移,那么任何时候在 WebSphere Studio 中重新生成您的应用程序时,这些方法都会自动保持在服务代理中。




回页首


步骤 4. 按照迁移编码指导原则迁移 CCF 应用程序来使用 J2C 构件

  1. 使用 从 CCF 迁移到 J2C 应用程序指导原则来修改 CCF 应用程序以便使用迁移的 J2C 构件。

1. 将 CCF 应用程序导入到 Web 或 Java 项目中

  1. 创建您想要的应用程序 Web 或 Java 项目:
    1. 单击 File => New => Project => Java => Java Project => Next 然后为 Project Name 键入 IMSphoneApplication
    2. 单击 Next 并选择 Projects 选项卡。选择 IMSphoneServices,然后单击 Finish。这样就添加了 IMSphoneServices 项目的构建和运行时依赖性。
  2. 从 JAR 文件中导入 CCF 应用程序:
    1. 选择您新创建的 IMSphoneApplication project
    2. 单击 File => Import => Zip file => Next,然后定位到您的 C:\CCF\IMSphoneExecute.jar 文件。
    3. 单击 Open => Finish 来导入该应用程序(也就是用于 PhoneBook(Command)样本的一个 Ex01Execute.java 文件)。





回页首


2. 使用从 CCF 迁移到 J2C 应用程序指导原则来迁移应用程序

  1. 需要在构建和运行时访问 org.apache.wsif.WSIFException 及其他的 WSIF 类会带来一个典型的错误(如下图所示):

    1. 一种典型的节省时间的方式是定义一个工作台环境变量(要定义该变量,请单击 Window => Preferences => Java => Classpath Variables,然后单击 New 并将它命名为 WAS_50_LIB)来允许添加 Library JAR 文件,与 Add Variable > Extend > WAS_50_LIB\lib 扩展一样。
    2. 右键单击 IMSphoneApplication 项目,然后单击 Properties => Java build path。选择 Libraries 选项卡并单击 Add External JARs 来添加 WebSphere Application Server 运行时库 JAR 文件 j2ee.jar、qname.jar、wsatlib.jar、wsif.jar 和 wsif-j2c.jar:

  2. 另一组标准错误(如下图所示)是要求我们删除所有旧的 com.ibm.connector.* import。

  3. 同时还有一组标准错误(如下图所示)是要求我们删除所有旧的 JavaRuntimeContext 代码,因为现在 J2C Service WSDL (Ex01CommandImsService.wsdl)已经不再对它们进行处理了。

  4. 同时也删除了所有的 setHostName、setPortNumber 和 setDataStoreName 代码(它们也是在同一个 Service.wsdl 中删除的)。
  5. 同时也删除了使用 RuntimeContext 的 JavaRASService、RASService、ConnectionManager 和 IMSLogonInfoItems 代码:

  6. 另外还有一组标准错误(如上图所示)与新的 J2C 命令调用方式有关。从 CCF 迁移到 J2C 应用程序指导原则描述了为使用 Command 和 Record 而需要对标准应用程序进行的更改。我们可以使用可选的 CMA 生成的 CCF 兼容性方法来使短期应用程序改动的时间减到最少(从而加速应用程序从原始的 CCF 迁移到 J2C 的过程)。使用这些短期的(已弃用的)CCF 兼容性方法的应用程序必须在应用程序生命周期维护期间做一些改动,以便使用当前的 J2C 调用方式。

    例如,旧的 CCF Command.setOperand() 加 Command.execute(CommandEvent) 模型:

    • ...是已弃用的兼容性调用方法,即 new Record() 和 Record.setOperand() 和 Command.setCeInput(Record) 和 Command.execute()
    • ...但是最佳实践是新的 J2C 调用,即 new Record() 和 Record.setOperand() 和 Command.setEx01CommandRequestPart(Record) 和 Command.execute()

    另一个例子是旧的 CCF Command.getOutput() 模型(它在内部是 Command.getCeOutput0()):

    • ...是已弃用的兼容性调用方法,即 Command.getOutput()
    • ...但是最佳实践是新的 J2C 调用方法,即 Command.getEx01CommandRequestPart()

  7. 另一个错误(IMS 模式改变)是 CCF IMS Command.getOutput():
    • 它通常用于返回 OutMsg;
    • 如果出错了,则(从 Command.getDFSData1() 和 Command.getDFSMessage())返回 DFSMsg;
    • 因此应用程序应该接收对象,然后对它进行测试以便得到正确的 OutMsg 类型:

    • 在 J2C 中,应用程序只是得到一个 OutMsg,同时还捕捉到一个 WSIFException(在内嵌的 IMSDFSMessageException 的情况下):

  8. 删除所有注释代码之后,基本的代码看起来就像这样:

  9. 最佳实践:WSIFException 本身通常并不能给我们提供多少信息。但最佳实践包含了一个 TargetException,它能给我们提供更多的信息(因为它是一个真实的错误)所以我们应该获取并显示它。同时,许多的 TargetException 错误是真正的 javax.resource.ResourceException 错误,它们具有一个包含了根错误的 LinkedException。最佳实践就是始终设法从任何捕捉到的 WSIFException 中提取包含最多信息的消息:





回页首


步骤 5. 部署和测试(执行)迁移的应用程序

  1. 打开 Ex01Execute.java 程序并单击 Run

如果您由于“WSIF1008E: Exception port out range:-1 error”而执行失败,则表明 Ex01CommandImsService.wsdl 的 ims:addresss 没有正确地进行 CMA 迁移(典型原因是由于它是在原始应用程序中动态设置的)。您可以手工编辑 Ex01CommandImsService.wsdl 来改正这个错误。

如果您手工编辑 Service.wsdl,那么根据您所运行的 WebSphere Studio Integration Edition 的版本和补丁级别的不同,您可能会得到一个不必要的“ cvc-complex-type.2.4.c: 'ims:address'”警告。 请忽略它 —— 因为没有用户编辑会消除这种不必要的警告。

重要: 在 WebSphere Studio 执行期间,如果 没有选中 Run => Classpath => Use default classpath 选项,则您可能会由于代码页-037 不可用而得到一个 WSIFException 失败。确保您是以缺省的类路径运行的(它包含完整的代码页支持)。





回页首


步骤 6. 在 WebSphere Studio 中正在进行迁移的应用程序的生命周期维护

现在,您需要执行的步骤是在 WebSphere Studio 中对您的 J2C 应用程序进行正常的生命周期维护。有一点需要特别注意的是,如果您使用 CMA 生成的 CCF 兼容性方法来加速初始应用程序的迁移,那么在方便的时候您应该将它们替换为正常的 J2C 方式的 Command 和 Record 调用。由于同时使用两种调用方式,所以您可以一次替换几个。





回页首


CMA 的限制和指导原则

如果有新的 重要 IMS CMA 限制或指导原则,这一部分将会进行更新。CMA 插件包含在线文档,这是关于已知的 CMA 限制、问题和指导原则的最详细和最新的定义。

当前已知的最重要的特定于 IMS 的 CMA 限制和指导原则可以归纳如下:

  1. 只有固定长度的记录(对于长度可变的记录(包括 IMS 多段记录)需要手工修改应用程序)。请参阅应用程序限制部分中关于 多段样本的信息。

当前已知的最重要的一般 CMA 限制和指导原则可以归纳如下:

  1. 只有 CCF IMS (或 CICS-ECI 或 Beta-JCA) 构件(请参阅 CICS-ECI 文章以了解关于 CICS-ECI 的详细介绍)。而没有 CICS-EPI、HOD-3270 和 MQ 构件。
  2. 只有 COBOL 记录(没有 C 和 PL/I)。
  3. 固定长度和动态记录必须使用正常生成的访问器(任何基本框架访问都需要手工迁移)。
  4. 所有的 Record 都要有一个 RecordType(RecordInfo)(否则它们在迁移时会被跳过而需要手工迁移)。
  5. 只有缺省映射是受 RecordTypes 支持的(每个首选类型更改后都需要手工迁移)。
  6. 没有层次样式的记录(需要进行手工迁移)。
  7. CCF 构件中的自定义方法不会被保持(需要手工复制)。
  8. 不会迁移 CCF Navigator(需要手工迁移,最合适的是迁移到 Processes)。
  9. 不会迁移 CCF Mapper(需要手工迁移,最合适的是迁移到 Transformers)。
  10. 不会迁移 EAB SessionBean 和 BusinessObject(需要手工迁移):
    • 如果 EAB SessionBeans 是通过使用 CommandBean 包装生成的,那么这些 CommandBean 可以被迁移,并可在 WebSphere Studio 中部署生成的代码。
    • 如果 EAB SessionBeans 是通过使用 CustomUserMethods 生成的,那么所有的代码都是内嵌的并使用用户方法来命名,所以是不可能自动迁移的。
    • 如果匹配的 SessionBean 是在 WebSphere Studio 中手工重新生成的,那么用户应用程序就可以很容易地进行迁移,通常不需要改动 SessionBean 调用。
  11. 通过提升的 Record 特性生成的 CCF Command 可能要求手工更改应用程序。
  12. 根据服务器和事务名称来组织和导出 CCF 构件(CMA 采用通用的 JNDI ConnectionFactory)。
  13. 根据名称样式来组织和导出 CCF 构件(CMA 在整个 CCF JAR 范围内采用单一的名称样式)。
  14. CMA 以及它的文档只有英文版的(它并不是正式发行的产品)。
  15. 重要: CMA 在线文档是当前的限制和指导原则的最终来源。如果有疑问,请参阅在线文档而不是本文(因为本文可能已经过时了)。





回页首


应用程序的限制和指导原则

如果有新的 重要的 IMS 应用程序限制或指导原则,这一部分可能会进行更新。

当前已知的最重要的应用程序限制和指导原则可以归纳如下:

  1. IMS Web page 中有一个关于 IMS 多段消息处理的示例。
  2. CCF IMS 连接器支持运行带有 SyncLevel Confirm 和 SyncLevel None 的 Commit Mode 1 的 IMS 事务。
    • 带有 SyncLevel Confirm 的 Commit Mode 1 允许将 IMS 事务输出消息返回给 Java 应用程序,以便应用程序决定是对它进行提交还是回滚。
  3. J2C IMS 资源适配器(针对 Java 的 IMS 连接器)不支持与 IMS 交互的带有 SyncLevel Confirm 的 Commit Mode 1。
    • 然而,J2C IMS 资源适配器允许对与诸如 IMS、DB2 和 CICS 这样的资源的一个或多个交互进行两阶段提交(2PC)控制。
    • 2PC 事务支持可用于 z/OS LocalOption 和带有 IMS V8.1 和 J2C IMS 资源适配器 V1.2.5.2 的 RPS。
    • 2PC 事务支持可用于分布式的 TCP/IP 和带有 IMS V7 和 J2C IMS 资源适配器 V2.1.0 的 RRS。
  4. J2C 增强了对 IMS RequestType 和 DFS 消息的处理:
    • 对于 CCF,DFS 消息在 DFSMsg bean 中作为输出返回。
    • 对于 J2C IMSInteractionSpec 特性 imsRequestType 1,请求是一个 IMS 事务。
      • 由 IMS 返回的正常事务输出用于填充应用程序的输出消息。
      • 如果 IMS 返回一个 DFS 消息,则 IMS 资源适配器抛出一个 IMSDFSMessageException。
      • imsRequestType 的值用于不是通过 WebSphere Studio MFS 支持生成的应用程序。
    • 对于 J2C IMSInteractionSpec 特性 imsRequestType 2,请求是一个 IMS 命令。
      • 由 IMS 返回的命令输出(包括 DFS 消息)用于填充应用程序的输出消息。
      • IMS 资源适配器并不抛出 IMSDFSMessageException。
      • 一些命令,如 /DISPLAY ACTIVE REGION ,会返回一个多段消息。
      • 缺省的 imsRequestType 是 1,开发人员如果希望他们的应用程序以这种方式运行,则不需要(在 WSDL 中)手工将 imsRequestType 更改为类型 2。
      • 不推荐将命令从 Web 提交到 IMS。
    • 对于 J2C IMSInteractionSpec 特性 imsRequestType 3,这是为通过 WebSphere Studio MFS 支持生成的应用程序保留的。
      • 由 IMS 返回的正常事务输出(以及 DFS 消息)用于填充应用程序的输出消息。
      • IMS 资源适配器并不抛出 IMSDFSMessageException。
      • 由于 CCF 连接器并不存在 MFS 支持,所以 imsRequestType 的值并不应用于迁移的应用程序。
  5. 目前,由于 WebSphere Studio Integration Edition 提供的程序设计模型并不支持 IMS 会话事务的某些需求,所以运行 IMS 会话事务的 Java 应用程序必须使用 J2C Common Client Interface (CCI)。
    • 例如,在会话持续时间,运行 IMS 会话事务的 Java 应用程序必须维持与 IMS Connect 相同的连接。
    • 仍然可以用 CMA 来迁移会话的输入和输出消息。

当前已知的最重要的 J2C 一般应用程序限制和指导原则可以归纳如下:

  1. 捕捉 WSIFException (而非旧的 CCFException)。
  2. 在刚开始的时候,使用新的 CMA CCF 兼容性方法来模拟旧的 CCF Command 超类层次,以便加速短期应用程序迁移:
    • CMA 生成的服务代理中的这些 CCF 兼容性方法提供了许多来自旧的 CCF command 超类层次,同时简化了使用这些已弃用的特征的应用程序的迁移。
    • 这些 CCF 兼容性方法由 CMA 添加到代理的“用户代码(user code)”部分(不带 @已生成(generated)标记),因此只要同样的代理在 WebSphere Studio Integration Edition 中重新生成,该代码都会被保留。
    • 重要: 若要使长期兼容性最大化,在正在进行的应用程序维护期间,请修改每个已迁移的应用程序,使它使用调用的新 J2C 方式并停止使用短期(已弃用)CMA CCF 兼容性方法。
  3. 在数据 bean getters 和 setters 中有细微的改动(命令执行之后不能获得属性,等等)。
  4. 没有记录复制(如果确实需要可以使用 FormatHandler getBytes())。
  5. BigDecimal 为 int 所代替(签名改变了,精度可能需要应用程序重写)。
  6. Record 字段属性(例如长度)不可访问。
  7. 使用了新的 WebSphere Application Server API (新的安全性模型,没有 RuntimeContext,等等)。
  8. 当前不能捕捉 DataRangeExceptions(研究发现 可能是由于 J2C 工具增强的缘故)。
  9. Subrecords 并不总被初始化(这可能会引起 NullPointerExceptions)。
  10. 在 J2C 中,有两种类型的 EIS 登录:组件管理的登录和容器管理的登录。这些类型并不存在于 CCF 体系结构中,在该体系结构中,CCF 登录更像是组件管理的登录:
    • 在使用 J2C 组件管理的登录的情况下,userID、password 和可选的 groupName 都可以在 ConnectionSpec 中传递(通常不可以程序化地访问ConnectionSpec)。
      • 要访问 ConnectionSpec,请使用 WebSphere Studio 在线帮助中的指令来修改 WSDL 文件。
      • 在在线帮助中查找“Exposing the InteractionSpec and ConnectionSpec”。
      • 该部分将列出您可以访问的 ConnectionSpec 和 InteractionSpecThis 特性,并告诉您如何去访问它们。
    • 或者,您也可以将组件别名与连接工厂相关联,这会让您提供用户 ID 和密码。




回页首


结束语

WebSphere Studio Integration Edition 有一组全新的工具,可以用来优化 J2C 对象和应用程序的创建和维护。对于将现有的应用程序从 VisualAge for Java CCF 迁移到 WebSphere Studio J2C(只要存在等价的 J2C)来说, 这组工具是非常理想的。本文涵盖了两方面的主题:迁移 EAB 工具生成的 CCF IMS 连接器构件和使用这些构件来迁移开发人员编写的应用程序。



作者简介

Ellen Matheson McKayis an Information Developer for IBM Canada Ltd. She writes online help and publications for WebSphere Studio Application Developer.


Barry Searle 的照片

Barry Searleis the Migration Team Leader for WebSphere Studio Application Developer. He is a Professional Engineer who has worked at the IBM Canada Lab for over ten years on various application development tools. Prior to that he had many years of industry experience developing command and control systems and leading communications development projects.




对本文的评价

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

建议?




回页首


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