Spring中配置JNDI数据源
如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,更希望使用应用服务器本身提供的数据源。应用服务器的数据源使用JNDI开放调用者使用,Spring为此专门提供引用JNDI资源的JndiObjectFactoryBean类。
一、在Spring配置文件中的配置
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/DBPool</value>
</property>
</bean>
二、在web.xml的配置(这些标签就是用来建立当前应用环境到服务器资源的映射的)
<resource-ref>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
三、在Tomcat的配置
server.xml下 <GlobalNamingResources></GlobalNamingResources>中的配置
<Resource
auth="Container"
description="DB Connection"
driverClass="oracle.jdbc.driver.OracleDriver"
maxPoolSize="50"
minPoolSize="2"
initialPoolSize="5"
maxIdleTime="60"
autoCommitOnClose="true"
acquireIncrement="3"
name="jdbc/DBPool"
user="root"
password="123456"
jdbcUrl="jdbc:oracle:thin:@192.168.120.165:1521:orcl10"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
/>
context.xml下<Context></Context>中的配置
<ResourceLinkglobal="jdbc/DBPool" name="jdbc/DBPool" type="javax.sql.DataSource" />
四、调用
这样既可以通过Spring获得数据源得到Connection对象 , 也可以通过下面获得Connection 对象
Context context = new InitialContext();
DataSource dataSource = (DataSource)context.lookup("java:comp/env/jdbc/DBPool");
Connection con = dataSource.getConnection();