Tomcat配置JNDI数据源

经过3个多小时的努力,配置JNDI数据源(主要是通过DBCP连接池)终于搞定~
还是Tomcat官方的说明好,不过全是英文的,大概还看得懂.
百度上那么花花绿绿的太多了,一个也没成功!...
本例使用的数据库为Ms SQL Server 2000,对于其它数据库只是修改一下相应的参数即可,
服务器是Tomcat5.5, 与之间的版本配置连接池最简便
自己总结了一下,希望起到一个抛砖引玉的作用

总结:
第一步:

将驱动程序(jar包)放到tomcat安装目录下的common\lib文件夹下
第二步:

在Tomcat的webapps目录随便创建一个工程目录,例如myjdbc。在myjdbc目录下创建META-INF目录,在此目录下创建一个context.xml文件,里面的内容如下: 

<?xml version="1.0" encoding="UTF-8"?> 
<Context>
 <Resource name="jdbc/test" 
  auth="Container" 
  type="javax.sql.DataSource"
         maxActive="100" 
  maxIdle="30" 
  maxWait="10000"
         username="sa" password="" 
  driverClassName="net.sourceforge.jtds.jdbc.Driver"
         url="jdbc:jtds:sqlserver://localhost/pubs"/>
 </Context>

 

附注如下:
Tomcat标准数据源资源工厂配置项如下:
* driverClassName - 所使用的JDBC驱动类全称。
* maxActive - 同一时刻可以自数据库连接池中被分配的最大活动实例数。
* maxIdle - 同一时刻数据库连接池中处于非活动状态的最大连接数。
* maxWait - 当连接池中没有可用连接时,连接池在抛出异常前将等待的最大时间,单位毫秒。
* password - 传给JDBC驱动的数据库密码。
* url - 传给JDBC驱动的连接URL。
* user - 传给JDBC驱动的数据库用户名。
* validationQuery - 一个SQL查询语句,用于在连接被返回给应用前的连接池验证。
* 如果指定了该属性,则必为至少返回一行记录的SQL SELECT语句。


jdbc/test是数据源的名称(随意写,要和web.xml文件中 <res-ref-name>jdbc/test</res-ref-name> 一样即可),
其他的参数按照自己的实际情况进行修改,例如数据库的名称、账号、密码。

第三步:

在myjdbc目录下创建WEB-INF目录,创建web.xml文件,内容如下: 

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
version="2.4"> 

    <resource-ref> 
        <description>DB Connection</description> 
        <res-ref-name>jdbc/test</res-ref-name> 
        <res-type>javax.sql.DataSource</res-type> 
        <res-auth>Container</res-auth> 
    </resource-ref> 
</web-app> 

 

说明:
<resource-ref>
<descrtiption>引用资源说明</descrtiption>
<res-ref-name>引用资源的JNDI名</res-ref-name>
<res-type>引用资源的类名</res-type>
<res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web应用管理-->
</resource-ref>
第四步:

写个jsp,试一下吧!

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*,com.DBConnection" %>
<%
  try
  {
   //初始化查找命名空间
   Context ctx = new InitialContext(); 
   //InitialContext ctx = new InitialContext();亦可 
   //找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟你的DataSource名
   DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/test");
   //取出连接
   Connection conn = ds.getConnection();
System.out.println("connection pool connected !!");   
  } catch (NamingException e) {
   System.out.println(e.getMessage());
  } catch (SQLException e) {
   e.printStackTrace();
  }finally
  {
   //注意不是关闭,是放回连接池.
   conn.close();
  }

}
%>


或写个JSP用标签库测试一下:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/test">
select * from authors
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>
<c:forEach var="row" items="${rs.rows}">
    ${row.city}<br/>
</c:forEach>
  </body>
</html>

 

我成功了!Good Luck!
以下是配置JNDI的其他方法,个人不建议使用,因为修改服务器的
server.xml和web.xml,如果有一点错误,你的容器就会崩溃~

注:连接数据源的方法还有很多,在这里我简要说之:
比如说第二步还可以这么做:

在/tomcat/conf/Catalina/localhost(或其它主机名)/中添加以
虚拟目录名称(你的工程名)命名的XML文件来配置context.
比如我的主机下有个目录dbpool其地址为tomcat/webapps/test我可以这样来配置这个上下文:
在tomcat/conf/Catalina/localhost/目录下创建test.xml文件,内容和上面一样.

