If this is using JPA, matbe you are not seeing any locking because the entity manager is flushing is requests to the database engine only when the entity bean methods is returned from and the transaction manager kicks in to persist the changes.
Try adding a "em.flush()" call on the entity manger which will force the database changes to occur and then maybe you might see the lock table populated. Just a thought. Brett ________________________________________ From: Mark Stephen Krueger [[email protected]] Sent: Sunday, February 03, 2013 11:21 AM To: [email protected] Subject: SYSCS_DIAG.LOCK_TABLE keeps coming up enpty I'm trying to debug an issue with a deadlock with an EJB app running under Glassfish 3.1.2.1. The app uses entity beans and the entity manager. I want to view the lock table at various points so I wrote the following code. The problem is everywhere I place a call to it, the lock table is always coming back as empty (no rows). What am I missing? @Resource(mappedName="jdbc/myderbyjndi") private DataSource dataSource; .. 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 ); } } I believe this is Derby 10.8.
