准备条件:
1、jdk1.6(或jdk1.7)
2、tomcat6(或tomcat7)
3、数据库连接驱动,以mysql为例:mysql-connector-java-5.1.18.jar
配置jndi的步骤:
先来看非全局的配置方法(只有当前应用可以访问该jndi)
1、将数据连接驱动jar包拷贝到tomcat6下的lib目录下;
2、打开tomcat6下的conf目录下context.xml文件;
3、在<Context>......</Context>节点里添加如下代码:
<Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> --> <!--JNDI配置--> <Resource name="jdbc/rpepTest" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="5000" username="testuser" password="testpass" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://10.111.222.333:3306/rpep?zeroDateTimeBehavior=convertToNull"/> </Context>
各参数说明:
name="jdbc/rpepTest" -------jndi的名称
auth="Container" ------- jndi的认证方式,可选Container或Application
type="javax.sql.DataSource" ------- jndi所使用的类
maxActive="100" ------- 最大活跃的连接数
maxIdle="30" ------- 最大空闲连接数
maxWait="5000" ------- 最大等待时间
username="testuser" ------- 数据库用户名
password="testpass" ------- 数据库密码
driverClassName="com.mysql.jdbc.Driver" ------- 数据库驱动
url="jdbc:mysql://10.111.222.333:3306/rpep?zeroDateTimeBehavior=convertToNull" ------- 数据库连接URL
4、在程序中使用jndi:
4.1.新建一个web工程test(注意jndi需要在tomcat容器里使用);
4.2 修改test工程的web.xml,添加如下代码:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <resource-ref> <description>MySQL DataSource</description> <res-ref-name>jdbc/rpepTest</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
4.3 编写测试类:
package com.mycom.test; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; /** * 测试JNDI配置和连接 * * @author guweiqiang */ public class TestJNDI { private Connection getConnection() throws NamingException { Connection conn = null; String jndi = "jdbc/rpepTest"; Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env");// 固定,不需要修改 DataSource ds = (DataSource) envContext.lookup(jndi); if (ds != null) { try { conn = ds.getConnection(); } catch (SQLException e) { e.printStackTrace(); } } return conn; } public List<String> selectById(int id) { Connection con = null; try { con = getConnection(); } catch (NamingException e1) { e1.printStackTrace(); } List<String> list = new ArrayList<String>(); String sql = "select * from rpep_activity where id=?"; try { PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, id); ResultSet rs = pstmt.executeQuery(); if (rs.next()) { list.add(rs.getString(1)); list.add(rs.getString(2)); list.add(rs.getString(3)); System.out.println(rs.getString(1)); System.out.println(rs.getString(2)); System.out.println(rs.getString(3)); } } catch (SQLException e) { e.printStackTrace(); } return list; } public static void main(String[] args) { new TestJNDI().selectById(100051); } }
4.4.再编写一个测试jsp:
<%@page import="com.mycom.test.TestJNDI"%> <% new TestJNDI().selectById(100051); %> <html> <body> <h2>Hello World!</h2> </body> </html>
启动tomcat,访问:http://127.0.0.1:8080/test/
测试结果:
100051
5.1测试
5.6测试
再来看全局的配置方法(所有应用都可以访问该jndi)
与非全局的配置基本相同,只是具体的数据源配置信息时配置在conf下的server.xml文件里,然后在context.xml里进行引用。
1. 同样需要将mysql驱动连接的jar拷贝到tomcat的lib目录下;
2. 打开tomcat的conf目录下的server.xml文件,将数据源配置添加到<GlobalNamingResources></GlobalNamingResources>节点下:
<GlobalNamingResources> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> <!--JNDI配置--> <Resource name="jdbc/rpepTest" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="5000" username="testuser" password="testpass" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://10.111.222.333:3306/rpep?zeroDateTimeBehavior=convertToNull"/> </GlobalNamingResources>
3. 再在context.xml文件里添加全局引用:
<ResourceLink global="jdbc/rpepTest" name="jdbc/rpepTest1" type="javax.sql.DataSource"/>说明:jdbc/rpepTest是全局的JNDI,jdbc/rpepTest1是你的应用中使用的JNDI。
这一步也可以在应用程序的WebRoot\META-INF\下新建context.xml,然后中增加:
<ResourceLink global="jdbc/rpepTest" name="jdbc/rpepTest1" type="javax.sql.DataSource"/>以上配置完成之后,无需在web.xml里配置数据源引用了(配置了也没有作用)。
4. 测试过程同上。
相关推荐
在这个场景中,“intellij idea使用tomcat开发时自动部署jndi数据源”是一个重要的知识点,它涉及到如何在IDE中配置和管理数据库连接,以便于在应用运行时动态地查找和使用数据源。 JNDI(Java Naming and ...
Tomcat 配置 JNDI 数据源 Tomcat 是一个流行的 Java Web 服务器,JNDI(Java Naming and Directory Interface)是 Java 中的一种命名和目录接口规范。Tomcat 中的 JNDI 数据源是指将数据库连接信息注册到 JNDI ...
tomcat中配置jndi 数据源!!!
【标题】:“Tomcat配置JNDI数据源” 【描述】:“在Tomcat服务器上配置JNDI数据源,特别是通过DBCP连接池的方式” 【标签】:“tomcat,配置,JNDI数据源” 【内容】:配置JNDI数据源在Java Web应用程序中是一个...
在Tomcat配置JNDI数据源的三种方式
Tomcat配置JNDI数据源的N种方法
TOMCAT8 JNDI对用户名和密码加密
标题中的“Tomcat6.0配置JNDI数据源完整例子”是指在Apache Tomcat 6.0服务器中设置Java Naming and Directory Interface (JNDI)数据源的过程。JNDI是一个API,它允许应用程序查找和使用命名服务,如数据库连接池。...
在Tomcat中,JNDI被用来查找和绑定资源,如数据源、EJB等。配置JNDI资源可以帮助我们实现应用程序与数据库或其他服务的解耦,提高代码的可移植性和可维护性。 当在Tomcat6中配置JNDI时,错误可能由多种原因引起: ...
首先,在Tomcat中配置JNDI数据源需要创建一个`Resource`元素在特定的`Context`配置文件中。具体步骤如下: 1. **创建发布XML文件**:在`jakarta-tomcat-5.5.9\conf\Catalina\localhost`目录下创建一个名为`myprj....
在 Tomcat 中,配置 JNDI 数据源有两种方式:单个应用独享数据源和全局 JNDI 数据源。 1. 单个应用独享数据源 在 Tomcat 的 server.xml 文件中,添加一个私有数据源的配置。例如,使用 c3p0 数据源的配置: ```...
【描述】:“配置Tomcat 5.5及以上版本中的JNDI数据源” 【标签】:“JNDI数据源”、“数据源”、“JNDI” 【正文】: 在Java应用服务器如Tomcat中,JNDI(Java Naming and Directory Interface)是一种标准接口...
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
在Spring框架与Tomcat服务器的集成中,配置JNDI数据源是将数据库连接管理交给服务器来处理,提高应用的可移植性和资源利用率。下面将详细解释配置JNDI数据源的相关知识点。 一、JNDI数据源的概念 JNDI数据源是一种...
**二、Tomcat6.0配置JNDI数据源步骤** 1. **创建数据源配置文件**:在Tomcat的`conf/server.xml`文件中,找到`<GlobalNamingResources>`标签,在其中添加数据源的配置。例如,创建一个名为`jdbc/myDataSource`的...
本实例是一个关于如何在Tomcat 6.0中配置和使用JNDI数据源的经典示例,包含了所需的JAR包、配置文件和SQL脚本。 首先,我们来看配置JNDI数据源的步骤。在Tomcat的`conf/server.xml`文件中,你需要添加一个新的`...
总结,通过上述步骤,你已经在Tomcat中成功配置了一个JNDI数据源,使得应用程序可以通过全局名字方便地获取和释放数据库连接。这种配置方式提高了代码的可复用性和可维护性,同时利用连接池优化了数据库操作的性能。