weixin_42239508
张西军
2008-09-01 10:36

spring使用tomcat连接池的问题

  • spring

根据网上资料成功配置了tomcat的数据库连接池
具体方法:
1.把数据库JDBC驱动拷贝到%TOMCAT_HOME%/common/lib和%TOMCAT_HOME%/webapps/yourweb/WEB-INF/lib下
2.%TOMCAT_HOME%/conf/catalina/localhost/yxkh.xml如下
[code="xml"]

auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="10"
maxWait="1000"
username="xx"
password="xx"
driverClassName="com.ncr.teradata.TeraDriver"
url="jdbc:teradata://xx.xx.xx.xx/CLIENT_CHARSET=cp936,TMODE=TERA,CHARSET=ASCII,database=DW_PTEMP"
/>

3.web.xml添加

DB Connection
jdbc/teradataDB
javax.sql.DataSource
Container

4. 然后在jsp调用
javax.naming.Context context = new javax.naming.InitialContext();

javax.sql.DataSource ds = (javax.sql.DataSource)context.lookup("java:comp/env/jdbc/teradataDB");

java.sql.Connection conn = ds.getConnection();

能够成功打开数据库连接。

现在我的想法spring注入,避免在程序中出现
javax.naming.Context context = new javax.naming.InitialContext();

javax.sql.DataSource ds = (javax.sql.DataSource)context.lookup("java:comp/env/jdbc/teradataDB");

不知应该怎么配置,怎么使用,由于对spring不太熟悉,还望指教。谢谢!

补充:
再次查找了网上资料,应该如下来配置bean xml
class="org.springframework.jndi.JndiObjectFactoryBean">

java:comp/env/jdbc/TeradataDB


如果是正确的,在jsp中应该如何调用呢?

[b]问题补充:[/b]
to zhai puhong (高级程序员)
感谢你的回复。

你的意思spring配置一个bean就是数据库连接池了吗?



package yxkh.common;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class TeradataConnection {
private static Log log = LogFactory.getLog(TeradataConnection.class);

private DataSource dataSource; 

public TeradataConnection() {}

public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
}

public DataSource getDataSource() {
    return dataSource;
} 

public Connection getConnection() {
    Connection conn = null;

    try {
        conn = dataSource.getConnection();
    } catch (SQLException e) {
        log.error("连接数据库失败", e);
    } 

    return conn;
}

}

然后在jsp中,如下使用吗?
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
TeradataConnection db = (TeradataConnection ) ctx.getBean("dbConn");

db.getConnection();

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

3条回答

为你推荐

换一换