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

[经验分享] tomcat6数据库连接池配置详解

[复制链接]

尚未签到

发表于 2018-12-7 14:39:50 | 显示全部楼层 |阅读模式
  tomcat6数据库连接池配置详解
  首先说明下我的配置环境
  tomcat的版本是apache-tomcat-6.0.33非安装版本,路径为D:\Java\apache-tomcat-6.0.33,tomcat环境变量不设置不影响连接池的配置,
  mysql的驱动是mysql-connector-java-5.1.7-bin.jar,我建立的项目为JavaWeb。
  在TOMCAT6中配置数据库连接池,我自己测试成功的方法有四种:
  1)、配置全局数据库连接池(通过server.xml文件配置)
  2)、配置全局数据库连接池(通过context.xml文件配置)
  3)、配置局部数据库连接池(建立同项目名称相同的配置文件,放在%TOMCATHOME%\conf\Catalina\localhost,
  我电脑目录为D:\Java\apache-tomcat-6.0.33\conf\Catalina\localhost)
  4)、配置局部数据库连接池(建立context.xml文件,放置在项目的META-INF目录下)
  第一种方法:
  在server.xml配置文件中host标签下添加如下代码:
  
  
  
  第二种方法:
  在context.xml配置文件中添加如下代码:
  
  
  
  第三种方法:
  建立一个同项目名称相同的xml文件,如JavaWeb.xml,内容如下:
  
  
  
  
  将此文件放置在%TOMCATHOME%\conf\Catalina\localhost目录下。
  第四种方法:
  建立context.xml文件,内容如下:
  
  
  
  
  将其放置在JavaWeb项目中的META-INF目录下。
  说明:tomcat加载文件context.xml后,会在%TOMCATHOME%\conf\Catalina\localhost目录下生成同项目名称相同的xml文件,如JavaWeb.xml。
  以前配置过全局数据库连接池,就是修改server.xml文件,个人觉得这种配置方法非常不好,决定尝试下其他的连接池配置方法,也就有了今天这份文章。说下我配置中
  出现的问题,需要的朋友可以借鉴下。刚开始我配置的时候,建立了一个同项目名称相同的配置文件:
  JavaWeb.xml配置如下:
  
  
  
  
  按照书上的说明,这样配置就可以了。而实际上配置文件应该是起作用了,不起作用的话会报javax.naming.NameNotFoundException: Name book is not bound in this Context 这个错误的,可是就是不能获取数据连接。
  而报错如下:
  java.lang.NullPointerException
  at common.DBServlet.service(DBServlet.java:42)
  at logreg.Register.service(Register.java:20)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  at java.lang.Thread.run(Unknown Source)
  null
  开始以为是url的字符集引起的,取消掉后测试不是这个原因。仔细对比了下网上的配置文件,发现标签Resource复制成了ResourceLink,修改后就连接成功了。
  按照网上的说法,说配置web.xml可有可无,我自己测试也没有配置,结果测试能够通过。
  需要的配置的话,可以参考如下代码:
  
  DB Connection
  jdbc/webdb
  javax.sql.DataSource
  Container
  
  不过在测试的时候出现了一些问题,控制台虽然没有报错,但是出现一些红色的警报:
  2011-9-8 10:27:04 org.apache.catalina.startup.HostConfig checkResources

  信息:>  2011-9-8 10:27:04 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
  严重: The web application [/JavaWeb] appears to have started a thread named [AWT-Windows] but has failed to stop it. This is very likely to create a memory leak.
  2011-9-8 10:27:04 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
  严重: The web application [/JavaWeb] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
  如果知道的朋友是什么原因造成的,希望能告诉我。
  顺便说明下,mysql的驱动jar包,可以放到项目中的lib中,也可以放置到tomcat的lib中,可能由于版本的问题,测试结果不相同(修改server.xml的方法没有测试)。
  下面的语句是读取配置文件的java语句:
  javax.naming.Context ctx = new javax.naming.InitialContext();
  javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:/comp/env/jdbc/webdb");
  conn = ds.getConnection();
  如果你也出现了下面的问题,很可能是你的配置文件出错,仔细检查下,可能就会发现问题。

  org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of>  at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
  at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
  at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
  at common.DBServlet.service(DBServlet.java:43)
  at logreg.Register.service(Register.java:20)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  at java.lang.Thread.run(Unknown Source)
  Caused by: java.lang.NullPointerException
  at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
  at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
  at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
  at java.sql.DriverManager.getDriver(Unknown Source)
  at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
  ... 17 more
  null
  如果建立了context.xml文件,放到%TOMCATHOME%\conf\Catalina\localhost目录下时就会报下面的错误。
  java.lang.IllegalArgumentException: Document base D:\Java\apache-tomcat-6.0.33\webapps\context does not exist or is not a readable directory
  at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
  at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4320)
  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4489)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
  at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
  at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
  at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
  at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
  at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
  at org.apache.catalina.core.StandardService.start(StandardService.java:525)
  at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
  2011-9-8 14:55:54 org.apache.catalina.core.StandardContext start


运维网声明 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-644413-1-1.html 上篇帖子: Tomcat的增加/查看jvm虚拟内存 下篇帖子: Tomcat中JSP预编译处理Jasper 2 JSP Engine-J2EE
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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