25

我正在使用 tomcat 连接池org.apache.tomcat.jdbc.pool.DataSource。连接出现在我的数据库pg_stat_activity中,为空application_name

如何在我的 java 应用程序中设置该应用程序名称,以便我知道每个连接来自哪里(因为将有多个应用程序访问同一个数据库)?

4

5 回答 5

29

您可以在连接字符串中指定应用程序名称。
文档在这里

例子:

jdbc:postgresql://localhost:5435/DBNAME?ApplicationName=MyApp

注意:参数名称区分大小写。

于 2015-05-19T10:03:54.197 回答
23

使用设置命令:

set application_name to my_application;
于 2015-05-19T09:57:08.383 回答
7

您可以将其添加到您在连接池定义中使用的 JDBC URL:

jdbc:postgresql://localhost/postgres?ApplicationName=my_app

如果您想动态更改它,例如反映应用程序中的不同模块您可以使用SETklin 所示的命令。

于 2015-05-19T10:01:48.127 回答
3

如果您想以编程方式设置,PostgreSQL 驱动程序也有一个您可以调用的方法:

PGPoolingDataSource ds = new PGPoolingDataSource();
ds.setApplicationName(applicationName);
于 2018-08-21T17:01:31.693 回答
0

如果您使用psycopg2的是 Python 库,请按照以下步骤操作

import psycopg2    
psycopg2.connect(host=host_ip, database=db_name, user=user, password=db_pwd, application_name="Python Local Test Script")
于 2020-04-08T07:20:00.697 回答