Отображать имя приложения в информации о сеансе при подключении через JDBC

Я создаю соединение с базой данных postgres 9, используя стандартный драйвер JDBC.

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

Когда я проверяю состояние сервера с помощью PgAdmin и отображаю все сеансы базы данных, я вижу, что «Имя приложения» не установлено для моего сеанса. Есть ли способ установить имя приложения в соединении JDBC?


person markus    schedule 22.08.2011    source источник
comment
Пришло время ответить на мой собственный вопрос, его можно установить с помощью следующего кода: stmt = Con.prepareStatement(SET application_name = 'myApp'); stmt.execute();   -  person markus    schedule 22.08.2011


Ответы (1)


Можно установить имя приложения в качестве параметра подключения, поскольку Postgres JDBC 9.1dev-900 :

Добавлена ​​поддержка установки application_name как при запуске подключения, так и позже через Connection.setClientInfo. (юрка)

ex: jdbc:postgresql://localhost:5432/DbName?ApplicationName=MyApp

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

В предыдущих версиях это можно было сделать, установив параметр времени выполнения application_name:

s.execute("SET application_name TO 'MyApp'");
person Grzegorz Szpetkowski    schedule 22.08.2011
comment
На всякий случай кому-то будет полезно: это можно сделать специально для баз данных Oracle с дополнительным свойством: ((BasicDataSource) datasource).addConnectionProperty(v$session.program, Explicit метка подключения). Затем это будет показано в представлении Oracle v$session. Конечно, этот способ работает только для Oracle, и ваше решение JDBC, о котором я не знал, должно быть более надежным. - person SRG; 06.05.2012