posts - 10, comments - 9, trackbacks - 0, articles - 17

关于java连接池

Posted on 2008-11-24 17:25 wesley1987 阅读(819) 评论(0)  编辑  收藏 所属分类: struts学习项目
1.为工程配置tomcat连接池:
配置server.xml (tomcat/conf/server.xml)在</Host>前面加上
<Context docBase="myWebProject"" path="/myWebProject" reloadable="true">
     <Resource name="连接池名字 例:jdbc/oracle" 
                    auth="Container" 
                    type="javax.sql.DataSource"
                    factory="org.apache.common.dbcp.BasicDataSourceFactory"
                    driverClassName="oracle.jdbc.driver.OracleDriver"
                    url="jdbc:oracle:thin:@127.0.0.1:1521:NEUSOFT"
                    username="" 
                    password="" 
                    maxActive="5000"
                     maxIdle="10" 
                    maxWait="-1"/>
</Context>
参数说明:
i.JNDI Name::注册到JNDI树上的名字(可以随便写)
ii. Data Source URL:连接数据库的URL
iii. JDBC Driver Class:Jbdc数据库的驱动名称
iv. User Name:访问数据库的用户
v. Password:访问数据库的密码
vi. Max. Active Connections:最大活跃连接数,指同时可以有多少个连接,设置为0没有限制
vii. Max. Idle Connections:最大空闲连接数,表示没有数据库连接时,连接池也必须保持最大空闲连接数,设置为0没有限制
viii. Max. Wait for Connection:连接建立等待时间,单位为毫秒,设置为-1无限制
ix. Validation Query::此参数用来查询池中的空闲连接(可以不配置)

需要把 jdbc的包导入 tomcat的lib中 (  tomcat6/lib   tomcat5.x/commen/lib)
oracle的包在oracle92/jdbc/classes12.jar
ms sqlserver要用到的三个驱动包

2。连接语句
     Context initCtx = new InitialContext();
   javax.sql.DataSource ds = (javax.sql.DataSource)initCtx.lookup("java:comp/env/连接池名字");
   conn = ds.getConnection();

jsp中:(不推荐)
 :<sql:setDataSource dataSource="连接池名字" var="myOracleDB"/> 

       <sql:query sql="select * from channel" dataSource="${myOracleDB}" var="channelRS"/>
            <c:forEach items="${channelRS.rowsByIndex}" var="channel">
                    ${channel[1]}
            </c:forEach>

使用连接池实现的连接,只能在web服务器中运行。不能run。
/*非连接池的一般JDBC使用*/
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,name,password);
stmt = conn.createStatement();
   rs = stmt.executeQuery(sql);
ORACLE:driver :oracle.jdbc.driver.OracleDriver
                        url:   jdbc:oracle:thin:@IP:1521:数据库名
                       包: oracle92/jdbc/classes12.jar
Sqlserver:driver:com.microsoft.jdbc.sqlserver.SQLServerDriver
                url:jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=数据库名

3. 连接池还有‘对所有工程配置tomcat连接池’和‘在struts中 配置struts-config.xml以配置连接池’。
      http://blog.csdn.net/angel_bear/archive/2006/06/09/784573.aspx (by angelbear)里有以上3种连接池的配置方法。


后补 疑问:factory="org.apache.common.dbcp.BasicDataSourceFactory" 这句话回引起一个 class cannt find 的异常,尚未解决。
    大致原因可能是缺少commons-dbcp-1.2.1和commons-pool-1.3的包,此包在tomcat6中未发现,tomcat5/commen/lib下有commons-pool-1.2.jar。
    而且很多人的连接池配置语句中 没有这句话。这句话的作用不太明白,但暂时好像不添加也能正常运行。













只有注册用户登录后才能发表评论。


网站导航: