Tomcat 数据源 -- 原理、配置、使用
2013-04-11 22:40
591 查看
转载地址:http://blog.csdn.net/tanyit/article/details/6942059
server.xml
[html] view
plaincopyprint?
<Context path="/demo" docBase="E:\webdemo" reloadable="true">
<Manager className="org.apache.catalina.session.PersistentManager">
debug=0 saveOnRestart="true"
maxActiveSession="-1" minIdleSwap="-1"
maxIdleSwap="-1" maxIdleBackup="-1"
<Store
className="org.apache.catalina.session.FileStore"
directory="d:\temp"/>
</Manager>
<Resource name="jdbc/mydata"
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:8080/mydata"/>
</Context>
Tomcat 数据源 -- 原理、配置、使用
在程序代码之中使用数据源可以提升操作性能的,这种性能提升依靠运行的操作原理
传统JDBC 使用过程中存在以下四个步骤:
1、加载驱动程序
2、进行数据库连接
3、数据库操作
4、数据库关闭
对于不同的用户只有操作不同,但是对于1、2、4三个步骤很明显是一个重复的操作
如果开发中直接使用JDBC 操作的话,那么就回产生这种性能的问题,那么这么做才是最合适的呢?
JNDI属于命名及目录查找接口,主要的功能是用于进行查找的,查找对象
但是,现在的数据库的连接池是需要在Tomcat上完成配置的。
要修改server.xml 文件才可以起作用
[html] view
plaincopyprint?
<Resource name="jdbc/mydata"
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:8080/mydata"/>
此配置中有几个参数
name: 表示数据源的名称,也是要查找的名称
auth:表示由容器负责资源的连接
type:表示对象,数据源上每一个绑定的都是DataSource
maxActive: 表示最大连接数
minIdle:表示最小维持数量
maxWait:最大等待时间
对于连接的授权有两种: Container、Application(应用程序必须程序化的登录到资源管理器)
如果现在假设是oracle 数据库的话,则直接换启动程序即可
[html] view
plaincopyprint?
<Resource name="jdbc/orcl"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="scott"
password="tiger"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"/>
但是现在使用tomcat 版本是6.0 ,所以要想让一个数据源起作用的话,还必须在web.xml 文件之中完成配置
<resource-ref>
<res-ref-name>jdbc/mydata</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
查找数据源
数据源的操作使用的是JNDI 方式进行查找的,所以如果要想使用数据源取得数据库连接的话,则必须按照如下的步骤进行
初始化名称查找上下文: Context ctx = new IntialContext();
通过名称查找DataSource 对象: DataSource ds = (DataSource)ctx.lookup(JNDI名称)
通过DataSource 取得一个数据库连接; Connection conn = ds.getConnection();
[html] view
plaincopyprint?
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<BODY>
<%
String DSNAME = "jdbc/mydata"; //名称
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(DSNAME);
Connection conn = ds.getConnection(); //从连接池中取连接
%>
<%=conn%>
<%
conn.close(); //表示将连接放回到池子中
%>
</BODY>
</HTML>
现在提示没有名称被发现
实际上对于这种资源的操作,本身是需要一个环境属性的支持的: java:comp/env, 但是Tomcat 服务器本身是免费,那么没有对这种属性提供支持,所以如果要想访问Tomcat中的名称服务的话,则肯定要在前面加上此属性,即,现在的名称是:java:comp/env/jdbc/mydata
以后程序中只认名字,而具体是哪个数据将由配置决定
当然: 如果现在使用的是DAO 开发的,DatabaseConnection.java类
[java] view
plaincopyprint?
package com.demo;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class DatabaseConnection {
private static final String DSNAME = "java:comp/env/jdbc/mydat";
private Connection conn;
public DatabaseConnection() throws Exception{
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(DSNAME);
this.conn = ds.getConnection();
}
public Connection getConnection() {
return this.conn;
}
public void close () throws Exception {
if(this.conn != null) {
try
{
this.conn.close();
}
catch (Exception e)
{
throw e;
}
}
}
}
可是有一点必须注意的是,现在得到数据库连接池是在Tomcat 上配置的,所以此程序在WEB下运行,而不能使用Application 程序运行
某一局部修改不影响其他变化
server.xml
[html] view
plaincopyprint?
<Context path="/demo" docBase="E:\webdemo" reloadable="true">
<Manager className="org.apache.catalina.session.PersistentManager">
debug=0 saveOnRestart="true"
maxActiveSession="-1" minIdleSwap="-1"
maxIdleSwap="-1" maxIdleBackup="-1"
<Store
className="org.apache.catalina.session.FileStore"
directory="d:\temp"/>
</Manager>
<Resource name="jdbc/mydata"
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:8080/mydata"/>
</Context>
Tomcat 数据源 -- 原理、配置、使用
在程序代码之中使用数据源可以提升操作性能的,这种性能提升依靠运行的操作原理
传统JDBC 使用过程中存在以下四个步骤:
1、加载驱动程序
2、进行数据库连接
3、数据库操作
4、数据库关闭
对于不同的用户只有操作不同,但是对于1、2、4三个步骤很明显是一个重复的操作
如果开发中直接使用JDBC 操作的话,那么就回产生这种性能的问题,那么这么做才是最合适的呢?
JNDI属于命名及目录查找接口,主要的功能是用于进行查找的,查找对象
但是,现在的数据库的连接池是需要在Tomcat上完成配置的。
要修改server.xml 文件才可以起作用
[html] view
plaincopyprint?
<Resource name="jdbc/mydata"
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:8080/mydata"/>
此配置中有几个参数
name: 表示数据源的名称,也是要查找的名称
auth:表示由容器负责资源的连接
type:表示对象,数据源上每一个绑定的都是DataSource
maxActive: 表示最大连接数
minIdle:表示最小维持数量
maxWait:最大等待时间
对于连接的授权有两种: Container、Application(应用程序必须程序化的登录到资源管理器)
如果现在假设是oracle 数据库的话,则直接换启动程序即可
[html] view
plaincopyprint?
<Resource name="jdbc/orcl"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="scott"
password="tiger"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"/>
但是现在使用tomcat 版本是6.0 ,所以要想让一个数据源起作用的话,还必须在web.xml 文件之中完成配置
<resource-ref>
<res-ref-name>jdbc/mydata</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
查找数据源
数据源的操作使用的是JNDI 方式进行查找的,所以如果要想使用数据源取得数据库连接的话,则必须按照如下的步骤进行
初始化名称查找上下文: Context ctx = new IntialContext();
通过名称查找DataSource 对象: DataSource ds = (DataSource)ctx.lookup(JNDI名称)
通过DataSource 取得一个数据库连接; Connection conn = ds.getConnection();
[html] view
plaincopyprint?
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<BODY>
<%
String DSNAME = "jdbc/mydata"; //名称
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(DSNAME);
Connection conn = ds.getConnection(); //从连接池中取连接
%>
<%=conn%>
<%
conn.close(); //表示将连接放回到池子中
%>
</BODY>
</HTML>
现在提示没有名称被发现
实际上对于这种资源的操作,本身是需要一个环境属性的支持的: java:comp/env, 但是Tomcat 服务器本身是免费,那么没有对这种属性提供支持,所以如果要想访问Tomcat中的名称服务的话,则肯定要在前面加上此属性,即,现在的名称是:java:comp/env/jdbc/mydata
以后程序中只认名字,而具体是哪个数据将由配置决定
当然: 如果现在使用的是DAO 开发的,DatabaseConnection.java类
[java] view
plaincopyprint?
package com.demo;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class DatabaseConnection {
private static final String DSNAME = "java:comp/env/jdbc/mydat";
private Connection conn;
public DatabaseConnection() throws Exception{
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(DSNAME);
this.conn = ds.getConnection();
}
public Connection getConnection() {
return this.conn;
}
public void close () throws Exception {
if(this.conn != null) {
try
{
this.conn.close();
}
catch (Exception e)
{
throw e;
}
}
}
}
可是有一点必须注意的是,现在得到数据库连接池是在Tomcat 上配置的,所以此程序在WEB下运行,而不能使用Application 程序运行
某一局部修改不影响其他变化
相关文章推荐
- 基于Tomcat 数据源的原理、配置、使用介绍
- Tomcat 数据源 -- 原理、配置、使用
- JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
- tomcat中通过JNDI数据源配置使用--时间沙漏
- JAVA WEB学习笔记(三)-Tomcat中数据源的配置和使用
- spring下tomcat使用weblogic配置的jndi数据源
- JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
- 在Tomcat中配置与使用数据源
- Tomcat数据源的配置和使用
- tomcat中通过JNDI数据源配置使用
- 详细介绍在tomcat中配置数据源以及数据源的原理
- 关于使用JBUILDER 2006 配置TOMCAT数据源的总结
- Tomcat下使用Druid配置JNDI数据源
- Tomcat 6 部署工程总结,使用JNDI数据源配置
- JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
- JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
- JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
- 使用tomcat配置数据源
- iBatis使用Tomcat配置的数据源
- tomcat中通过JNDI数据源配置使用