代码之家  ›  专栏  ›  技术社区  ›  Steven Schlansker

将PyGRESs连接与Java代码相关联

  •  2
  • Steven Schlansker  · 技术社区  · 16 年前

    我正在努力追查泄密的联系。(特别是,我注意到连接在最后一个数据源关闭之后保持打开状态,使用c3p0进行连接池。我怀疑有个虫子,但我想确保我不只是先装傻而已。)

    有没有一种好的方法可以将开放连接与Postgres视图相关联?

    postgres=# select * from pg_stat_activity;
    
    datid | datname  | procpid | usesysid | usename  |          current_query          | waiting |          xact_start          |         query_start          |         backend_start         | client_addr | client_port 
    11564 | postgres |   95709 |       10 | postgres | select * from pg_stat_activity; | f       | 2010-07-25 14:20:24.97529-07 | 2010-07-25 14:20:24.97529-07 | 2010-07-25 14:20:19.066576-07 |             |          -1
    
    (1 row)
    

    在Java/JDBC代码中打开了它们的位置?(或者可能是一些独特的字符串等) 似乎这应该是一个有用的东西!

    2 回复  |  直到 16 年前
        1
  •  1
  •   araqnid    16 年前

    PostgreSQL 9支持 application_name 可以用这种方式读取的设置,但对于之前的版本,服务器中没有类似的设置。

    有了JBoss,我们有了一个连接保护系统,当一个连接被打开时,它会在内部抛出并捕获一个异常,以便捕获回溯,然后将其与连接一起存储。然后,如果在事务结束时未关闭连接,则会记录该回溯,并发出警告。我猜,有可能将该策略调整到通用的数据源装饰层中,并定期扫描跟踪的连接,以查找那些在10分钟内(或大于预期寿命的某个时间)未使用但未关闭的连接。

        2
  •  0
  •   BalusC    16 年前

    这在PostgreSQL端是不可能检查的。它对Java代码一无所知。调用者只需输入用户名、密码和数据库名称。再也没有了。然而,在Java方面检查它是可能的。类似工具 log4jdbc 可能会有帮助。