1、添加全局数据源
在$TOMCAT_HOME$/conf/server.xml文件中添加以下JNDI数据源配置:
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource"
username="test"
password="test"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:test"
maxActive="100"
maxIdle="30"
maxWait="10000"/>
2、在应用中添加引用全局数据源的配置
在项目中/WEB-INF/下的web.xml中加入以下配置
<resource-ref>
<description>OracleDataSource</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3、添加JDBC驱动包
将Oracle的驱动包(ojdbc14.jar)放到拷贝到
$TOMCAT_HOME$/目录下的lib中。
4、在应用中使用JNDI(也可以在应用中使用Spring来获取Tomcat的JNDI数据源)
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/test");
Connection conn = ds.getConnection();
疑问:
1、Tomcat采用的默认数据连接池类型是哪种?
Tomcat默认采用DBCP连接池,但是Tomcat默认使用的DBCP的jar包被tomcat重新打包整理了,类路径跟apache 的DBCP包不一样。被tomcat整理后的jar包在$TOMCAT_HOME$/lib/tomcat-dbcp.jar。
怎么证明Tomcat默认采用的就是被Tomcat整理过的DBCP呢?
打开$TOMCAT_HOME$/lib/catalina.jar的ResourceFactory.class的109行(如下代码):
else if (ref.getClassName().equals("javax.sql.DataSource")) {
String javaxSqlDataSourceFactoryClassName = System.getProperty("javax.sql.DataSource.Factory", "org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory");
try
{
factory = (ObjectFactory)Class.forName(javaxSqlDataSourceFactoryClassName).newInstance();
}
当factory属性没有配置并且type属性等于 javax.sql.DataSource时,采用org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory数据库连接池。
2、如何改为自己指定的连接池类型?
如果你使用其他数据源如DBCP数据源,需要在<Resouce 标签多添加一个属性如factory="org.apache.commons.dbcp.BasicDataSourceFactory"当然你也要把DBCP相关jar包放在tomcat的lib目录下。
3、不同项目用到不用数据源,不要因为某些数据源没法访问而导致其他项目应用跑不起来。
在WebRoot下面建文件夹META-INF,里面建一个文件context.xml,添加内容和以上一样。可以把配置需要jar包直接放在WEB-INF的lib里面,而不需要一定要放在Tomcat的lib目录下。
如果一个项目分成几个war部署,建议采用全局数据源配置较好。如果只是开发可以使用局部的方式。
4、JNDI数据源配置在config/server.xml和config/context.xml有什么区别?
在tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个context.xml文件中。因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。
分享到:
相关推荐
自己总结的三种使用方式,对比来看选择最适合你的方式
tomcat上配置的JNDI数据源的几种方式
Tomcat配置JNDI数据源的N种方法
NULL 博文链接:https://buliedian.iteye.com/blog/858026
tomcat配置jndi几个方式
Tomcat6+spring+jndi配置数据源说明.docx
在Tomcat配置JNDI数据源的三种方式
TOMCAT8 JNDI对用户名和密码加密
Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程
如何使用JNDI数据源,Tomcat数据源配置
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
Tomcat_5配置JNDI数据源
java中使用tomcat提供的JNDI数据源
tomcat中配置jndi 数据源!!!
根据项目名自动生成 JNDI 配置文件,使程序员从手动配置JNDI数据源中解脱出来。 使用说明: 1、把“TomcatJNDI.war”文件放入 tomcat 的 webapps 文件夹下; 2、启动tomcat,在地址栏上输入:...
详细介绍了在Tomcat中配置数据源JNDI的三种方法,其中第一种方法最好用,附带一部分源代码
收集而来。非常的好@@@累死了,睡觉去@ 在struts+hibernate中使用tomcat5.5的jndi数据源
配置JNDI数据源 spring tomcat
Springmvc +JNDI 在Tomcat下 配置数据源 ... 第二种:配置全局JNDI数据源,应用到单个应用 三、 数据源配置在Tomcat/conf/ context.xml 文件或者 server.xml 文件 中的区别 四、 常见的报错及解决方案
Tomcat6.0 JNDI数据源经典实例,里面JAR包,配置文件,数据源都配置好了,sql语句已经打包好了,直接可以建表的。