tomcat读取jndi

可能你在网上也会找到另外的一些文章,配置方法真是五花八门!但是如果你细心一点就会发现,可能都会要求你把JDBC驱动放到%CATALINA_HOME%\common\lib下面。其实这会给别人带来部署上的不方便,因为更改了别人的文件系统。

        至于为什么会有这样的要求,那是因为在配置数据源的时候,默认采用了Tomcat自带的那个DBCP数据源,或者配置了自己的数据源却没有把相应的一些JAR包放到工程的WEB-INF\lib下。

       第一种情况,如果你使用Tomcat自带的DBCP数据源,那么也就是由Tomcat来负责初始化和连接数据库,但是Tomcat没有自带JDBC驱动,在Tomcat中,Tomcat的ClassLoader不会去装载具体应用的Jar,所以当然是会报找不到驱动啦!

       第二种情况,如果配置了自己的数据源却没有相应JAR包的话,那么Tomcat就会采用他自己的JAR包,原因和上面类似。

       现在我所谓的“Tomcat使用JNDI获取数据源完美方案”,就是指只需要把相应的驱动和DBCP包放到WEB-INF\lib下,就可以通过JNDI正常访问到数据源的意思。

     首先要配置一个数据源,我这里采用DBCP,在%TOMCAT_HOME%\conf\Catalina\localhost\下建立一个以你的工程名字命名的XML文件,我这里是Test.xml,内容如下:

    <?xml version='1.0' encoding='utf-8'?>
   <Context path="/Test" docBase="F:\WorkSpace\Test\WebRoot" debug="0" reloadable="true">
  <Resource name="jdbc/manage"   auth="Container" type="javax.sql.DataSource"/> 
   <ResourceParams name="jdbc/manage"> 
     <parameter> 
     <name>factory</name> 
     <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> 
     </parameter> 
     <parameter>
     <name>removeAbandoned</name>
     <value>true</value>
     </parameter>
     <parameter>
     <name>logAbandoned</name>
     <value>true</value>
     </parameter>
     <parameter> 
     <name>url</name> 
     <value>jdbc:mysql://localhost/sample?useUnicode=true&amp;characterEncoding=UTF-8</value> 
     </parameter> 
     <parameter> 
     <name>driverClassName</name>
     <value>com.mysql.jdbc.Driver</value>
     </parameter> 
     <parameter> 
     <name>username</name> 
     <value>root</value> 
     </parameter> 
     <parameter> 
     <name>password</name> 
     <value></value> 
     </parameter>     
     <parameter> 
     <name>maxWait</name> 
     <value>3000</value> 
     </parameter> 
     <parameter> 
     <name>maxIdle</name> 
     <value>100</value> 
     </parameter> 
     <parameter> 
     <name>maxActive</name> 
     <value>10</value> 
     </parameter> 
   </ResourceParams> 
</Context>

docBase是你的工程存放的物理路径,url是连接字符串,username就是连接数据库的用户名,password是数据库连接密码。

   第二步:编辑你的工程下的WEB-INF\web.xml文件,加上以下一段:

   <?xml version="1.0" encoding="UTF-8"?>
  <web-app>
 <resource-ref>
  <res-ref-name>jdbc/manage</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>
  </web-app>

这里是做一个引用的意思,具体含义我也不清楚。

   做完以上步骤就行了,在lookup数据源的时候,需要在这个数据源前面加上java:comp/env/,这个东西是Tomcat的一个默认的命名空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值