【DataSource】局部数据源配置(用jdbc或c3p0配置数据源)

先介绍一下局部数据源配置的共同之处是:

需要在webapp应用文件夹下的/WEB-INF下的context.xml中配置,有的人是没有这个文件夹的,需要自己手动生成(没错就是我,全班都在用eclipse而我用idea发现自己并没有,可能是因为我创建的是maven工程是自己导入的webapp):

 导入后如上图。

这里再穿插一下context.xml和web.xml:

【方式1】传统的jdbc连接:

不需要在context.xml中配置。但是需要类加载驱动以及driverManager管理并获得数据库的连接。(后文的DataSource就是用来取代DriverManager驱动管理器的)

        //mysql8以后的版本都是这个,以前的版本是com.mysql.jdbc.Driver        
        String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/assign?useSSL=false&serverTimeZone=UTC";
        String username = "root";
        String password = "1234";
        try {
            Class.forName(driver);
            connection = DriverManager.getConnection(url,username,password);
        } catch (ClassNotFoundException e) {
            System.out.println(e);
//            getServletConfig().log("驱动程序类找不到!");
        } catch (SQLException e) {
            System.out.println(e);
        }

【方式2】用jdbc配置数据源(DataSource):(经常失败)

局部数据源配置需要在context.xml中声明,但不需要在web.xml中配置:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/" reloadable="true">
    <Resource
        name="jdbc/webstoreDS"
        type="javax.sql.DataSource"
        maxTotal="4"
        maxIdle="2"
        driverClassName="com.mysql.cj.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/assign?useSSL=false"
        username="root"
        password="1234"
        maxWaitMillis="5000"/>
</Context>

【方式3】用c3p0配置数据源(ComboPooledDataSource)

注意:配置c3p0的context.xml的Resource标签中的一些属性名可能跟jdbc中的不同!!!

比如:driverClassName变成driverClass,url变成jdbcUrl,username变成user等...

name属性可以任意取,是用于在初始化时寻找对应的context.xml中声明的数据源,以连接数据库。type取决于你配置数据源的类型,像c3p0就是com.mchange.v2.c3p0.ComboPooledDataSource,jdbc就是javax.sql.DataSource。而且还需要factory="org.apache.naming.factory.BeanFactory"。

<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable = "true">
    <Resource
        name="c3p0"
        type="com.mchange.v2.c3p0.ComboPooledDataSource"
        factory="org.apache.naming.factory.BeanFactory"
        auth="Container"
        driverClass="com.mysql.cj.jdbc.Driver"
        jdbcUrl="jdbc:mysql://localhost:3306/assign?useSSL=false"
        user="root"
        password="1234"/>
</Context>

JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一种标准的Java命名系统接口,在java代码中配置如下:

DataSource dataSource = null;
Connection connection = null;

InitialContext context = new InitialContext();
dataSource = (DataSource) context.lookup("java:comp/env/(context中配置的资源的name)");
connection = dataSource.getConnection();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值