Connection オブジェクトで JDBC 接続 ID (UUID) を取得する必要があります。接続IDを取得する方法はありますか?
			
			7246 次
		
3 に答える
            0        
        
		
「sql-server への sql-connection」という意味であれば、jdbc にはこのための標準的な手段がありません。これは jdbc:mysql の手作りの例です (注意 - リフレクションと制限された文字):
    private long getJdbcConnectionId(Connection conn) {
    long cid = 0;
    try {
        Field f_conn__conn = conn.getClass().getSuperclass().getDeclaredField("_conn");
        f_conn__conn.setAccessible(true);
        Object o_conn__conn = f_conn__conn.get(conn);
        Field f_conn__conn__conn = o_conn__conn.getClass().getSuperclass().getDeclaredField("_conn");
        f_conn__conn__conn.setAccessible(true);
        Object o_conn__conn__conn = f_conn__conn__conn.get(o_conn__conn);
        Field f_connectionId = o_conn__conn__conn.getClass().getSuperclass().getDeclaredField("connectionId");
        f_connectionId.setAccessible(true);
        cid = f_connectionId.getLong(o_conn__conn__conn);
        f_connectionId.setAccessible(false);
        f_conn__conn__conn.setAccessible(false);
        f_conn__conn.setAccessible(false);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return cid;
}
于 2015-08-31T11:17:08.840   に答える