tomcat配置数据源

来源:互联网 发布:linux expect spwan 编辑:程序博客网 时间:2024/06/08 06:26

在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:queryvar="rs" dataSource="jdbc/shopping">

select id, name, normalpricefrom product

</sql:query>

 

<html>

  <head>

    <title>DB Test</title>

  </head>

  <body>

 

  <h2>Results</h2>

 

<c:forEachvar="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/


0 0