我有一个小java程序,它通过jdbc读取db2表。该程序通过“tso bpxbatch myjavatool”调用。
我想知道是否有可能将我的 TSO 用户的用户名/密码“传递”给 JDBC 驱动程序?
例如,如果我使用简单的 REXX 脚本连接到 DB2,则无需再次指定我的用户名/密码,DB2/RACF 会检查我的用户是否被允许执行 SQL。
现在我的java工具不在我的TSO地址空间中运行,而是在USS地址空间中的J9的控制下...
是否还有一种方法可以使用当前 TSO 用户自动登录 DB2?
最佳答案
我对 BPXBATCH 不太了解,但我假设您仍在 USS 地址空间中您自己的用户 ID 下运行。
在你的java代码中你应该能够通过获取你的用户ID
String user = System.getProperty("user.name");
至于密码,您可以尝试使用RACF-Passtickets。在/user/include/java_classes
中有一个库IRRRacf.jar
,在同一目录下的IRRRacfDoc.jar
中有相应的javadoc。生成 Passticket 的代码相当简单:
IRRPassTicket generator = new IRRPassTicket();
String ptkt = generator.generate(user,applid);
然后只需传递 passticket 而不是密码就可以了。
唉,在使用这种方法之前,您必须确定几个方面:
- 设置 RACF 以使用 DB2 的 Passtickets - 它可能已经配置,否则您必须在 PTKTDATA 类中设置正确的配置文件(有关更多详细信息,请参阅 RACF 文档)
- 确保运行代码的每个用户都拥有正确的 RACF 授权来使用 r_ticketserv 可调用服务(再次参见 RACF 文档)
- 找到适合您的 DB2 系统的正确应用程序名称 (
applid
)。请参阅有关使用通票的 DB2 文档。
关于通过 BPXBATCH 的 JDBC - 如何获取 TSO 用户凭证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26412596/