张西军 2008-09-01 10:36
浏览 170
已采纳

spring使用tomcat连接池的问题

根据网上资料成功配置了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条回答 默认 最新

  • piccbj 2008-09-01 12:49
    关注

    你这样配置应该是没有问题的。但是你是想jsp中或许数据源取得连接(Connection)吗,如果是这样,你就是绕开Spring和Hibernate直接和数据库打交道了,如果这样你可以自己写个jta来管理数据库事务。不过这种做法本身就是有问题的,既然用了Spring,有何苦在jsp搞那么“丑陋”的代码呢;

    还有,使用Spring,完全可以这么配置数据源:
    [code="java"]













    [/code]

    把一切都交给Spring,这样移植也方便的多。

    我只是提个建议。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