练习 1.3:创建 Java 方法
在开始之前,必须完成练习 1.2:设置 Web 项目以及 Java 接口和实现。
练习 1.2 指导您完成创建 Java 方法 getCustomerInfo。在此练习中,您将:
- 创建 Java 方法
- 在 COBOL 和 Java 之间创建输入数据映射
- 在 COBOL 和 Java 之间创建输出数据映射
创建 Java 方法
现在您将创建一个 Java 方法。该 Java 方法将使用 COBOL 导入器在 COBOL 源和 Java 方法中的数据之间映射数据类型。
- 在“Java 方法”页面中,单击添加。
- 在 Java 方法名称字段中,输入 getCustomerInfo 作为操作的名称。单击下一步。
创建输入参数数据映射
在此步骤中,将导入 taderc25.cbl(COBOL)文件,需要此文件来创建应用程序。taderc25.ccp 文件位于 <RSDP_installdir>\rad\eclipse\plugins\com.ibm.j2c.cheatsheet.content_6.0.0\Samples\CICS\taderc25 中,其中 <RSDP_installdir> 是产品的安装目录。此 COBOL 文件包含在 CICS 服务器上运行的程序。它包含将通过通信区(COMMAREA)传递到 CICS 服务器的结构的定义。此结构表示从 CICS 应用程序返回的客户记录。必须将文件从文件系统导入工作台之后才能够处理该文件:
- 在“Java 方法”页面的指定输入/输出类型字段中,单击新建。
- 在“数据导入”页面中,确保选择映射字段是 COBOL_TO_JAVA。
- 单击 COBOL 文件名称字段旁边的浏览。
- 在文件系统中找到 taderc25.cbl 文件,并单击打开。
- 单击下一步。
- 在“COBOL 导入器”页面中,选择一个通信数据结构。
- 对于平台名称选择 Win32。
- 对于代码页,选择 ISO-8859-1。
- 单击查询。
- 对数据结构选择 ICOMMAREA。单击下一步。
- 在“保存属性”页面中,
- 对生成样式选择缺省值。
- 单击浏览来选择 Web 项目 Taderc25Sample。
- 在包名字段中,输入 sample.cics.data。
- 在类名字段中,缺省值为 ICOMMAREA;使用 InputComm 替换它。
单击完成。
为输出参数创建多个可能的输出
- 在“Java 方法”页面的指定输入/输出类型中,单击“输出类型”区域旁边的新建。
- 在“数据导入”页面中,确保选择映射字段是 COBOL_MPO_TO_JAVA。
-
单击多个可能输出区域旁边的新建。
- 单击 COBOL 文件名称字段旁边的浏览,并找到 taderc25.cbl 文件的文件位置。
单击打开。
- 单击下一步。
- 在“COBOL 导入器”页面中,选择一个通信数据结构。
- 对于平台名称选择 Win32。
- 对于代码页,选择 ISO-8859-1。
- 单击“查询”按钮来选择数据结构。
- 对数据结构选择 PREFCUST、REGCUST 和 BADCUST。
- 单击完成。
- 在“指定数据导入配置”属性页中,您将看到列示了这三个数据类型。
- 单击下一步。
指定保存属性
- 在“保存属性”页面中,您将看到为每个客户类型记录设置了缺省值。
- 在“指定保存属性”页面中,在“数据绑定”部分下面
- 接受 Java 项目 Taderc25Sample。
- 在包名字段中,输入 sample.cics.data。
- 在类名字段中,输入 OutputComm。
- 在 COBOL 至 Java 保存属性 PREFCUST 中
- 接受项目名称 Taderc25Sample。
- 在包名字段中,输入 sample.cics.data。
- 在类名字段中,输入 PrefCust。
- 在 COBOL 至 Java 保存属性 REGCUST 中
- 单击浏览来选择 Web 项目 Taderc25Sample。
- 在包名字段中,输入 sample.cics.data。
- 在类名字段中,输入 RegCust。
- 在 COBOL 至 Java 保存属性 BADCUST 中
- 单击浏览来选择 Web 项目 Taderc25Sample。
- 在包名字段中,输入 sample.cics.data。
- 在类名字段中,输入 BadCust。
- 单击完成。您将看到 OutputComm 在输出类型中包含 PrefCust、RegCust 和 BadCust。
- 在“Java 方法”页面上,单击完成来完成操作。
- 在“Java 方法”页面中,
- 在 functionName 字段中,输入 COBOL 程序标识(TADERC25)。
- 在 commareaLength 字段中,输入 50。
- 在 interactionVerb 字段中选择值 SYNC_RECEIVE(1)。
- 在 replyLength 字段中输入 -1。
单击完成。
将识别模式标记添加到生成 Java 输出数据映射文件
因为返回的输出可以是这些数据类型中的任何一种数据类型,所以与某种数据类型相匹配的唯一方法就是在数据流中预定义一些模式。匹配方法是检查识别模式。
- 要为 PrefCust 添加识别模式:
- 在 Java 编辑器中打开 PrefCust.java 文件。
- 浏览到 getPcustcode() 方法
- 在方法注释区域,添加标记 @type-descriptor.recognition-desc pattern="PREC";或者通过按 Alt+/ 使用内容辅助并向下浏览列表找到此标记,然后输入“PREC”作为模式。
- 保存更改,将会重新生成代码 PrefCust.java。
- 浏览到匹配方法以确保更改确实存在。
/**
* @generated
*/
public boolean match(Object obj) {
if (obj == null)
return (false);
if (obj.getClass().isArray()) {
byte[] currBytes = buffer_;
try {
byte[] objByteArray = (byte[]) obj;
buffer_ = objByteArray;
if (!("PREC".equals(getPcustcode().toString())))
return (false);
} catch (ClassCastException exc) {
return (false);
} finally {
buffer_ = currBytes;
}
} else
return (false);
return (true);
}
- 要为 RegCust 添加识别模式:
- 在 Java 编辑器中打开 RegCust.java 文件。
- 浏览到 getRcustcode() 方法。
- 在方法注释区域,添加标记 @type-descriptor.recognition-desc pattern="REGC";或者通过按 Alt+/ 使用内容辅助并向下浏览列表找到此标记,然后输入“REGC”作为模式。
- 保存更改,将会重新生成代码 RegCust.java。
- 浏览到匹配方法以确保更改确实存在。
/**
* @generated
*/
public boolean match(Object obj) {
if (obj == null)
return (false);
if (obj.getClass().isArray()) {
byte[] currBytes = buffer_;
try {
byte[] objByteArray = (byte[]) obj;
buffer_ = objByteArray;
if (!("REGC".equals(getRcustcode().toString())))
return (false);
} catch (ClassCastException exc) {
return (false);
} finally {
buffer_ = currBytes;
}
} else
return (false);
return (true);
}
- 要为 BadCust 添加识别模式:
- 在 Java 编辑器中打开 BadCust.java 文件。
- 浏览到 getBcustcode() 方法。
- 在方法注释区域,添加标记 @type-descriptor.recognition-desc pattern="BADC";或者通过按 Alt+/ 使用内容辅助并向下浏览列表找到此标记,然后输入“BADC”作为模式。
- 保存更改,将会重新生成代码 BadCust.java。
- 浏览到匹配方法以确保更改确实存在。
public boolean match(Object obj) {
if (obj == null)
return (false);
if (obj.getClass().isArray()) {
byte[] currBytes = buffer_;
try {
byte[] objByteArray = (byte[]) obj;
buffer_ = objByteArray;
if (!("BADC".equals(getBcustcode().toString())))
return (false);
} catch (ClassCastException exc) {
return (false);
} finally {
buffer_ = currBytes;
}
} else
return (false);
return (true);
}
现在,您可以开始进行练习 1.4:部署应用程序了。