在受管理环境中,如JBoss应用服务器,由容器负责构造数据源,即javax.sql.DataSource的实例,然后把它发布为JNDI资源,Hibernate的DataSourceConnectionProviderImpl类充当这个数据源的代理,这个类位于org.hibernate.engine.jdbc.connections.internal包中。
有些Servlet容器,如Tomcat,也能负责构造数据源,并能把它发布为JNDI资源,因此Hibernate也能从Tomcat容器中获得数据源。
以Tomcat为例,为了使Hibernate从容器中获得数据源,需要分别配置Tomcat容器和Hibernate:
(1) 在Tomcat容器中配置数据源。
(2) 在Hibernate的配置文件中指定使用容器中的数据源。
1.在Tomcat容器中配置数据源
在Tomcat的配置文件server.xml中,元素用来配置JNDI 资源,Tomcat允许把数据源也发布为JNDI资源。以下代码在Tomcat中配置了一个JNDI名为“jdbc/SAMPLEDB”的数据源。
<!-- 在Tomcat的配置文件server.xml中配置数据源 -->
<GlobalNamingResources>
……
<Resource name="jdbc/SAMPLEDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
m