`
ijavagos
  • 浏览: 1191231 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Tomcat 6 数据源配置详解

阅读更多

用TOMCAT6已经有一段时间了,之前连接数据库都是用传统的方法。由于用数据源连接数据库性能更好,所有必须知道怎么配置数据源。下面是配置MYSQL数据库的数据源,在网上查找相关解决方案,后调试解决如下:

先说一下以前版本的配置:Tomcat 5的数据源配置跟Tomcat 5.5的数据源配置有很多的差别,Tomcat 6的数据源配置跟Tomcat 5.5的配置基本上相同。
以前的Tomcat5的配置需要在server.xml文件当中配置或者在conf/Catalina/localhost下面相应的上下文配置文件做配置。这种配置方式不合理的地方在于,假如数据库做了更改,程序员需要手工去修改这些文件,不利于团队开发。而且,这种配置一次只针对一个Web应用,如果很多Web应用,必须一个一个的配置。
Tomcat 5.5跟Tomcat 6的配置显得更为简单。假如我们想为所有的Web应用配置数据源,只需要我们只需要修改%CATALINA_HOME%/conf/context.xml文件,加入如下代码:

<Context reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" logAbandoned="true"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dataBaseName"/>
</Context>
如果想对一个Web应用配置数据源,可在web应用的根目录下,新建一个META-INF的目录(假如不存在),在该目录下创建一个context.xml文件,并且在context.xml文件当添加上面这段代码。(当然此时<WatchedResource>WEB-INF/web.xml</WatchedResource>不需要)
或者在$CATALINA_HOME/conf/server.xml文件中的<Host></Host>标签之间加入如下的Context代码:
<Context path="/path" docBase="systemPath" reloadable="true">
<Resource
name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dataBaseName"/>
</Context>
解释一下各个元素的意思:
name 表示指定的jndi名称(可以自己随便取)
auth 表示认证方式,一般为Container
type 表示数据源类型,使用标准的javax.sql.DataSource
maxActive 表示连接池当中最大的数据库连接
maxIdle 表示最大的空闲连接数
maxWait 当池的数据库连接已经被占用的时候,最大等待时间
logAbandoned 表示被丢弃的数据库连接是否做记录,以便跟踪
username 表示数据库用户名
password 表示数据库用户的密码
driverClassName 表示JDBC DRIVER
url 表示数据库URL地址
(dataBaseName 更改为你自己的数据库名)

把MYSQL驱动拷贝到TOMCAT的lib目录或某个Web应用的WEB-INF下的lib目录下(我用的是mysql-connector-java-5.1.6-bin.jar

在以往的tomcat当中,还需要在自己的web应用的WEB-INF目录下的web.xml指定相应的resource,在tomcat 5.5以后的版本不写也可以。代码为:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

java中得到连接的代码为:
Context initCtx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)initCtx.lookup("java:comp/env/jdbc/mysql");
Connection conn = ds.getConnection();

另:Context元素代表一个web应用,运行在某个特定的虚拟主机上。你可以在一个Host元素中嵌套任意多的Context元素。每个Context的路径必须是惟一的,由path属性定义。


另:在conf/Catalina/localhost下面相应的上下文配置文件做配置地方法
我们可以把 Context 片断以<path>.xml保存在%CATALINA%/conf/<ENGINE>/<HOST>/文件下面。比如:我通过URL访问的应用的路径是:http://localhost/test/,那么,Context的文件名称为test.xml。把text.xml保存到%CATALINA%/conf/Catalina/localhost下面。其中:

  1. %CATALINA%这是Tomcat的根目录
  2. <ENGINE>在server.xml里可以通过<ENGINE> 标签的name属性看到,Catalina是Tomcat的默认名称
  3. localhost是虚拟主机的名称了。这个在server.xml里也可以查看得到。

另外,还应该在我们应用的web.xml(也就不是tomcat根目录下的conf/web.xml)里面加入资源引用:(Tomcat 5.5之后的版本不加也行。)

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


好了,把每个文件都贴出来。



%CATALINA%/webapps/test/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

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

</web-app>


%CATALINA%/conf/Catalina/localhost/test.xml

<Context>
<Resource name="jdbc/TomcatHibernate" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="admin" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/hibernate"/>
</Context>

%CATALINA%/webapps/test/test.jsp
 
<%@ page language="java" pageEncoding="GB2312"%>
<%@ page import="java.sql.*, javax.sql.*, javax.naming.*" %>
<%
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/hibernate";
String user = "root";
String password = "admin";
try {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TomcatHibernate");
conn = ds.getConnection();
if(conn != null) {
out.println("数据源jdbc/hibernate配置成功!");
}
} catch(Exception e) {
out.println("数据源jdbc/hibernate配置失败!" + e);
} finally {
if(conn != null)
conn.close();
}
%>

这个实验是在上面公布的环境下可以通过的。
这种解决方法的好处是:Context可以独立配置,不用修改Tomcat默认的server.xml context.xml等。
分享到:
评论

相关推荐

    Tomcat JDNI数据源配置详解

    在Tomcat配置数据源有多种方法,这里主要详细介绍通过JNDI来配置数据源.在实际项目中经常用到.

    用TOMCAT配置数据源连接MYSQL的方法以及Mysql使用详解.doc

    用TOMCAT配置数据源连接MYSQL的方法以及Mysql使用详解,很适合初学者配置和使用

    tomcat服务器的Server.xml配置详解.docx

    Connector 的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine。通过配置Connector,可以控制请求...

    Tomcat配置连接池

    Tomcate配置数据源详解.......

    Spring数据源及配置文件数据加密实现过程详解

    主要介绍了Spring数据源及配置文件数据加密实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    javaee专题分类

    里面涵盖集合类框架专题,mvc和struts专题,jdbc和数据源专题,bookstore需求分析,cookie和session专题,session详解,javabean专题,tomcat中数据源的配置和使用,servlet过滤器和jsp内置对象专题等专题分析,对于...

    Java Web 的好东西(打包下载)

    00_集合类框架专题01_JDBC技术和数据库连接池专题02_bookstore应用分析03_Cookie和Session专题04_Session详解05_JavaBean的使用06_Tomcat中数据源的配置和使用07_Servlet过滤器08_定义JSP标签09_MVC和Struts专题

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话...

    低清版 大型门户网站是这样炼成的.pdf

    5.10 多数据源的应用 338 5.11 jdbc的应用 343 5.12 hibernate调用存储过程 343 5.13 xml数据持久化 346 5.14 小结 348 第6章 充分利用spring 2.5的ioc利器统管bean世界 349 6.1 java程序员的春天厚礼—spring...

    Java_EE企业应用实战SSH(第三版)-part3

    1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE应用 1.4.6导入...

    Java_EE企业应用实战SSH(第3版)-part2

    1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE应用 1.4.6导入...

    Java_EE企业应用实战SSH(第3版)-part1

    1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE应用 1.4.6导入...

    J2EE应用开发详解

    内容为J2EE应用开发详解中的源代码 第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用...

    Eclipse开发入门与项目实践 源代码

    3.4.1 配置数据源 95 3.4.2 连接ODBC数据源 97 案例3-4 实现不同类型数据库之间的数据迁移 99 第4章 Eclipse中Web应用开发 103 4.1 Eclipse中Java Web开发环境的搭建 103 4.1.1 安装应用服务器Tomcat ...

    开涛高可用高并发-亿级流量核心技术

    1.1.5 数据异构 6 1.1.6 缓存银弹 7 1.1.7 并发化 9 1.2 高可用原则 10 1.2.1 降级 10 1.2.2 限流 11 1.2.3 切流量 12 1.2.4 可回滚 12 1.3 业务设计原则 12 1.3.1 防重设计 13 1.3.2 幂等设计 13 1.3.3 流程可定义 ...

    spring boot 实践学习案例,与其它组件整合

    - Spring Boot 基础知识,包括SpringBoot起步、配置详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - springboot-data - Spring Boot 数据库操作,包括SpringJDBC、...

    看透springMvc源代码分析与实践

    第6章 详解Servlet37 6.1 Servlet接口37 6.2 GenericServlet40 6.3 HttpServlet41 第7章 Tomcat分析44 7.1 Tomcat的顶层结构及启动过程44 7.1.1 Tomcat的顶层结构44 7.1.2 Bootstrap的启动过程45 7.1.3 ...

Global site tag (gtag.js) - Google Analytics