JNDI的配置方式,可以在容器上配置数据源,让数据源的配置不再是依靠 spring的applicationContext.xml。通过这种方式,也可以配置dbcp等其他连接池。
1 在tomcat的context.xml里的<context>标签添加<Resource>标签:
<Resource name="jdbc/TestDB"
auth="Container"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
driverClass="oracle.jdbc.driver.OracleDriver"
jdbcUrl="jdbc:oracle:thin:@localhost:1521:XE"
user="orcl"
password="newsnews"/>
不同数据源的 driverClass,jdbcUrl等 属性不同,依照连接池自身的属性配置,这里是使用的c3p0数据源,若使用其他数据源要修改属性;
2 在项目的web.xml添加:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
res-ref-name引入context.xml里配置的Resource,res-type都设置为javax.sql.DataSource;
3 在spring的applicationContext.xml配置里添加:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:/comp/env/jdbc/TestDB" />
</bean>