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

[经验分享] tomcat JNDI数据源配置

[复制链接]

尚未签到

发表于 2017-1-21 09:38:05 | 显示全部楼层 |阅读模式
  准备工作:
安装tomcat5.5(注意这点)
安装mysql
拷贝mysql驱动到tomcat_home/common/lib下
新建一个web工程
在工程中加入index.jsp

DSC0000.gif <%@page import="java.util.*,javax.naming.*,java.sql.*,javax.sql.*" %>
<%@page contentType="text/html;charset=BIG5"%>
<%    
       Context ctx
= new InitialContext();      
       String strLookup
= "java:comp/env/jdbc/test";
       DataSource ds
=(DataSource) ctx.lookup(strLookup);
       Connection con
= ds.getConnection();
DSC0001.gif DSC0002.gif     
if (con != null) DSC0003.gif {
DSC0004.gif            out.print(
"success");
       }
else{
           out.print(
"failure");
DSC0005.gif        }
       
%>
  web.xml中加入

<resource-ref>
    
<res-ref-name>jdbc/test</res-ref-name>
    
<res-type>javax.sql.DataSource</res-type>
    
<res-auth>Container</res-auth>
    
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
  配置tomcat
这一步的目的就是告诉tomcat如何连接数据库
可以分为两种大的类型,每种类型又有很多种配置方式
配置类型一;
(直接配置的类型,这种方式最简单)
  方法一:
直接在tomcat_home/conf/localhost/下建立一个xml文件,文件名是<yourAppName>.xml
例如我的工程名叫jndi,对应的名字叫jdni.xml
内容如下:

<Context>
<Resource
             name
="jdbc/test"
             type
="javax.sql.DataSource"
             password
="bb"
             driverClassName
="com.mysql.jdbc.Driver"
             maxIdle
="2"
             maxWait
="50"
             username
="root"
             url
="jdbc:mysql://localhost:3306/test"
             maxActive
="4"/>
</Context>
  
方法二:
只需在tomcat_home\webapps\myapps\META-INF\context.xml中增加:

<context>
<Resource
             name
="jdbc/test"
             type
="javax.sql.DataSource"
             password
="bb"
             driverClassName
="com.mysql.jdbc.Driver"
             maxIdle
="2"
             maxWait
="50"
             username
="root"
             url
="jdbc:mysql://localhost:3306/test"
             maxActive
="4"/>
</context>
  
说明:这种配置需要告诉tomcat resource的内容,resource应用于什么地方
第一种方法通过文件名知道了app的name
第二种方式本身就在app内部,所以name肯定知道
两种方式都要放在context中
  配置类型二:
(配置全局resource,然后通过resourcelink来映射)
  步骤一:配置全局resource(这一步对于所有的配置都是一样的)
打开tomcat_home/conf/server.xml加入

<Resource
             name
="jdbc/test"
             type
="javax.sql.DataSource"
             password
="bb"
             driverClassName
="com.mysql.jdbc.Driver"
             maxIdle
="2"
             maxWait
="50"
             username
="root"
             url
="jdbc:mysql://localhost:3306/test"
             maxActive
="4"/>
  
步骤二:映射
(映射可以配置在多个地方,也就有多个配置方法:)
  方法一:(对比类型一的配置理解)
直接在tomcat_home/conf/localhost/下建立一个xml文件,文件名是<yourAppName>.xml
例如我的工程名叫jndi,对应的名字叫jdni.xml加入如下内容

<Context>
<ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>
</Context>
  
方法二:(对比类型一的配置理解)
在tomcat_home\webapps\myapps\META-INF\context.xml的Context中增加:

<context>
<ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>
</context>
  
方法三:(上边两种方法都是把全局的resource 映射给jndi这个web应用,第三种方法就是把这个
全局的resource直接公开给所有的应用)
在tomcat_home/conf/context.xml的<Context></context>之间加入
<ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>

运行测试:
打开ie,输入http://localhost:8080/jndi/index.jsp
看到success
  常见错误:
1,Name jdbc is not bound in this Context
2,Cannot create JDBC driver of class '' for connect URL 'null' conf localhost
原因:
大多数是因为配置了全局的resource,但没有link造成的。
解决:
加入link就行了,link的方式见类型二的三种方法。
  分析:
看到上边这么多方法,是否感觉眼花缭乱,其实不要死记配置,按照原理分析一下就好了。
你需要的是告诉tomcat哪个应用如何连接数据库。
  类型一的方式对应一个应用单独使用这个配置的情况
就是直接告诉tomcat"应用名"     "连接数据库需要的参数"
  类型二的方式对应多个应用共享一个配置的情况
这样先配置server.xml告诉tomcat全局范围的"连接数据库需要的参数"
然后映射,映射的时候
1,如果不知道"app name(应用名)"就只需要通过文件名来传递这个信息
2,如果"app name"都知道就只需要加入映射的内容
3,如果要配置成全局公用的,就不需要"app name",本身放在tomcat的context.xml中
  最后再次提醒一下:所有的配置必须放在<context></context>之间

运维网声明 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-331425-1-1.html 上篇帖子: Tomcat的生命周期管理 下篇帖子: tomcat 设置寻内存
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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