tomcat配置数据源

转载 2015年07月10日 16:09:18

在JDBC的操作中,打开和关闭数据库连接,是最耗费数据库资源的,我们可以在服务器上存放一定量的数据库连接,每当程序要连接数据库时,就将这些链接给它们,而一旦程序退出数据库操作时,要将这些链接返回给服务器。

下图是数据源的基本概念:

1:通过Connection Pool 管理数据库连接

2:通过Data Source 去管理Connection Pool

3: Data Source 被JNDI Tree 绑定

 

一:JNDI配置方式

现在来讲一下如何到服务器上对 Data Source 进行配置?

服务器: Tomcat 7

数据库:MySQL

1:将下面的代码添加到Tomcat服务器上conf/context.xml中的<Context></Context>标签中

<Resource

       name="jdbc/shopping"

       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/shopping"

/>

上下文context.xml中的参数的解析如下:

  其中的name属性是数据源名称,通常采取jdbc/**.

   driverClassName属性是驱动程序名称。

   username,password,数据库名称和密码

   url:访问的数据库路径。其中url的内容组成解析上篇博客中已经分析

   maxActive属性是并发连接的最大数。设置为0则无限制。

   maxWait属性是等待连接的最大连接的时间。

   maxIdle属性是连接池中空闲的连接的个数。

 

2. 修改web.xml
 打开%TOMCAT_HOME%\conf\web.xml,在</web-app>的前面添加以下内容:

<description>MySQLTest App</description>

  <resource-ref>

      <description>DBConnection</description>

      <res-ref-name>jdbc/shopping</res-ref-name>

      <res-type>javax.sql.DataSource</res-type>

     <res-auth>Container</res-auth>

  </resource-ref>

3:建立测试文件

test.jsp

<%@ 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/shopping">

select id, name, normalprice from product

</sql:query>

 

<html>

  <head>

    <title>DB Test</title>

  </head>

  <body>

 

  <h2>Results</h2>

 

<c:forEach var="row" items="${rs.rows}">

    name ${row.name}<br/>

    normalprice ${row.normalprice}<br/>

</c:forEach>

 

  </body>

</html>

4.添加jar 

JDBC驱动程序mysql-connector-java-5-bin.jar放置在%TOMCAT_HOME%\lib和应用的WEB-INF\lib下,复制 jstl.jar 和 standard.jar 到 你的 WEB-INF/lib 目录.


5:配置名称name="jdbc/mldn"可以任意,配置完成后,需要通过名称查找的方式,去找到数据源,本示例代码运用的Tomcat服务器,所以在查找时需要对名称进行定位:java:comp/env

<%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="javax.naming.*"%>

<%!

    final String JNDINAME = "java:comp/env/jdbc/shopping" ;

%>

<%

    Connection conn = null ;

    try

    {

        // 初始化查找命名空间

        Context ctx = new InitialContext() ;

        // 找到DataSource

        DataSource ds =(DataSource)ctx.lookup(JNDINAME) ;

        conn = ds.getConnection() ;

    }

    catch(Exception e)

    {

        System.out.println(e) ;

    }

%>

<%=conn%>

<%

    // 将连接重新放回到池中

    conn.close() ;

%>

如果要配置局部数据源(使用SQLServer2008)

DataSource设置到我们的WEB项目中,下面详细的介绍下:

第一步:在我们的WEB项目中的META-INF文件夹下建立一个context.xml

Xml代码

<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/sql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://127.0.0.1:1433;databaseName=testsql"
username="sa"
password="550122091"
maxActive="50"
maxIdle="20"
maxWait="10" />
</Context>

 

第二步:在我们的WEB项目下的WEB-INF文件夹下建立一个web.xml(如果存在了就不用了,直接修改就行了)

(这几天测试了一下,不做这步也可以,O(∩_∩)O哈哈~省事了)

Xml代码

<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>

第三步:我们就可以用代码来获取Connection对象了

Java代码

package xushun.util;

 

import java.sql.*;

import javax.sql.*;

import javax.naming.*;

 

public class DBHelper {

 

public static Connection getConnection() throwsSQLException,NamingException

{

           Connection conn = null ;
           try
           {
               // 初始化查找命名空间
               Context ctx= new InitialContext() ;
               // 找到DataSource
               DataSourceds = (DataSource)ctx.lookup("java:comp/env/jdbc/sql") ;
               conn =ds.getConnection() ;
           }
           catch(Exception e)
           {
              e.printStackTrace();
           } 
          return conn;

}

}

 转自:http://www.cnblogs.com/ITtangtang/archive/2012/05/21/2511749.html

http://blog.163.com/magicc_love/blog/static/185853662201111101130969/


Tomcat8.0配置JNDI数据源完整例子

jndi配置 :此种配置需要在Tomcat的server.xml中和context.xml中配置数据源,在项目中引用。  前言:需要在tomcat下加入数据库连接的jar包,相关包的下载地址见下...
  • qq_35624642
  • qq_35624642
  • 2017年03月11日 22:02
  • 2546

Tomcat中配置数据源和连接池

(1)为什么需要配置数据源和连接池? 我们知道在每次java程序俩接数据库的时候我们都需要请求连接数据库然后打开读取数据然后关闭, 这样使得每一个用户访问的时候都需要服务器做出相应,这样的话服务器...
  • u010870518
  • u010870518
  • 2014年09月01日 17:28
  • 2650

Tomcat配置数据源(JNDI方式)

一、直连接数据库 1 Java 连接 Oralce Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String u...
  • CYXLZZS
  • CYXLZZS
  • 2012年03月14日 14:29
  • 28083

TOMCAT配置数据源

现在需要将访问数据库的JDBC接口发布到Axis2搭建的Tomcat7.0服务器上。 遇到的问题是,JDBC接口在本地测试正常,但是发布到服务器后,建立Client工程使用PRC方式调用则报错。 ...
  • ozwarld
  • ozwarld
  • 2012年07月13日 11:40
  • 7119

tomcat配置多个数据源

应用场景:                公司tomcat服务器中运行着多个工程,工程链接的mysql数据库不同,所以每个工程的Spring总配置文件中都配置了数据源。 需求:   将数据源统一拿到t...
  • the_fool_
  • the_fool_
  • 2017年10月09日 17:47
  • 302

tomcat配置数据源

最近想搞清楚什么是“连接池”,在网上查了相关资料,貌似要跟“服务器”中配置,     1、首先在WebRoot/META-INF目录下面建立一个context.xml配置文件,内容如下 ...
  • hbiao68
  • hbiao68
  • 2013年12月04日 10:01
  • 247

Tomcat配置数据源

 Jsp中使用数据库连接池. 1. 在tomcat服务器目录下面的conf中找到一个叫Context.xml的配置文件,在其中加入以下代码   Resource name="j...
  • starlight_520
  • starlight_520
  • 2014年05月20日 14:54
  • 320

Eclipse +Tomcat配置JNDI数据源

以下是具体配置的步骤: 1.首先配置Tomcat下的jndi数据源。具体存放目录apache-tomcat-7.0.59\conf\Catalina\localhost 下 osh.xml ...
  • zhixinhuacom
  • zhixinhuacom
  • 2015年06月14日 23:30
  • 2243

在Tomcat配置JNDI数据源的三种方式

在我过去工作的过程中,开发用服务器一般都是Tomcat 数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean 然后在部署时再修改JND...
  • z69183787
  • z69183787
  • 2014年04月02日 11:27
  • 2463

Tomcat中配置mysql数据源

   一晚上就光弄这个了,好多错误,都快麻木了。为什么今天老师操作的时候那么正确呢?一到自己来操作就错误不断。也怪自己下午的时候自认为可以自己搞清楚而没有认真听老师讲课。因为以前学过JPA,所以觉得配...
  • lxy15329
  • lxy15329
  • 2011年06月21日 23:31
  • 9683
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tomcat配置数据源
举报原因:
原因补充:

(最多只允许输入30个字)