通过 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