От JNDI Resources HOW-TOЧто делать Tomcat под капотом, чтобы дать вам реализацию DataSource
<Context ...>
...
<Resource name="jdbc/EmployeeDB"
auth="Container"
type="javax.sql.DataSource"
username="dbusername"
password="dbpassword"
driverClassName="org.hsql.jdbcDriver"
url="jdbc:HypersonicSQL:database"
maxActive="8"
maxIdle="4"/>
...
</Context>
Тип является javax.sql.DataSource и это интерфейс.
Код ниже возвращает экземпляр DataSource и получает от него соединение.
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
envCtx.lookup("jdbc/EmployeeDB");
Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();
Из this Stackoverflow answer, он говорит, что фактическая реализация DataSource до поставщика базы данных.
Итак, в этом примере Tomcat использует driverClassName="org.hsql.jdbcDriver"
, чтобы вернуть реализацию DataSource?