java - 在 JDBC for Oracle 中设置客户端信息

标签 java oracle jdbc driver

我有一个需要审核的 Java 应用程序(所以显然我需要一种可以通过应用程序名称识别该应用程序的方法)。我用谷歌搜索发现 ojdbc14 有方法 .setClientInfo 允许使用自定义名称注册应用程序,所以我试图让它工作但我收到以下错误:

Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.setClientInfo(Ljava/lang/String;Ljava/lang/String;)V

我正在使用 ojdbc14 和 oracle 10g express。如果我不设置行:

connection.setClientInfo("ApplicationName","Customers");

它工作得很好....通过检查审计信息,我可以看到 oracle 获得了应用程序名称:OS_program_name=JDBC Thin Client,但我需要一种方法来将其更改为自定义名称。

通过取消注释应该设置应用程序名称的行,它会返回上面的错误。

根据 oracle 文档,该方法可用于 Connection 对象。您知道如何解决这个问题吗?

最佳答案

对于AbstractMethodError,请检查Why do I get java.lang.AbstractMethodError when trying to load a blob in the db?

为了区分您在 Oracle 中的连接,您可以使用下面的示例代码:

Properties jdbcProperties = new Properties();

this.jdbcProperties.put("user", userName);
this.jdbcProperties.put("password", password);
this.jdbcProperties.put("v$session.program", "YourApplicationName");
DriverManager.getConnection(url, jdbcProperties);

然后通过针对您的连接的程序列进行分组来检查 v$session..

关于java - 在 JDBC for Oracle 中设置客户端信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2876956/

相关文章:

java - 实现用户登录,JDBC 交易问题

mysql - 我无法连接到 MySQL 数据库

java - IO 错误 : Got minus one from a read call

java - 将文本文件转换为全部大写字母

java - 尝试在 OSX Lion 上安装 Maven 时出错

java - Saxon 解析器返回错误 'java' 未被识别为内部或外部命令

java - 在 Android (Androjena) 上构建 Jena 失败

oracle - 谁提出了“DIANA节点”这个术语,他们如何计算出6,000,000 LOC约为67108864(2 ** 26)个DIANA节点?

sql - 从oracle中的列中选择动态模式匹配字符串

sql - 在 Oracle 中限制 LISTAGG 结果