Glassfish(EJBアプリ)でのDerbyデッドロックの問題をデバッグしようとしています。いろいろなところでロックテーブルを見たいので、次のコードを書きました。問題は、私が電話をかけるところすべてにあり、ロックテーブルは常に空として戻ってきます。私は何が欠けていますか?
private void dumpLockTable()
{
try ( Connection connection = dataSource.getConnection() )
{
PreparedStatement ps = connection.prepareStatement( "SELECT * FROM SYSCS_DIAG.LOCK_TABLE" );
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int columns = rsmd.getColumnCount();
StringBuilder sb = new StringBuilder();
sb.append( "Lock Table\n" );
while( rs.next() )
{
for ( int col = 1; col <= columns; col++ )
{
sb.append( rs.getString( col ) );
sb.append( "\t|" );
}
sb.append( "\n" );
}
logger.info( sb.toString() );
}
catch ( SQLException sqle )
{
logger.throwing( LOG_CLASS_NAME, "dumpLockTable", sqle );
}
}
これは、Glassfish3.1.2.1でのDerby10.8です。私は次のようにデータソースを取得しています:
@Resource(mappedName="jdbc/myderbyjndi")
private DataSource dataSource;
他のすべてのダービーアクティビティは、エンティティBeanとエンティティマネージャを介して行われます。