Software that checks the value returned by the dataseMetadata method getJDBCMajorVersion for JDBC compliance level and, based on the value, takes different paths in the code will fail unexpectedly accessing java.sql.Wrapper when loading EmbeddedConnectionPoolDataSource in a JDK 6 environment. EmbeddedConnectionPoolDataSource reports a compliance level of 4 when loaded in a JDK 6 environment. It returns JDBC 4 objects but the Datasource itself does NOT satify the JDBC 4.0 interface Wrapper and so, not being fully compliant, should not report JDBC 4 compliance.
JSR 221 does not detail the behavior of the dataseMetadata method getJDBCMajorVersion but the description in Section 6.3, JDBC 4.0 API Compliance, states: "A driver that is compliant with the JDBC 4.0 specification must .. Fully implement .. java.sql.Wrapper". As Dan stated in his comment on
DERBY-2488, (http://issues.apache.org/jira/browse/DERBY-2488#action_12485033) EmbeddedConnectionPoolDataSource does not implement Wrapper.