Tomcat配置JNDI数据

网友投稿 1748 2022-10-31

Tomcat配置JNDI数据源

Tomcat配置JNDI数据源

本文将介绍Tomcat配置JNDI数据源的方法,主要分为配置局部数据源(仅供单个应用使用)和全局数据源(所有用该Tomcat的应用都可以使用)

一、思考

从我们学习Web开发以来,我们都是通过程序代码来实现数据库的访问的。从一开始直接将数据库配置信息写在代码中,到后来将配置信息抽取出来写在了Properties文件中,我们访问数据库的代码更加精简。

而通过JNDI方式访问数据库则更为直接,JNDI连接数据库的方式直接将数据库信息放在Tomcat中,而项目代码里直接通过JNDI技术就可以得到数据源。他们之间通过定义在Tomcat中的数据源名联系起来。

应该说,JNDI方式配置数据源将项目代码与实施部署分离开来了,有利于开发人员和实施部署人员各司其职。

二、配置方式

一般情况下,局部数据源直接配置在项目对一个的标签内,如下:

注:根据项目配置方式不同,可以配在servlet.xml中或conf/Catalina/localhost下的独立xml文件中

而全局数据源,则需要先在标签内添加数据源,然后在项目部署的标签内用引用对应的标签,如下:

1 2 3 4 5 6 7 8 9 10

注:1、这里第4行和第9行的name属性必须相同。

2、配置好全局数据源后,你不仅可以在server.xml文件中用引用,你也可以在conf/Catalina/localhost中的xml文件中引用。

选择局部数据源还是全局数据源完全取决你自己的需求,如果你经常 有几个项目需要用到同一个数据源,那么你可以使用全局数据源,然后在项目的标签中引用,这样可以避免重复书写内容。

三、测试

1、第三步所写的任一种方式配置好数据源。

2、配置完数据源之后,你还要把对应的数据库驱动文件放在项目的lib目录或者tomcat的lib目录下。

3、接着,我们写一个简单的Bean,Bean里进行数据库的连接。我们会在jsP页面上调用这个Bean并输出结果,以查看数据源是否配置成功。

JNDIBean.java文件

package com.chanshuyi.test;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import javax.naming.Context;import javax.naming.InitialContext;import javax.sql.DataSource;public class JNDIBean { public String getInfoByJNDI() { String result = ""; try { Context ctx = new InitialContext(); /* 在XML文件中定义的数据源名为:jdbc/dstest */ DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/dstest"); Connection conn = ds.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from t_yw_product where trueid = '260'"); while(rs.next()) { result += rs.getString("finaluser") + "
"; } } catch(Exception e) { e.printStackTrace(); } return result; }}

JNDITest.jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

Hello World !

<%=jndiBean.getInfoByJNDI()%>

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:J2EE中的过滤器和拦截器
下一篇:管理后台脚手架,实现了RBAC, 和一个简单的SQLALCHEMY的Mapper工具,基于tornado框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~