使用 db2sqljcustomize 工具来定制和绑定 SQLJ 概要文件
在应用程序服务器中安装 SQLJ 应用程序之前,请使用 db2sqljcustomize 工具来定制和绑定 SQLJ 概要文件。
开始之前
对于使用容器管理的持久性的 SQLJ 应用程序,可以通过两种方法来部署该应用程序:
- 在应用程序服务器中部署该 SQLJ 应用程序。有关更多信息,请参阅“部署使用了容器管理的持久性 (CMP) 的 SQLJ 应用程序”主题。
- 使用 ejbdeploy 工具来部署 SQLJ 应用程序。请参阅“使用 ejbdeploy 工具来部署使用了容器管理的持久性 (CMP) 的 SQLJ 应用程序”主题。
关于此任务
应用程序服务器支持使用管理控制台或通过进行脚本编制来定制和绑定 SQLJ 概要文件:
- 要了解管理控制台支持,请参阅“定制和绑定 Java™ 结构化查询语言 (SQLJ) 应用程序的概要文件”主题。
- 要了解脚本编制支持,请参阅“AdminTask 对象的应用程序管理命令组”主题。
过程
- 请确保必需的数据库表存在,如“部署数据访问应用程序”主题所述。
- 将序列化概要文件传输到要安装应用程序的环境。另外,也可以使用 Java jar 命令从已安装的 EAR 目录中的 JAR 文件解压缩序列化概要文件。
- 将 SQLJ 概要文件的位置以及应用程序的 JAR 文件的位置添加到环境的类路径。
- 请确保必需的数据库表存在,如“部署数据访问应用程序”主题所述。
- 可选: 如果应用程序并非在集群环境中运行,那么您可以使用 Ant 脚本以简化定制。 如果使用 ejbdeploy 工具对 EAR 文件运行批处理 SQLJ 定制,那么此工具将生成名为
application_name.ear.xml 的 Ant 脚本。您可以使用此脚本文件对相关联
EAR 文件的所有企业 Bean JAR 文件中的序列化概要文件运行 DB2 定制程序。此脚本将使用序列化概要文件来更新每个企业 Bean 的 JAR 文件并将现有 EAR 文件中的 JAR 文件替换为修改后的版本。
此工具为:
ws_ant
ws_ant.bat
- 更改 ejbdeploy.sqlj.properties 中的数据库 URL 值以及数据库用户和密码属性。 此文件是 ejbdeploy 命令所生成的所有 Ant 脚本的公共文件。ejbdeploy.sqlj.properties
脚本定义了下列各项的全局属性:
- 数据库 URL - db.url
- 用户 - db.user
- 密码 - db.password
- 运行 Ant 脚本并指定 properties 目标。 例如:
ws_ant -buildfile application_name.ear.xml properties
此脚本将创建属性文件 application_name.ear.properties。application_name.ear.properties 文件中包含的属性指定 EAR 文件中每个序列化概要文件的相应程序包的缺省名称。以下是一个样本属性文件:url.MyEJB1.jar.DB2UDBNT_V8_1=jdbc:db2://localhost:50000/MyDB1 user.MyEJB1.jar.DB2UDBNT_V8_1=dbuser password.MyEJB1.jar.DB2UDBNT_V8_1=dbpassword pkg.MyEJB1.jar.DB2UDBNT_V8_1=TEST url.MyEJB2.jar.DB2UDBNT_V8_1=jdbc:db2://localhost:50000/MyDB2 user.MyEJB2.jar.DB2UDBNT_V8_1=dbuser password.MyEJB2.jar.DB2UDBNT_V8_1=dbpassword pkg.MyEJB2.jar.DB2UDBNT_V8_1=WORK
- 使用 DB2 控制中心来标识数据库中安装的程序包。 DB2 SQLJ 定制程序需要 4 类数据库 URL,其格式为:
它还需要用户和密码。除非您在安装 DB2 时更改了端口值,否则端口值为 50000。jdbc:db2://host-name:port/database-name
- 更改脚本文件使用的名称,以确保每个定制概要文件的名称不会与数据库中的现有程序包名发生冲突。 在缺省情况下,为不同 EAR 文件生成的 Ant 脚本将使用相同的程序包名,并且,除非您更改名称,否则脚本将覆盖现有的程序包。被覆盖的程序包可能会在运行时引起错误。
DB2 将使用程序包名的前七个字符。DB2 定制程序将使用此名称在数据库中创建 4 个程序包。例如,如果您指定名称 TEST,那么 DB2 定制程序将创建名为 TEST1、TEST2、TEST3 和 TEST4 的程序包。
- 运行 Ant 脚本。 Ant 脚本将使用经过修改的序列化概要文件来更新原始 EAR 文件。样本 Ant 命令类似于:
避免故障: 请验证类路径是否包含 db2jcc.jar。在安装 DB2 V8 修订包 1 时,应该已将此文件添加到类路径环境变量。gotcha
其中:ws_ant -Dwork.dir=tmp -Dscript.property.file=other.properties -buildfile application_name.ear.xml
- -buildfile 指定要创建的 XML 文件。
- -Dscript.property.file 指定另一个属性文件。此参数是可选的。如果要让 Ant 脚本使用另一个文件代替 application_name.ear.properties,请在运行此脚本时指定 Dscript.property.file 属性。
- -Dwork.dir 指定脚本的临时工作目录。此脚本将在此目录中创建和删除文件和子目录。如果此工作目录包含与脚本使用的文件和目录同名的现有文件和目录,那么此脚本将擦除或覆盖这些文件和目录。此脚本将创建和使用名为 tmp 的目录作为其工作目录。
- 请转到在应用程序服务器中安装应用程序。
- 运行 db2sqljcustomize 工具,以便对每个企业 Bean 的 JAR 文件的相应 SQLJ 概要文件进行定制。 生成部署代码时,将创建特定于应用程序的序列化概要文件(扩展名为 .ser 的文件)。这些概要文件存在于
SQLJ 文件所在的目录中,并且,必须根据环境对这些文件进行定制,然后才能使用这些文件。对序列化概要文件运行 DB2 SQLJ 定制程序时,将在数据库中创建供 DB2 在运行时使用的静态 SQL。定制阶段将创建
4 个包含静态 SQL 的数据库程序包,即,为每个隔离级别创建一个程序包。
- 可选: 考虑使用 SQLJ 定制程序工具对应用程序的数据源连接启用上下文高速缓存。 DB2 V8.1 修订包 6 随 db2sqljcustomize 工具提供了名为 db2optimize
的新高速缓存选项。如果应用程序使用显式连接上下文而不是缺省上下文,那么您可以运行此选项。以下示例代码演示用于对序列化概要文件运行此选项的正确语法:
避免故障:
- SQLJ 上下文高速缓存支持需要 DB2 with IBM® JCC 驱动程序或者应用了 APAR PQ87786 的 DB2 通用 JDBC 驱动程序的版本 2.2 或更高版本。
- 如果要对跨事务边界进行连接高速缓存的应用程序或 BMP Bean 启用上下文高速缓存,那么不能使用可共享连接。调用
db2optimize 选项时,请使用“获取/使用/关闭”模式的连接用法,否则将发生“对象已关闭”异常。以下代码提供了上下文高速缓存连接用法的一个错误示例:
在本例中,Select 语句将引起“对象已关闭”异常。为了防止发生这种异常,请在落实事务前关闭连接。然后,在运行 Select 语句之前,获取新的连接和新的上下文。utx.begin(); cons =ds.getConnection( request.getParameter("db.user"), request.getParameter("db.password")); cmctx1 = new CM_context(cons); #sql [cmctx1] {DELETE FROM cmtest WHERE id=1}; utx.commit(); //The next statement verifies the result: #sql [cmctx1] cursor1 = {SELECT id, name FROM cmtest WHERE id=1};
sqlj -db2optimize SQLJTransactionTest.sqlj db2sqljcustomize -url jdbc:db2://localhost:50000/dbname -user USER_NAME -password PASSWORD SQLJTransactionTest_SJProfile0.ser
- 运行 db2sqljcustomize 工具,以便对 SQLJ 概要文件进行定制。 成功地运行 db2sqljcustomize 命令之后,经过定制的概要文件将存在于从中发出该命令的目录中。如果从包含未定制的序列化概要文件的目录中运行 db2sqljcustomize 命令,那么定制后的版本将覆盖文件名相同的先前版本。 用于运行 db2sqljcustomize 命令的建议语法如下所示:
其中:db2sqljcustomize -url JDBC_URL -user USER_NAME -password PASSWORD [-rootpkgname PACKAGE_NAME] SERIALIZED_PROFILE1 SERIALIZED_PROFILE2 ...
- JDBC_URL 是用来访问表所在的 DB2 系统的 JDBC URL。
- USER_NAME 是表所在的 DB2 系统的有效用户名。
- PASSWORD 是指定的用户名的密码。
- PACKAGE_NAME 是有效分区数据集 (PDS) 成员名,限长 7 个字符。在概要文件定制程序创建的 4 个程序包中,每个程序包都以此名称开头并追加数字 1 到 4。如果您只定制一个序列化概要文件,那么此值将缺省为序列化概要文件名的短版本,并且您不需要指定 -rootpkgname 参数。如果您使用同一个命令来定制多个序列化概要文件,那么没有缺省值,并且必须指定 -rootpkgname 参数。
- SERIALIZED_PROFILE# 是您正在定制的序列化概要文件的名称。
- 要使用同一个命令来定制多个序列化概要文件,请列示多个文件并使用空格进行分隔。
- 另外,还可以指定 -rootpkgname 参数以便使用同一个命令来定制多个序列化概要文件。
注: 下列选项使您能够对定制过程进行进一步控制:- -automaticbind yes 指定对序列化概要文件运行 DB2 SQLJ 定制程序,以便在数据库中创建供数据库在运行时使用的静态 SQL。定制阶段将创建 4 个包含静态 SQL 的数据库程序包,即,为每个隔离级别创建一个程序包。
- -onlinecheck NO 和 -bindoptions "VALIDATE RUN" 指定设置,以便在概要文件定制期间绕过错误并确保定制成功。
- 可选: 考虑使用 SQLJ 定制程序工具对应用程序的数据源连接启用上下文高速缓存。 DB2 V8.1 修订包 6 随 db2sqljcustomize 工具提供了名为 db2optimize
的新高速缓存选项。如果应用程序使用显式连接上下文而不是缺省上下文,那么您可以运行此选项。
- 使用序列化概要文件来更新企业 Bean 的 JAR 文件。
- 使用 jar 命令将 JAR 文件中的序列化概要文件替换为经过定制的概要文件。
避免故障: 必须将经过定制的文件放入应用程序类路径所包含的位置,并且,它们必须在 JAR 文件中未定制的序列化概要文件之前。如果您决定替换 JAR 文件中的序列化概要文件,请保持概要文件所在的目录结构不变。gotcha
- 将企业 Bean、Servlet 和序列化概要文件的 JAR 文件打包成企业归档 (EAR) 文件。
- 在应用程序服务器中安装应用程序。
避免故障: 在管理控制台中的应用程序安装过程中,请不要选择部署企业 Bean。如果从管理控制台重新部署企业 Bean,那么将丢失您已进行的定制更改。gotcha
相关概念:
相关任务:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tdat_sqljcustwithtool
文件名:tdat_sqljcustwithtool.html