winson 发表于 2018-12-3 12:36:58

Tomcat6.0连接池配置

  QQ拼音生成的时间 2012年7月24日 23:59:11
      今天算是比较顺利赶在明天来临,解决了Web开发中Tomcat连接池配置的问题。
  网上关于连接池配置的文章千篇一律,而且大多数都是将Tomcat的帮助文档晦涩的翻译了一下就草草了事,很多代码中包含有中文字符,空格,格式不完整,注释添加错误位置。不知道写文章的人,究竟为何为文,以后即便自己用到也会出问题。
      还有很多问题,既然配置Tomcat,就因该标注配置的Tomcat是那一个版本,配置的信息添加在什么地方,什么位置都应该一一说清楚。
      自己动手亲自配置了一下。这里是基于Tomcat目录下的配置,属于全局的数据库连接池的配置。
   1.   在Tomcat1.6.x的按照目录下的conf文件夹下打开server.xml文件
      配置*.xml文件不管配置信息是否正确,必须书写xml文件的格式一定要正确。
     


[*]
[*]   
[*]   
[*]               
[*]               
[*]   
[*]

  

[*]


  第二个Resource是配置数据源的信息
  2.在在Tomcat1.6.x的按照目录下的conf文件夹下打开context.xml文件
  在Context标签之间添加如下内容。


[*]

  

[*]


  各种信息不解释,Tomcat帮助文档解释很清楚。
  3.在当前的应用程序的WEB-INF目录下的web.xml文件中添加如下信息
  


[*]Mircosoft SQLServer 2005
[*]   
[*]      DB Connection
[*]      jdbc/poolmssql
[*]      javax.sql.DataSource
[*]      Container
[*]

  

[*]   


  4.编写一个测试类
  


[*]public class PoolDB {
[*]
[*]   
[*]    public static Connection getConnection() {
[*]      // 初始化查找命名空间
[*]      Context initContext = null;
[*]      // 找到 DataSource
[*]      DataSource ds = null;
[*]      Context envContext = null;
[*]      Connection conn = null;
[*]      PreparedStatement pstmt=null;
[*]      ResultSet rs=null;
[*]      try {
[*]            initContext = new InitialContext();
[*]            envContext = (Context) initContext.lookup("java:/comp/env");
[*]            ds = (DataSource) envContext.lookup("jdbc/poolmssql");
[*]            conn = ds.getConnection();
[*]            System.out.println(conn);
[*]            String sql="select * from Student";
[*]
[*]            pstmt=conn.prepareStatement(sql);
[*]            rs=pstmt.executeQuery();
[*]            Student s=null;
[*]            List list=new ArrayList();
[*]            while(rs.next()){
[*]                s=new Student();
[*]                s.setSno(rs.getString("sno"));
[*]                s.setAge(rs.getInt("age"));
[*]                s.setSex(rs.getString("sex"));
[*]                s.setManame(rs.getString("maname"));
[*]                s.setNation(rs.getString("nation"));
[*]                s.setSname(rs.getString("sname"));
[*]                s.setPlace(rs.getString("place"));
[*]                list.add(s);
[*]            }
[*]            
[*]            for (Object st : list) {
[*]                System.out.println(st.toString());
[*]            }
[*]      } catch (NamingException e) {
[*]            // TODO Auto-generated catch block
[*]            e.printStackTrace();
[*]      } catch (SQLException e) {
[*]            // TODO Auto-generated catch block
[*]            e.printStackTrace();
[*]      }
[*]      return conn;
[*]
[*]    }

  这是获得数据库连接的类,这里用到了一个实体类Student,属性可以看出,数据库中已经存在一张表Student并且存有数据。
  接下来进行测试,在获得数据库连接的类PoolDB写上main方法:
  


[*]public static void main(String[] args) {
[*]
[*]      System.out.println(PoolDB.getConnection());
[*]
[*]    }

  
  既然是在Tomcat下配置的数据库连接池那么就应该启动Tomcat;接下来运行应用程序,错误直接发生了。
  



public class InitialContextextends Objectimplements Context


  此类是执行命名操作的初始上下文。
  所有命名操作都相对于某一上下文。该初始上下文实现 Context 接口并提供解析名称的起始点
  应为执行的是PoolDB类,并没有相对于上下文的操作所以抛出异常。
  5.编写一个*.jsp文件
  




[*]


  使用到PoolDB类。
  然后在通过浏览器来访问义页面,执行正常,查询到数据库表Student中的内容。
  




[*]jdbc:sqlserver://localhost:5140;selectMethod=direct;lastUpdateCount=true;databaseName=ext;, UserName=sa, Microsoft SQL Server 2005 JDBC Driver
[*]Student
[*]Student
[*]Student
[*]Student
[*]Student
[*]Student
[*]Student
[*]Student

  


  6.接下来根据自己亲自在Tomcat1.6.x版本下的操作,去除掉在WEB-INF下的web.xml的配置信息,仍然可以获得第5条中查询的结果
  7.如图可以看到真相。
  


  http://blog.运维网.com/attachment/201207/003651484.png
  眼睛一亮就可以看到,这里的sqljdbc2005.jar驱动包绝对不是很多网上的文章所说的那样放在Tomcat的common文件夹下,可惜Tomcat1.6.就只用lib文件。
  如上图:itext-5.2.1.zip是通过引用的包,这里仅仅体现sqljdbc2005.jar绝对是放在Web工程的lib目录下面的。
  8.在Tomcat安装目录的conf文件夹下的context.xml文件中的资源连接必须写
  




[*]

  不然将会产生如下问题。
  




[*]javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
[*]    at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
[*]    at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
[*]    at xiao.zhang.dbc.PoolDB.getConnection(PoolDB.java:33)
[*]    at org.apache.jsp.index_jsp._jspService(index_jsp.java:111)

  错误信息提示很清楚所配置的数据库连接池没能子会话中找到。
  9.还用一些给单独的工程配置,所要做的操作和添加的配置信息是相同的只是在不同的位置。



页: [1]
查看完整版本: Tomcat6.0连接池配置