http://suga.parfe.jp/td/index.cgi?date=20060809#p01
ConnectionPool の Connection が全て駆り出された状態で、synchronized (1) な DaoMetaDataFactoryImpl#getDaoMetaData() メソッドが ConnectionPoolImpl から Connection を取得しようとして checkOut() メソッド内のループ (2) で待ち状態に入り、すでに Connection を持っているスレッドが DaoMetaDataFactoryImpl#getDaoMetaData() の synchronized (1) 待ちに入ることでデッドロックが完成します。あとは初期化できていない Dao を使おうとして次々に synchronized (1) 待ちに入っていく