通过 JDBC 连接时在 Session Information 中显示应用程序名称

Posted

技术标签:

【中文标题】通过 JDBC 连接时在 Session Information 中显示应用程序名称【英文标题】:Display application name in Session Information when connecting via JDBC 【发布时间】:2011-08-22 10:13:05 【问题描述】:

我使用标准 JDBC 驱动程序创建到 postgres 9 数据库的连接。

...
Connection myCon = DriverManager.getConnection("jdbc:postgresql://localhost/test?&user=test&password=test"); 
...

当我使用 PgAdmin 检查服务器状态并显示所有数据库会话时,我可以看到没有为我的会话设置“应用程序名称”。有没有办法在 JDBC 连接中设置应用名称?

【问题讨论】:

是时候回答我自己的问题了,可以用以下代码设置:stmt = Con.prepareStatement("SET application_name = 'myApp'"); stmt.execute(); 【参考方案1】:

可以将应用程序名称设置为连接参数,因为 Postgres JDBC 9.1dev-900:

添加对在两个连接启动时设置 application_name 的支持 然后通过 Connection.setClientInfo。 (朱卡)

例如:jdbc:postgresql://localhost:5432/DbName?ApplicationName=MyApp

Connection.setClientInfo("ApplicationName", "My App")

对于以前的版本,您可以通过设置 application_name 运行时参数来做到这一点:

s.execute("SET application_name TO 'MyApp'");

【讨论】:

以防万一它对某人有帮助:这可以专门针对具有附加属性的 Oracle 数据库完成:((BasicDataSource) datasource).addConnectionProperty("v$session.program", "Explicit连接标签”)。这将显示在 v$session Oracle 视图中。当然,这种方式仅适用于 Oracle,而您的 JDBC 解决方案(我不知道)应该更健壮。

以上是关于通过 JDBC 连接时在 Session Information 中显示应用程序名称的主要内容,如果未能解决你的问题,请参考以下文章

hibernate架构之session中get与load方法的区别

Application, JDBC, 数据库连接池, Session, 数据库的关系

信息:用于 JDBC 连接的传输:null + Apache Hive

使用HIVE-JDBC+TOMCAT-JDBC连接(CONNECTION)中断的处理过程

JDBC—— 获取连接池方式

如何设置 jdbc 连接生存期和超时?