2

我有一个通过 jdbc 读取 db2 表的小 java 程序。该程序通过“tso bpxbatch myjavatool”调用。

我想知道是否有可能将我的 TSO 用户的用户名/密码“传递”给 JDBC 驱动程序?

例如,如果我使用一个简单的 REXX 脚本连接到 DB2,我就不必再次指定我的用户名/密码,并且 DB2/RACF 会检查我的用户是否被允许执行 SQL。

现在我的 java 工具不在我的 TSO 地址空间中运行,而是在 USS 地址空间中的 J9 的控制下运行...

是否还有一种方法可以使用当前 TSO 用户自动登录 DB2?

4

1 回答 1

2

我对 BPXBATCH 了解不多,但我假设您仍然在 USS-address-space 中以您自己的用户 ID 运行。

在您的 java 代码中,您应该能够通过

String user = System.getProperty("user.name");

至于密码,您可以尝试使用 RACF-Passtickets。在同一个目录中IRRRacf.jar有一个库/user/include/java_classes和对应的javadoc 。IRRRacfDoc.jar生成 Passticket 的代码相当简单:

IRRPassTicket generator = new IRRPassTicket();   
String ptkt = generator.generate(user,applid);

然后只需传递密码而不是密码,你应该没问题。

唉,在使用这种方法之前,您必须确保几个方面:

  • 设置 RACF 以使用 DB2 的 Passticket - 它可能已经配置,否则您必须在 PTKTDATA 类中设置适当的配置文件(有关更多详细信息,请参阅 RACF 文档)
  • 确保运行代码的每个用户都具有使用 r_ticketserv 可调用服务的正确 RACF 授权(再次,请参阅 RACF 文档)
  • applid为您的 DB2 系统找到正确的应用程序名称 ( )。请参阅有关使用 passtickets 的 DB2 文档。
于 2014-10-17T07:14:26.520 回答