• Tomcat中用JNDI方式加载JDBC DataSource以连接数据库


    概括一下,大致分为四步:安装驱动,填充context.xml,填充web.xml,编写程序取得连接。通过一个小DEMO对这种配置方式有了一点了解,以tomcat6.0连接mysql5.0.8数据库为例。


    安装驱动
    下载与所要连接的数据库版本对应的JDBC驱动程序,加入到应用的CLASSPATH。如果用tomcat部署,tomcat中最好也加上(笔者觉得好像没必要加,可是不加的话会报错……所以还是加了)。应该有办法不加的,若有高手路过,请指点。


    填充context.xml
    这里就像是做声明样的,把你要连接时的相关属性定义在里面。我的配置如下:
    <Context crossContext="true" docBase="E:/workspace/myeclipse-workspace/WebDevDemo/WebRoot" path="/webdemo">
    <Resource name="jdbc/EmployeeDB"
    auth="Container"
    type="javax.sql.DataSource"
    username="root"
    password=""
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/employee"
    maxActive="8"
    maxIdle="4"/>
    </Context>


    填充web.xml。我的配置:
    <resource-ref>
    <res-ref-name>jdbc/EmployeeDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>


    编写程序取得连接。俺的程序:
    Context ctx = null;
    Context context = null;
    DataSource dataSource = null;
    Connection conn = null;
    PreparedStatement statement = null;
    ResultSet rs = null;
    try {
    ctx = new InitialContext();
    context = (Context) ctx.lookup("java:comp/env");
    dataSource = (DataSource)context.lookup("jdbc/EmployeeDB");
    } catch (NamingException e) {
    e.printStackTrace();
    }

    try {
    conn = dataSource.getConnection();//获得连接
    //            取数据
    statement = conn.prepareStatement(SQL_FIND_ALL_SALARY_RECORDS);
    rs = statement.executeQuery();
    } catch (SQLException e) {
    e.printStackTrace();
    }


    按照以上的方式就能在tomcat里以配置的形式连接数据库,比我们把所有的连接属性都定义在类里要方便多了。由于公司用的还是5.0版的tomcat,所以笔者也用这个进行了实验,在操作上与6.0有两处不同:
    (1)在上面的第一步,加载驱动时。若是5.0版的,驱动的JAR包要放在%CATALINA_HOME%commonlib下面;若是6.0版的,驱动的JAR包要放在%CATALINA_HOME%lib下面。
    (2)在上面的第二步,声明连接的方式有所不同。5.0版比较复杂点,需要像下面这样配:
    <Context crossContext="true" docBase="E:/workspace/myeclipse-workspace/WebDevDemo/WebRoot" path="/webdemo">            
    <Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/EmployeeDB">
    <parameter>
    <name>username</name>
    <value>root</value>
    </parameter>
    <parameter>
    <name>password</name>
    <value></value>
    </parameter>
    <parameter>
    <name>driverClassName</name>
    <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <parameter>
    <name>url</name>
    <value>jdbc:mysql://localhost:3306/employee</value>
    </parameter>
    <parameter>
    <name>maxActive</name>
    <value>8</value>
    </parameter>
    <parameter>
    <name>maxIdle</name>
    <value>4</value>
    </parameter>
    </ResourceParams>
    </Context>
    效果一样,只是写法不同,6.0版本对配置文件做了简化,所以看起来清爽一些。呵呵,这貌似就是软件的升级哦

    http://hi.baidu.com/lck0502/item/81fd0fd1c1321ce4b3f7777c

  • 相关阅读:
    爱情七十八课,闲了就“犯贱”
    阿里巴巴中文站的CSS设计规则(转)
    爱情八十一课,可预测的分手
    [性格][管理]《九型人格2》 唐·理查德·里索(美)、拉斯·赫德森(美)
    爱情八十二课,爱情三国杀
    爱情七十九课,不爱权力大
    [心理学]《爱情心灵安全岛》 四四
    一些你不知道的囧知识,保证让你崩溃
    爱情七十四课,我们的意义
    爱情七十六课,门当户对
  • 原文地址:https://www.cnblogs.com/losesea/p/3691107.html
Copyright © 2020-2023  润新知