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

[经验分享] java web项目配置tomcat连接池的那些搓事

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2017-2-7 11:09:16 | 显示全部楼层 |阅读模式
  引言:



    博客停了两天了,今天有点时间了,写点排Tomcat连接池BUG的总结贴吧。肯定对新手有帮助~。=
  
正文:



    本文包含两部分内容。第一部分是在eclipse下配置项目自身的连接池,这块有问题的比较多主要解决两个异常。第二部分是在Tomcat下配置全局连接池,这块有官方文档问题较少,简单过一下。


    本文的样例老规律,您可以在文尾下载到他。其中,测试获取连接写法如下:

// 获取Content对象
javax.naming.Context ctx = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:/comp/env/jdbc/webdb");
Connection conn = ds.getConnection();

  第一部分:eclipse下配置连接池



==操作非常简单步骤如下==



    1
,编辑\WEB-INF\web.xml(如果没有看一下项目是不是j2ee或者java web吧,两个叫法同一回事)。


      向<web-app>尾部追加子结点<resource-ref>具体内容如下:

<resource-ref>
<!-- 连接池名,一般为“jdbc/<数据源名>”,与context.xml -->
<!--   中的"<Resource>.name"对应即可 -->
<res-ref-name>jdbc/webdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
  2
,编辑\META-INF\context.xml(如果看不到,新建一个吧)。


      内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/webdb" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://10.0.2.128:3306/webdb?characterEncoding=UTF-8"
username="number"
password="znb041"
maxActive="200"
maxIdle="50"
maxWait="3000">
</Resource>
</Context>
  3
,检查环境。


      A)数据库jdbc包,已在lib目录,且被引入Build Path下;

      B)数据库处于运行状态。

      C)创建Tomcat6 Server,启动空跑成功,且访问到默认页面。


    4
,从eclipse启动“Tomcat v6.0 Server”。

==常见的两个报错==



    1
,“did not find a matching property”(跟池无关,细节自查)如下所示:

2011-7-8 11:24:29 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source'
to 'org.eclipse.jst.jee.server:webdemo' did not find a matching property.
  解决:


      A)打开Servers视图(eclipse | show view | others... | Servers);

      B)打开前面创建的“Tomcat v6.0 Server”(双击就成),停掉此Tomcat Server;

      C)找到“Server Options”,给“publish module contexts to separate XML files”打勾选中,保存;

      D)再次启动Tomcat Server,解决。


    2
,“Cannot create JDBC driver of class '' for connect URL 'null'”,如下所示:

信息: Server startup in 237 ms
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class ''
for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(
BasicDataSource.java:1452)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
BasicDataSource.java:1371)
  解决:


      出现这个提示,说明web.xml中的<resource-ref>已被接受。只是查找不到<res-ref-name>指定的数据源。因此,跟网上所说的anyoneormore in{jdbc包啦,环境变量啦,tomcat配置啦,换MyEclipse啦,重装猫和日蚀啦,杀毒还原系统啦,上传你的代码啦。。。}都无关,只是简单地读不到源。因此,要检查的是:

        A)context.xml标签值,是否真有空,或者null(1%可能,系舍入进来的);

        B)玩个找茬游戏,看看这两字符串区别:“\META-INF\context.xml”,“\WEB-INF\context.xml”……之后,你懂的。

第二部分:Tomcat下配置连接池



==操作非常简单步骤如下==



    1
,编辑\conf\server.xml。
  向<GlobalNamingResources>尾部追加子结点(切记是追加,别把“<Resource>.name=UserDatabase”的哥给整没了)。内容如下:

<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
<!-- name值在下文有对应关系-->
<Resource name="jdbc/webdb"
auth="Container" driverClassName="com.mysql.jdbc.Driver"
maxActive="200" maxIdle="50" maxWait="3000"
username="number" password="znb041" type="javax.sql.DataSource"
url="jdbc:mysql://10.0.2.128:3306/webdb?characterEncoding=UTF-8" >
</Resource>
</GlobalNamingResources>
   2
,编辑\conf\Catalina\localhost\webdemo.xml(文件名可随便起,没有就新建有就打开看看,结构一样就改改)。


      内容样本如下:

<Context path="/webdemo" docBase="/webdemo" debug="0">
<!-- 与上文“server.xml”中的<Resource>.name对应 -->
<ResourceLink name="jdbc/webdb"
global="jdbc/webdb"
type="javax.sql.DataSource" />
<Context>
  3
,启动\tomcat*\bin\startup.bat,测试。如报异常,请参看第一部分。因为官方有文档,问题不大。
  如有其他相关问题,欢迎尾随交流~。=
  我自己也被搞蒙过,话说——“BUG少的人不是没有道理的。


  (完结)

运维网声明 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-338763-1-1.html 上篇帖子: Tomcat下远程调式分析学习Flex服务器Blazeds (二) 下篇帖子: 在windows系统中生成数字证书并在tomcat中开启SSL服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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