欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库开发四:JDBC数据库开发进阶三(JDBC工具类-JNDI配置)

程序员文章站 2022-05-28 11:35:01
...

当前软件版本tomcat8jdk8

tomcat的jndi之jdbc官方文档详解

tomcat的jndi之jdbc官方文档详解
0简介
Tomcat 为每个在其上运行的 Web 应用都提供了一个 JNDI 的 InitialContext 实现实例
Tomcat中的默认数据源支持基于Commons 项目中的DBCP 1.x连接池,也可以使用实现任何其他连接池
1安装您的JDBC驱动程序
驱动程序的JAR文件安装到$CATALINA_HOME/lib目录
2声明您的资源需求
修改Web应用程序部署描述符(/WEB-INF/web.xml)

    <resource-ref>
        <res-ref-name>jdbc/myc3p0</res-ref-name>  <!--与context.xml下的Resources的name属性一致-->
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

3编写应用程序对此资源的使用代码

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
  envCtx.lookup("jdbc/EmployeeDB");

Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();

4配置Tomcat的资源工厂
请在Web应用程序的元素中添加一个这样的元素。

<Context ...>
  ...
  <Resource name="jdbc/EmployeeDB"
            auth="Container"
            type="javax.sql.DataSource"
            username="dbusername"
            password="dbpassword"
            driverClassName="org.hsql.jdbcDriver"
            url="jdbc:HypersonicSQL:database"
            maxActive="8"
            maxIdle="4"/>
  ...
</Context>

请注意,资源名称(此处为jdbc/EmployeeDB)必须与Web应用程序部署描述符中指定的值匹配。

学习过程中的问题

学习过程中的问题
1注意不同连接池的参数名是不一致的检查清楚
2配置的未生效,需要配置在conf/context.xml内
我尝试过以下方式(均失败-有成功的希望留言给份代码观摩一下啊)
该Context单独创建为xml,配置在localhost目录下文件名为工程同名(对项目有效),
Context内容配置在server.xml的host结构下(对主机有效),
Context内容在server.xml配置文件GlobalNamingResources节点中(全局有效)

3为什么配置的javax.sql.DataSource,获取的连接实现是dbcp的,因为默认数据源支持基于Commons 项目中的DBCP 1.x连接池
4相关驱动jar未放置在tomcat的lib目录

配置参考
 dbcp配置
   <Resource name="jdbc/mysql"
             auth="Container"
             type="javax.sql.DataSource"
             username="root"
             password="mysql"
             driverClassName="com.mysql.jdbc.Driver"
             url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf-8"/>

    <Resource name="mydbcp"
            type="org.apache.commons.dbcp2.BasicDataSource"
            factory="org.apache.naming.factory.BeanFactory"
            username="root"
            password="mysql"
            driverClassName="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf-8"
            maxIdleTime="3"
            maxWait="5000"
            maxActive="5"
            initialSize="3"/>
     c3p0配置
        <Resource name="jdbc/myc3p0"
            auth="Container"
            user="root"
            password="mysql"
            type="com.mchange.v2.c3p0.ComboPooledDataSource"
            factory="org.apache.naming.factory.BeanFactory"
            driverClass="com.mysql.cj.jdbc.Driver"
            jdbcUrl="jdbc:mysql://localhost:3306/test?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf-8"/>

相关源码下载


(点击下载)

相关标签: 数据库开发