将嵌入式 SQLJ 与 DB2 for z/OS 旧驱动程序配合使用
Java™ 中的结构化查询语言 (SQLJ) 是一组编程扩展,使程序员能够使用 Java 编程语言来嵌入提供结构化查询语言 (SQL) 数据库请求的语句。 您可以将 DB2® for z/OS® Legacy 驱动程序与数据访问应用程序配合使用。
有关此任务
- 要将 SQLJ 与 WebSphere® Application Server for z/OS 和 DB2 for z/OS 旧驱动程序配合使用,请安装 DB2 APAR PQ76442。
- DB2 for z/OS Legacy Driver 不支持使用 SQLJ 生成的容器管理的持久性 (CMP) Bean。 使用使用 SQLJ 生成的 DB2 Universal 驱动程序 for CMPs。
以下是使用 SQLJ 开发应用程序所需的步骤,这些应用程序使用 DB2 for z/OS Legacy 驱动程序在 WebSphere Application Server for z/OS v6.0 上运行。
过程
- 根据您的需求 在 Rational® Application Developer ,必要时使用 SQLJ。 例如,如果您开发一个使用 BMP 的名为“Test”的 bean,那么编码后的文件为 TestBean.sqlj(而不是 TestBean.java)。
- 从 DB2 for z/OS 安装中,复制db2sqljclasses.zip文件到工作站上的目录,然后修改 EJB Java 归档 (JAR) 项目的 Java 构建路径以包含db2sqljclasses.zip中。
- 请按照以下步骤来转换 SQLJ 代码:
- 找到 SQLJ 文件,然后使用 ASCII 方式传输将其通过 FTP 传输到 z/OS 环境中的 HFS。
- 使用 sqlj 命令将 SQLJ 代码转换为 Java 代码。 生成了两个文件,一个具有.java扩展和另一个具有.ser扩展名。
sqlj -compile=false SQLJ_FILE_NAME - 使用 ASCII 方式传输.java文件和 BINARY 方式传输.ser文件以将这些文件移回到 SQLJ 文件所在的工作站上的目录。
- 刷新项目。
- 为应用程序生成部署代码。
- 导出 EAR 文件。
- 安装应用程序
- 使用 DB2 for zOS 本地 JDBC 提供程序 (RRS) 创建数据源。定义 JDBC 提供程序和数据源时,缺省值足以提供 SQLJ 支持。
- 将应用程序安装到 WebSphere Application Server中。
使用您在步骤 1 中创建的数据源来解析资源引用。
- 使用 DB2 for zOS 本地 JDBC 提供程序 (RRS) 创建数据源。
- 定制序列化概要文件生成部署代码,序列化概要文件或具有.ser将创建特定于应用程序的扩展。 必须先在 z/OS 环境中定制这些概要文件,然后才能使用这些概要文件。
- 使用二进制传输将序列化概要文件传输到安装了应用程序的 z/OS 环境。或者,使用 Java jar 命令从已安装的 EAR 目录中的 EJB JAR 文件抽取序列化概要文件。
- 使用 db2profc 命令定制序列化概要文件。您可以从 DB2 文档中获取有关与此命令关联的各种选项的信息; 但是,以下是定制概要文件的最低要求:
db2profc -pgmname=PROGRAM_NAME PROFILE_NAME- 其中:
- PROGRAM_NAME必须是有效的 MVS PDS 成员名称,最多可包含 7 个字符。
- PROFILE_NAME 是您要定制的序列化概要文件的名称。 您必须为每个概要文件运行一次 db2profc。
- 概要文件定制程序在 PDS USERNAME.DBRMLIB.DATA 中创建四个 DBRM 数据集。 DBRM 成员名以您指定为 PROGRAM_NAME 的内容开头。
- 确保您的 CLASSPATH 环境变量包含:
- 序列化概要文件的位置
- 在已安装的 EAR 目录中的 EJB JAR 文件
- 分配 PDS 以包含创建的 DBRM。 将此 PDS 命名为 USERNAME.DBRMLIB.DATA,其中 USERNAME 是将实现 db2profc 命令的用户。以下字段是一个示例:
Space units=TRACK Primary quantity=15 Secondary quantity=5 Directory blocks=10 Record format=FB Record length=80 Block size=27920 Data set name type=PDS
- 其中:
- 将现有序列化概要文件(现已定制)放入到属于应用程序类路径的一部分的位置中,而且在 EJB JAR 文件中的序列化概要文件之前。
DB2 概要文件定制程序的输出与输入文件同名。 将输出文件移到类路径中原有的序列化概要文件之前。 或者,您可以将已定制的概要文件移到 EJB JAR 文件中来替换原有的文件。 建议您替换原始文件。
要点:如果您从序列化概要文件存在的目录运行 db2profc 命令,那么概要文件定制程序将覆盖序列化概要文件。 因为在概要文件定制程序运行后,仅需要定制的版本,所以这不是问题。
- 将 DBRM 绑定到包中。注: 必须先创建数据库表,然后才能绑定 DBRM。 如果未执行此操作,那么绑定作业将失败。
db2profc 定制命令创建一系列必须绑定到包中的 DBRM。 为每个已定制的概要文件创建四个 DBRM。
这些 DBRM:- 位于 USERNAME.DBRMLIB.DATA 中
- 都有以您指定为 PROGRAM_NAME 的内容开头的名称
- 都是从 1 到 4 编号
例如,如果以 IBMUSER 身份登录并指定 -pgmname=TESTBMP,然后运行 db2profc 命令,那么会创建四个数据集(TESTBMP1、TESTBMP2、TESTBMP3 和 TESTBMP4)并将它们放入 PDS IBMUSER.DBRMLIB.DATA 中。
这些数据集必须绑定至隔离级别为 UR、CS、RS 和 RR 的包中。 您必须为定制的每个序列化概要文件运行绑定。
- 在将所有 DBRM 绑定到包中之后,将这些包绑定到计划中。 随意命名该计划。
要点:还必须在新计划的包列表 (PKLIST) 中包括这些 JDBC 包。 要包含的 JDBC 包的缺省名称为 DSNJDBC.DSNJDBC1, ... , DSNJDBC.DSNJDBC4. 如果您的安装未使用 JDBC 包的缺省名称,请与 DB2 管理员联系以确定需要包含的 JDBC 包的名称。
以下是用于绑定新计划的样本作业。- 在以 IBMUSER 登录时,创建一个序列化概要文件。
- 指定了 -pgmname=TESTBMP 以运行 db2profc。
- 新的计划被命名为 SQLJPLAN。
//BBOOLS JOB (516B,1025),'IBMUSER',MSGCLASS=H,CLASS=A,PRTY=14, // NOTIFY=&SYSUID,TIME=1440,USER=IBMUSER,PASSWORD=IBMUSER, // MSGLEVEL=(1,1) //******************************************************************** //BINDOLS EXEC PGM=IKJEFT01,DYNAMNBR=20 //DBRMLIB DD DSN=IBMUSER.DBRMLIB.DATA,DISP=SHR //* DD DSN=MVSDSOM.DB2710.SDSNDBRM,DISP=SHR //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(DB2) BIND - PACKAGE(TESTBMP) - QUALIFIER(IBMUSER) - MEMBER(TESTBMP1) - VALIDATE(BIND) - ISOLATION(UR) - SQLERROR(NOPACKAGE) - BIND - PACKAGE(TESTBMP) - QUALIFIER(IBMUSER) - MEMBER(TESTBMP2) - VALIDATE(BIND) - ISOLATION(CS) - SQLERROR(NOPACKAGE) - BIND - PACKAGE(TESTBMP) - QUALIFIER(IBMUSER) - MEMBER(TESTBMP3) - VALIDATE(BIND) - ISOLATION(RS) - SQLERROR(NOPACKAGE) - BIND - PACKAGE(TESTBMP) - QUALIFIER(IBMUSER) - MEMBER(TESTBMP4) - VALIDATE(BIND) - ISOLATION(RR) - SQLERROR(NOPACKAGE) - BIND PLAN(SQLJPLAN) - QUALIFIER(IBMUSER) - PKLIST(TESTBMP.* - DSNJDBC.* ) - ACTION(REPLACE) RETAIN - VALIDATE(BIND) END /* - 对新计划授予相应权限。 使用 DB2的接口 (例如 SPUFI) 来授予权限。 发出此命令:
其中:GRANT EXECUTE ON PLAN PLANNAME TO APPSERVERID- PLANNAME 是绑定的计划的名称。
- APPSERVERID 是 WebSphere Application Server 运行所使用的标识; 例如, CBSYMSR1。
- 使用二进制传输将序列化概要文件传输到安装了应用程序的 z/OS 环境。
- 配置数据源以使用新的计划
- 从 WebSphere Application Server for z/OS 管理控制台中,浏览至数据源并选择 "定制属性"。
- 选择定制属性 planName。
- 使用计划绑定时命名的内容更新 planName 的值。
- 将 enableSQLJ 设置为 true。
- 停止并重新启动服务器。
- 运行应用程序。