準備工作:
Tomcat版本:tomcat6.0以上
下例中均使用MySQL數據庫
將對應數據源的jar包和MySQL的驅動包拷貝至tomcat的lib文件夾下
一、全局數據源
1步驟一:配置
在tomcat下的conf/server.xml的GlobalNamingResources節點標簽中增加如下配置:
A、 最基本的DataSource配置:
<Resource name="jndi "?auth="Container"
type="javax.sql.DataSource"
username="root"?
password="root"
driverClassName="org.gjt.mm.mysql.Driver"?
url="jdbc:mysql://localhost/test"?
maxActive="100"?
maxIdle="30"?
maxWait="10000"/>
B、 DBCP連接池配置:
<Resource name="jndi "?auth="Container"
type="javax.sql.DataSource"
username="root"?
password="root"
driverClassName="org.gjt.mm.mysql.Driver"?
url="jdbc:mysql://localhost/test"?
Factory=“org.apache.commons.dbcp.BasicDataSourceFactory”
maxActive="100"?
maxIdle="30"?
maxWait="10000"/>
C、C3P0連接池配置:
<Resource name="jndi"
???type="com.mchange.v2.c3p0.ComboPooledDataSource"??
???factory="org.apache.naming.factory.BeanFactory"?
???jdbcUrl="jdbc:mysql://localhost:3306/test"driverClass="com.mysql.jdbc.Driver"?
??? ????user="root"password="root" />?
D、Tomcat7 自帶的額數據庫連接池
<Resource name="jndi "?auth="Container"
type="javax.sql.DataSource"
username="root"?
password="root"
driverClassName="org.gjt.mm.mysql.Driver"?
url="jdbc:mysql://localhost/test"?
Factory=” org.apache.tomcat.jdbc.pool.DataSourceFactory”
maxActive="100"?
maxIdle="30"?
maxWait="10000"/>
?
這樣,數據源就配好了,但是如果你想要在你的項目中來使用,那么就需要在你項目的WebRoot下的META—INF下新建一個名為context.xml的文件夾,加入下面的配置(當然也可以直接配置tomcat下的conf/context.xml中,推薦放在META-INF中,這樣方便移植):
<Context>
<ResourceLink ?global="jndi"
name="jndiA"
type="javax.sql.DataSource"/>
</Context>
說明:jndi是全局的JNDI名稱,jndiA是你的應用中使用的JNDI名稱,明顯上述配置的作用就是把全局JNDI數據源與應用中使用的數據源關聯起來!
2.步驟2:使用JNDI數據源
A.代碼中使用:
? Context ctx = new InitialContext() ;
??DataSource ds = (DataSource)ctx.lookup("java:comp/env/jndiA ");
??Connection conn = ds.getConnection() ;
B.如果使用spring,那么在spring的配置文件中按如下方式配置DataSource即可:
<beanid="dataSource"
??? class="org.springframework.jndi.JndiObjectFactoryBean">
??? <property name="jndiName"value="java:comp/env/jndiA " />
</bean>
二、配置局部數據源:
局部數據源最好配置在項目WebRoot下的META-INF中的context.xml文件中的context節點中,配置的語法同全局數據源的配置方式,這樣配的好處是可以直接在項目當中修改配置信息,而不用單獨去修改tomcat的配置文件。
需要注意的是此時在項目中使用的JNDI name就是你配置信息中的name,這一點與全局稍有區別。
注:c3p0數據源配在這里的context中我沒有測試成功,啟動tomcat的時候,日志打印到no spring webapplicationinitializer types detected on classpath 就會一直卡在這里,最后超過tomcat的啟動時間然后報錯!對于這個問題,請教各位知道的大神!
?