还可以:
在/tomcat/conf/server.xml中<host></host>标签之间添加
   
 

<Context path="/test" docBase="test"
        debug="5" reloadable="true" crossContext="true">
  <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude" driverClassName="net.sourceforge.jtds.jdbc.Driver"
               url="jdbc:jtds:sqlserver://localhost/pubs"/>
</Context>

 

其中path是你的工程路径(相对或绝对亦可),其中docBase="test"说明,此主机已经指向到webapps目录下了,回头
来看test这个上下文,它实际目录是位于webapps的目录下的,所以
在Context中我们可以将docBase直接设置为test了。如果它在webapps/dbpool/test下,则设置为dbpool/test就可以了。

附:JNDI——Java Naming and Directory Interface是一套提供naming和 directory功能的 API,
Java应用程式开发者透过使用 JNDI,在naming和 directory方面的应用上就有了共通的准则.

 

from :http://www.blogjava.net/supercrsky/articles/174931.html

转载于:https://www.cnblogs.com/xuan52rock/p/4745262.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

令牌验证 token

通过令牌验证在注册中心控制权限&#xff0c;以决定要不要下发令牌给消费者&#xff0c;可以防止消费者绕过注册中心访问提供者&#xff0c;另外通过注册中心可灵活改变授权方式&#xff0c;而不需修改或升级提供者。 可以全局设置开启令牌验证&#xff1a; <!--随机token令…

easybcd 支持 windows 10 和 ubuntu 14.04 双系统启动

家里计算机系统 windows 10 全新安装。 原本是双系统的&#xff0c;还有一个ubuntu。 windows 10 安装以后&#xff0c;恢复ubuntu就是问题了。 (事后经验&#xff1a;请不要立刻安装bcd修改工具) 最初的方法是利用easybcd修改bcd记录。操作是成功的&#xff0c;但系统重新启动…

需求分析与原型设计

结对者&#xff1a;031402140李严 0314026617林瑞斌 需求分析与原型设计 NABCD模型 N&#xff08;Need&#xff0c;需求&#xff09;: 收集信息的过程太过繁琐&#xff0c;有班级总负责人需汇总每一个同学的志愿并填入excel表中&#xff0c;上交年级负责人&#xff0c;年级负责…

IntelliJ IDEA---java的编译工具【转】

转自&#xff1a;http://baike.baidu.com/link?urlsEpS0rItaB9BiO3i-qCdGSYiTIVPSJfBTjSXXngtN2hBhGl1j36CYQORKrbpqMHqjvu3MOfkgVzpMqr8To2l2q IDEA 全称 IntelliJ IDEA&#xff0c;是java语言开发的集成环境&#xff0c;IntelliJ在业界被公认为最好的java开发工具之一&#…

struts2拦截器

struts拦截器 图&#xff1a; 1、拦截器是什么&#xff1f; 分离关注&#xff1a; 完成一个功能&#xff0c;可以写在一个类中&#xff0c;然后一个类中4个步骤&#xff0c;实现该类完成。 我们可以将4个步骤写在4个类中&#xff0c;然后每一个类完成一部分功能&#xff0c;然后…

Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)

By Lthis 上个月就想写了&#xff0c;一直没时间...网上大概搜了一下&#xff0c;原理与操作倒是一大堆&#xff0c;一直没看到源码实现&#xff0c;总得有人动手&#xff0c;这回轮到我了。东西写得很烂&#xff0c;请大牛勿喷。一直觉得靠源码的方式驱动学习是非常好的一种学…

飞机大战小游戏1.0版本

小时候大家应该都玩过飞机大战吧&#xff0c;这就是仿的一个飞机大战&#xff0c;但是没有写的很全&#xff0c;只能玩一次&#xff0c;死掉之后需要刷新页面玩第二次&#xff0c;话不说多&#xff0c;上代码&#xff1a; 初始页面&#xff1a; 整个的html代码还是很少&#xf…

记一次Jquery获取值的典型错误

直接上代码&#xff1a; 代码很简单&#xff0c;通过Post的形式提交参数&#xff0c;但是发现提交的data总是空&#xff0c;昨晚有点纳闷&#xff0c;今天一看才发现。。。 获取值得时候的顺序有问题&#xff0c;获取值应该是在onclick事件中。 综上&#xff1a;写Jquery的时间…

Skype For Business 2015实战系列14:创建Office Web App服务器场

