到底是 数据源(data source) 还是 连接池(connection pool) ???
我用tomcat + sqlserver2000,按官方网站上的提示,配置了连接池。
其中 %CATALINA_HOME%\config\server.xml 的相关片段如下:
<Context path="/myaddressbook" docBase="myaddressbook" debug="0" >
<Resource name="jdbc/mysqlserver" auth="Container"
type="javax.sql.DataSource"
description="addressbook Database"/>
<ResourceParams name="jdbc/mysqlserver">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DataBaseName=AddressBook</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
访问数据库的代码片段如下:
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)ctx.lookup("jdbc/mysqlserver");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String query = "select UserName, password from UserInfo";
ResultSet rs = stmt.executeQuery(query);
程序能正常访问到数据库,看上去一切正常。但是,我的问题如下:
1)我曾经用过weblogic的数据库连接池,初始连接数设为3,当我weblogic启动后,我在SQLServer的企业管理器中能看到当前有3个连接。但是,我用上面的设置启动tomcat后,SQLServer的企业管理器中看不到连接。这是为什么????
2)DataSource 应该表示数据源的一个接口,好象和连接池没有关系吧?
因为microsoft sqlserver2000 driver for jdbc的帮助文档上明确写着,上面的访问数据库的方法是通过DataSource,而不是connection pool
通过连接池访问的代码要这样写:
Context ctx = new InitialContext();
ConnectionPoolDataSource ds =
(ConnectionPoolDataSource)ctx.lookup("jdbc/DBPool");
pooledConnection pcon = ds.getPooledConnection("username", "password");
那么我当前的数据库访问方式到底是通过数据源呢还是连接池?
=======================================================================
有大虾帮忙解答疑惑吗????