• 【总结】关于tomcat+6.0中使用连接池的问题


       以前中练习时,遇到使用连接池时没有怎么在意觉得还是比较容易,没有很在意,觉得就是那个几个的配置问题简单的很!!!
             这次做博客系统的时候,觉得开始用连接池。可是当我把所有的配置都配置好后,开始验证的时候,就出现了一系列的问题,其中一个最让我纠结的文件就是这个javax.naming.NoInitialContextException。这是尼玛错误??纠结了我起码三个小时都没有解决,哎。。。悲剧!!!上网查资料,到论坛上提问,都没有解决!!!
            等过了一会儿,我突然脑中灵光一闪,既然java代码中不可以,那jsp中呢??等我在jsp中尝试的时候又遇到了Cannot load JDBC driver class 'com.microsoft.sqlserver.jdbc.SQLServerDriver'这个错误??为什么找不到驱动??我这里明明已经把该驱动复制到WEB-INF/lib中了啊??为什么还有错误呢??想不通!!然后又百度??找到了答案,要把该驱动复制到tomcat目录的lib下!!哎。。终于可以了!!感谢上帝!!感谢百度!!!!
          下面是关于在 tomcat 6.0中的使用连接池的相关的配置!!!
            一般可以这三个文件中可以配置:tomcat目录下的conf/context.xml、server.xml和webapps/app../META-INF/context.xml中进行配置:

    <Context reloadable="true">  
      <WatchedResource>WEB-INF/web.xml</WatchedResource>
    
      <Resource name="jdbc/server"  
      auth="Container"  
      type="javax.sql.DataSource"  
      driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"  
      url="jdbc:sqlserver://localhost:1433;databaseName=blog"  
      username="sa"  
      password="SQL2005"  
      maxActive="100"  
      maxIdle="30"  
      maxWait="10000" />
    
    </Context>

    然后是web.xml中的配置:
    <resource-ref>  
        <description>DBConnection</description>
        <res-ref-name>jdbc/server</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
      </resource-ref> 

    注意:在web.xml中的<res-ref-name>中的值要和Resource中的name的名字一样
    最后是测试代码了:
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
    <%@page import="java.sql.*"%> 
    <%@page import="javax.naming.*"%> 
    <%@page import="javax.sql.DataSource"%> 
    
    <html> 
    <head> 
    <title>Tomcat Connection Pool Test</title> 
    </head> 
    
    <body> 
    
    <% 
    try { 
           Context ctx = new InitialContext(); 
           Context envContext = (Context) ctx.lookup("java:/comp/env"); 
           DataSource ds = (DataSource) envContext.lookup("jdbc/server"); 
           Connection conn = ds.getConnection(); 
           out.println(conn); 
            conn.close(); 
    } catch (NamingException e) { 
    e.printStackTrace(); 
    } catch (SQLException e) { 
             e.printStackTrace(); 
    } 
    %> 
    </body> 
    </html> 
          由于在Tomcat中配置了数据源,可以通过(DataSource)envCtx.lookup(''java:/comp/env/jdbc")来查找这个资料源。查找到这个资料源,就可以通过Connection conn = ds.getConnection()的方法来获得一个到数据库的连接。
          在这里测试代码一定要在jsp中使用
         同时并在tomcat的lib下和WebRoot/WEB-INF/lib下加入上驱动文件
         Tomcat配置时连接池驱动包必须放在tomcat目录下的lib里。这是因为Tomcat连接池是在Tomcat启动时就创建了,那里还没有加载项目里的驱动包。


  • 相关阅读:
    OPCUA+MQTT构建物联网通用框架
    上位机开发之单片机通信实践(一)
    上位机开发之三菱Q系列PLC通信实践
    H5中你意想不到的美好
    ModbusRtu通信报文详解【二】
    ModbusRtu通信报文详解【一】
    基于C#实现与JY61姿态角度传感器通信
    以数字资产模型为核心驱动的一站式IoT数据分析实践
    基于华为云IoT Studio自助生成10万行代码的奥秘
    一条物联网设备控制命令的一生
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752308.html
Copyright © 2020-2023  润新知