通过 BPXBATCH 的 JDBC - 如何获取 TSO 用户凭证?

标签 jdbc db2 zos j9 tso

我有一个小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/

相关文章:

java - Redshift 的 Hibernate 方言

java - 如何在java中将用户输入与我的数据库进行比较

apache-kafka - 如何将消息直接从现有的大型机应用程序发布到 Kafka 主题?

optimization - COBOL 段落编号背后的逻辑是什么?

java - java.sql.SQLException:-ORA-01000:已超过最大打开游标

java - 我的 JDBC 连接池有什么问题?

sql - 所有祖先/ parent 和 child 的单一分层查询 (DB2/SQL Server)

java - 从 Java 调用 RPG 程序时 SaveObject 作业失败

sql - rownum/获取前n行

linux - 使用 SFTP 附加日期时重命名文件