2015-05-09 2 views
3

От 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?

ответ

4

Tomcat имеет реализацию connection pool. Этот пул соединений имеет реализацию интерфейса DataSource. И эта реализация использует указанный класс драйвера (org.hsql.jdbcDriver), чтобы открыть подключения к базе данных.