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服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。
分享到:
相关推荐
在代码中,我们可以通过以下方式查找并使用JNDI数据源: ```java InitialContext ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/MyDataSource"); Connection conn = ds....
以下是一种在Tomcat 5.5上配置JNDI数据源的详细步骤: 1. **放置驱动程序**: 将对应的数据库驱动JAR文件(如:ms-jdbc驱动或任何其他数据库的JDBC驱动)放入Tomcat安装目录下的`common/lib`文件夹,确保服务器...
然后,在 Tomcat 的 context.xml 文件中,添加一个 ResourceLink 节点,引用第一步配置的数据源: ```xml <ResourceLink global="jndiName" name="jndiName" type="javax.sql.DataSource"/> ``` 在上面的配置中...
Tomcat 配置 JNDI 数据源 Tomcat 是一个流行的 Java Web 服务器,JNDI(Java Naming and Directory Interface)是 Java 中的一种命名和目录接口规范。Tomcat 中的 JNDI 数据源是指将数据库连接信息注册到 JNDI ...
Tomcat配置JNDI数据源的N种方法
TOMCAT8 JNDI对用户名和密码加密
Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理。数据源是一个池子,里面有若干个数据连接对象,当需要时就从里面拿一个使用,使用完毕就放回去,如果超过最大...
总结来说,配置JNDI数据源是Spring与Tomcat协同工作的一个重要环节,它提高了系统的灵活性和可维护性,同时也优化了数据库连接的管理。通过理解JNDI的工作原理以及如何在Spring中配置和使用JNDI数据源,开发者能够更...
在Tomcat配置JNDI数据源的三种方式
总结,配置Tomcat 5.5及以上版本的JNDI数据源涉及多个步骤,包括添加JDBC驱动、配置全局数据源、在应用中引用数据源以及在代码中通过JNDI查找并使用数据源。选择全局或局部配置取决于应用的需求和资源的共享范围。...
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
本篇文章将重点讲解如何在Tomcat服务器上配置Teradata的JNDI数据源。 首先,Teradata是一个高性能、可扩展的企业级数据库系统,广泛应用于大型企业。而JNDI则是Java平台中的一个标准服务,提供了一种查找和访问各种...
综上所述,这个文档主要讲述了如何在Tomcat服务器上,通过Hibernate和JNDI数据源配置,使用DBCP连接池连接MySQL数据库。尽管Hibernate官方并不推荐使用DBCP,但文档仍然提供了详细的配置步骤,包括环境准备、数据库...
本文将深入探讨如何在Tomcat中配置和使用JNDI数据源。 **一、JNDI数据源的优势** 1. **集中管理**:所有应用共享同一数据源配置,避免了代码中的硬编码,方便管理和更新。 2. **解耦合**:应用与数据库连接细节分离...
首先,在Tomcat中配置JNDI数据源需要创建一个`Resource`元素在特定的`Context`配置文件中。具体步骤如下: 1. **创建发布XML文件**:在`jakarta-tomcat-5.5.9\conf\Catalina\localhost`目录下创建一个名为`myprj....
在Tomcat中配置数据源JNDI是Java Web应用开发中的一个常见任务。通过上述介绍的方法,可以根据不同的应用场景选择合适的数据源配置方案。需要注意的是,正确的配置不仅包括XML文件的编写,还包括相关驱动的正确安装...
在Java代码中,我们可以使用以下方式获取数据源: ```java Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:/comp/env"); DataSource ds = (DataSource) envCtx....
接下来,我们来看一下如何在Tomcat服务器中配置JNDI数据源。 ##### 4.1 配置`web.xml` 首先,在`WEB-INF`目录下的`web.xml`文件中定义数据源引用: ```xml 数据源说明 <res-ref-name>jdbc/AcmeDB <res-type>...
2. **web.xml配置**:在应用的`WEB-INF/web.xml`文件中,定义一个`<resource-ref>`元素来引用JNDI数据源: ```xml <description>Oracle Datasource example <res-ref-name>jdbc/myoracle <res-type>javax.sql....