Skype For Business 2015实战系列14&#xff1a;创建Office Web App服务器场前面的操作中我们已经成功的安装了Office Web App Server&#xff0c;今天我们将创建Office Web App服务器场。具体步骤如下:配置证书&#xff1a;登陆到OWA服务器,打开服务器管理器&#xff0c;点击“…

SQL Server 2008 基础

SQL Server 2008 基础SQL流程TDS是一种协议&#xff0c;一系列描述两个计算机间如何传输数据的规则。象别的协议一样&#xff0c;它定义了传输信息的类型和他们传输的顺序。总之&#xff0c;协议描述了“线上的位”&#xff0c;即数据如何流动。表格数据流协议是建立在TCP/IP N…

如何通过Git GUI将自己本地的项目上传至Github

ithud是一个程序员以后成长都会使用到的&#xff0c;先不说很多优秀的开源框架都在这上面发布&#xff0c;光是用来管理自己的demo都已经让人感到很方便&#xff0c;用得也很顺畅。而真正让我下定决心使用github的原因是因为两次误操作&#xff0c;将自己所有的学习demo全都删除…

【JSP笔记】第三章 JSP内置对象【上】

2019独角兽企业重金招聘Python工程师标准>>> 1.内置对象简介&#xff1a;JSP内置对象是WEB容器创建的一组对象&#xff0c;不使用new关键就可以是用的对象。 <% out.println(123); %> 2.九大内置对象&#xff1a; outrequestresponsesessionapplication Page …

java 并发编程多线程_多线程(一)java并发编程基础知识

线程的应用如何应用多线程在 Java 中&#xff0c;有多种方式来实现多线程。继承 Thread 类、实现 Runnable 接口、使用 ExecutorService、Callable、Future 实现带返回结果的多线程。继承 Thread 类创建线程Thread 类本质上是实现了 Runnable 接口的一个实例&#xff0c;代表一…

Docker监控方案(TIG)的研究与实践之Influxdb

2019独角兽企业重金招聘Python工程师标准>>> 前言&#xff1a; Influxdb也是有influxdata公司(www.influxdata.com )开发的用于数据存储的时间序列数据库.可用于数据的时间排列。在整个TIG(Telegrafinfluxdbgrafana)方案中&#xff0c;influxdb可算作一个中间件&…

Java第三阶段学习(三、字符流、转换流)

一、字节流读取中文时出现的问题&#xff1a; 文件中有中文时&#xff0c;用字节流读取会出现乱码的问题&#xff0c;因为一个中文为两个字节。 二、字符编码表 编码表&#xff1a;其实就是生活中字符和计算机二进制的对应关系表。 1、ascii&#xff1a; 一个字节中的7位就可以…

windows下OpenSSL加密证书安装步骤与使用方法

OpenSSL加密证书一般用于签名认证&#xff0c;含私钥和公钥。在Linux系统中&#xff0c;OpenSSL一般是已经安装好了&#xff0c;可以直接使用。而在Windows系统中&#xff0c;是需要安装使用的。 最近在使用支付平台时&#xff0c;用到了OpenSSL&#xff0c;鉴于此分享给大家&a…

java源码影视源码搭建教程_新版千月影视app源码+搭建教程

使用notepad批量替换URL【http://】为你的域名(被替换的域名访问有成品不能发布 需要修改的到前台confing里面查询)&#xff0c;替换名称【鲸鹰影视】为你的应用名称&#xff1b;服务端&#xff1a;1.将替换好的后端源码打包上传至站点根目录后解压&#xff1b;2.配置网站伪静态…

Uboot USB模式(RK3288变砖头的解决办法)

RK3288启动后有三种模式&#xff0c;可以分别进行操作。 第一种是normal也就是正常的启动模式。这个模式无法刷固件。一般板子通电就是这个模式 第二种是loader模式。就是刷固件模式。这个模式可以刷各种image。按住recover按键再通电&#xff0c;通过uboot的检测进入这个模式 …

DEV GridView嵌套

/// <summary> /// 绑定主表和明显表到GridView /// </summary> /// <param name"machineProduct">主表</param> /// <param name"configureData">字表</param> private void Mas…

局域网大型文件分发的可能解决方案

客户原来的做法是把文件上传到服务器&#xff0c;然后后形成一个普通的HTTP地址下入网站后台系统&#xff0c;然后客户端用户看到后&#xff0c;则下载下来。但是随着文件越来越大&#xff0c;客户端下载量增加&#xff0c;在局域内网环境中这种文件分发方式的弊端立现。服务器…