在Keycloak Quarkus中使用JDBC-Thin连接设置Oracle数据库v$会话属性

yzuktlbb  于 2023-03-29  发布在  Oracle
关注(0)|答案(1)|浏览(169)

我在使用Quarkus为Keycloak设置Oracle v$session属性时遇到问题。例如,使用jdbc连接,您可以执行以下操作:

Properties pro = new java.util.Properties();
pro.put("v$session.osuser", "MY_USER");         
pro.put("v$session.machine", "DEPLOY_123");         
pro.put("v$session.program", "P26D_s");

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
Class.forName(driverName).newInstance();
con = DriverManager.getConnection(Url, pro);
...

我尝试了什么?添加一个 quarkus.properties 文件,其中包含以下内容:

quarkus.datasource.jdbc.additional-jdbc-properties.connectionProperties="v$session.OSUSER=MY_USER"

到Keycloak /conf 目录,只是为了测试一个属性。如果我添加 quarkus.datasource.jdbc.additional-jdbc-properties.v$session.OSUSER=MY_USER,keycloak告诉我,DataSource没有属性的setter。这是正确的,考虑到以下类:https://docs.oracle.com/cd/E18283_01/appdev.112/e13995/oracle/jdbc/xa/client/OracleXADataSource.html,因此是 connectionProperties。但是docu没有告诉我任何关于v$session Properties的信息。至少我知道,他正在尝试应用属性。我正在测试以下方法:

  • 在/opt/keycloak/conf中使用 quarkus.properties 构建Docker镜像
  • 使用oracle-xe镜像启动docker compose
  • 启动后,查看keycloak日志并查询Oracle DB中的SYS.V_$SESSION表,查看是否设置了OSUSER、PROGRAM或MACHINE。

有人有主意吗?干杯

szqfcxe2

szqfcxe21#

最后,quarkus.properties做到了这一点,确保用小写字母书写属性,并用分号分隔属性。将文件复制到/opt/keycloak/conf。

quarkus.datasource.jdbc.additional-jdbc-properties.connectionProperties=v$session.osuser=MY_USER;v$session.machine=DEPLOY_123;v$session.program=P26D_s

相关问题