2011-08-22 18 views
8

Tôi tạo kết nối tới cơ sở dữ liệu postgres 9 bằng trình điều khiển JDBC chuẩn.Hiển thị tên ứng dụng trong Thông tin phiên khi kết nối qua JDBC

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

Khi tôi kiểm tra trạng thái máy chủ bằng PgAdmin và hiển thị tất cả các phiên cơ sở dữ liệu, tôi có thể thấy "Tên ứng dụng" không được đặt cho Phiên của tôi. Có cách nào để đặt tên ứng dụng trong kết nối JDBC không?

+0

Thời gian để trả lời câu hỏi của riêng tôi, nó có thể được SET bằng mã sau: stmt = Con.prepareStatement ("SET application_name = 'myApp'"); stmt.execute(); – markus

Trả lời

9

Đó là có thể thiết lập tên ứng dụng như thông số kết nối từ Postgres JDBC 9.1dev-900:

Thêm hỗ trợ cho việc thiết application_name trên cả hai kết nối khởi động và sau đó thông qua Connection.setClientInfo. (Jurka)

ví dụ: jdbc:postgresql://localhost:5432/DbName?ApplicationName=MyApp

hoặc Connection.setClientInfo("ApplicationName", "My App")

Đối với các phiên bản trước, bạn có thể làm điều này bằng cách thiết lập thông số application_name runtime:

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

Chỉ trong trường hợp nó sẽ hữu ích cho ai đó: điều này có thể được thực hiện riêng cho cơ sở dữ liệu Oracle với một thuộc tính bổ sung: ((BasicDataSource) nguồn dữ liệu) .addConnectionProperty ("v $ session.program", "Nhãn kết nối rõ ràng"). Điều này sau đó sẽ được hiển thị trong v $ session Oracle view. Tất nhiên, cách này chỉ làm việc cho Oracle và giải pháp JDBC của bạn - người mà tôi không biết - nên mạnh mẽ hơn. – SRG

Các vấn đề liên quan