1. A method of operating a JAVA Database Connectivity (JDBC) subsystem which includes monitoring the use of the JDBC subsystem, comprising: providing an application server which includes the JDBC subsystem, which uses a connection pool and a prepared statement cache to communicate requests from client applications to a database; associating the JDBC subsystem with a profiling component and a statistics monitoring component, which are configured to maintain profile information and statistics information respectively, concerning the connection pool and the prepared statement cache; providing, as part of the JDBC subsystem, a JDBC driver interface which includes a plurality of methods and which are used by the client applications to communicate with the database; allowing a client application to register a diagnostic callback with the JDBC subsystem for use with requests from that client application; subsequently accessing a method of the JDBC driver at the request of the client application; during the accessing step, checking whether the client application has registered a diagnostic callback; if the client application has registered a diagnostic callback, starting the diagnostic callback, and monitoring for that client application the methods of the JDBC driver being executed; and providing diagnostic information as a result of the monitoring.