设为首页 收藏本站
查看: 674|回复: 0

[经验分享] Tomcat6.0连接池配置

[复制链接]

尚未签到

发表于 2018-12-3 12:36:58 | 显示全部楼层 |阅读模式
  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 [age=21, maname=计算机科学与技术, nation=CHINA, place=西安, sex=男, sname=Aiilive, sno=200907010100]
  • Student [age=22, maname=软件设计, nation=CHINA, place=西安, sex=男, sname=Secondriver, sno=200907010101]
  • Student [age=19, maname=翰林儒学, nation=唐, place=兰若镇, sex=男, sname=宁采臣, sno=200907010102]
  • Student [age=45, maname=擒妖科学与技术, nation=道山, place=兰若镇, sex=男, sname=燕赤霞, sno=200907010103]
  • Student [age=27, maname=大唐时尚, nation=天庭, place=高老庄, sex=男, sname=猪八戒, sno=200907010104]
  • Student [age=21, maname=自由文艺, nation=唐, place=兰若寺, sex=女, sname=聂小倩, sno=200907010105]
  • Student [age=18, maname=塔与塔文化研究, nation=唐, place=西湖, sex=女, sname=白娘子, sno=200907010106]
  • Student [age=21, maname=翰林儒学, nation=唐, place=长安, sex=男, sname=许仙, sno=200907010107]

  


  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642826-1-1.html 上篇帖子: JDK和tomcat安装环境变量配置 下篇帖子: Tomcat6配置打开线程池
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表