测试的tomcat为apache-tomcat-6.0.18 ,数据库为mysql和oracle。
配置步骤如下:
1、把数据库的JDBC驱动放入D:\apache-tomcat-6.0.18\lib目录下
2、在D:\apache-tomcat-6.0.18\conf\web.xml文件中,将下面代码加入到web.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
>
<
resource
-
ref
>
<
description
>
DB Connection
</
description
>
<
res
-
ref
-
name
>
jdbc
/
oracle
</
res
-
ref
-
name
>
<
res
-
type
>
javax.sql.DataSource
</
res
-
type
>
<
res
-
auth
>
Container
</
res
-
auth
>
</
resource
-
ref
>
3、在D:\apache-tomcat-6.0.18\conf\server.xml文件中,在Host节点下添加Context子节点,配置如下
<
Context path
=
"
/ljqtest
"
docBase
=
"
ljqtest
"
debug
=
"
5
"
reloadable
=
"
true
"
crossContext
=
"
true
"
>
< Resource name = " jdbc/mysql "
type = " javax.sql.DataSource "
username = " root "
password = " mysql "
driverClassName = " org.gjt.mm.mysql.Driver "
url = " jdbc:mysql://localhost:3306/shop "
maxIdle = " 2 "
maxWait = " 50 "
maxActive = " 4 " >
< parameter >
< name > removeAbandoned </ name >
< value > true </ value >
</ parameter >
</ Resource >
< Resource name = " jdbc/oracle "
type = " javax.sql.DataSource "
username = " test "
password = " test "
driverClassName = " oracle.jdbc.driver.OracleDriver "
url = " jdbc:oracle:thin:@localhost:1521:ORCL "
maxIdle = " 2 "
maxWait = " 50 "
maxActive = " 4 " >
< parameter >
< name > removeAbandoned </ name >
< value > true </ value >
</ parameter >
</ Resource >
</ Context >
</ Host >
< Resource name = " jdbc/mysql "
type = " javax.sql.DataSource "
username = " root "
password = " mysql "
driverClassName = " org.gjt.mm.mysql.Driver "
url = " jdbc:mysql://localhost:3306/shop "
maxIdle = " 2 "
maxWait = " 50 "
maxActive = " 4 " >
< parameter >
< name > removeAbandoned </ name >
< value > true </ value >
</ parameter >
</ Resource >
< Resource name = " jdbc/oracle "
type = " javax.sql.DataSource "
username = " test "
password = " test "
driverClassName = " oracle.jdbc.driver.OracleDriver "
url = " jdbc:oracle:thin:@localhost:1521:ORCL "
maxIdle = " 2 "
maxWait = " 50 "
maxActive = " 4 " >
< parameter >
< name > removeAbandoned </ name >
< value > true </ value >
</ parameter >
</ Resource >
</ Context >
</ Host >
或者
<
Context path
=
"
/uimcardprj
"
docBase
=
"
uimcardprj
"
debug
=
"
5
"
reloadable
=
"
true
"
crossContext
=
"
true
"
>
<
Resource name
=
"
jdbc/ycxkDB
"
type
=
"
javax.sql.DataSource
"
username
=
"
ycxk
"
password
=
"
xmzh
"
driverClassName
=
"
oracle.jdbc.driver.OracleDriver
"
url
=
"
jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 134.128.48.250)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
"
maxIdle
=
"
2
"
maxWait
=
"
50
"
maxActive
=
"
4
"
>
</
Resource
>
</
Context
>
</
Host
>
注意:path为D:\apache-tomcat-6.0.18\webapps目录下的工程名称 4、把web工程项目部署在D:\apache-tomcat-6.0.18\webapps目录下
MysqlConn类:获取Mysql数据源
package
com.ljq.test;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public final class MysqlConn {
// 懒汉式单例(使用时才new)
private static MysqlConn instance = null ;
MysqlConn() {
}
// 延迟初始化(用到的时候才加载)(推荐)
// public static synchronized JdbcConn
// getInstance(){}->这样不好,因为每调用一次就同步,效率非常低
public static MysqlConn getInstance() {
if (instance == null ) {
synchronized (MysqlConn. class ) { // 可能会产生并发的问题,我们对他进行同步
if (instance == null ) {
instance = new MysqlConn();
}
}
}
return instance;
}
private DataSource getDataSource() {
DataSource ds = null ;
try {
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup( " java:comp/env/jdbc/mysql " );
} catch (Exception e) {
System.out.println( " 数据源获取失败 " );
e.printStackTrace();
}
return ds;
}
public Connection getConn() {
Connection conn = null ;
try {
conn = getDataSource().getConnection();
} catch (SQLException e) {
System.out.println( " 数据库连接失败 " );
e.printStackTrace();
}
return conn;
}
}
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public final class MysqlConn {
// 懒汉式单例(使用时才new)
private static MysqlConn instance = null ;
MysqlConn() {
}
// 延迟初始化(用到的时候才加载)(推荐)
// public static synchronized JdbcConn
// getInstance(){}->这样不好,因为每调用一次就同步,效率非常低
public static MysqlConn getInstance() {
if (instance == null ) {
synchronized (MysqlConn. class ) { // 可能会产生并发的问题,我们对他进行同步
if (instance == null ) {
instance = new MysqlConn();
}
}
}
return instance;
}
private DataSource getDataSource() {
DataSource ds = null ;
try {
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup( " java:comp/env/jdbc/mysql " );
} catch (Exception e) {
System.out.println( " 数据源获取失败 " );
e.printStackTrace();
}
return ds;
}
public Connection getConn() {
Connection conn = null ;
try {
conn = getDataSource().getConnection();
} catch (SQLException e) {
System.out.println( " 数据库连接失败 " );
e.printStackTrace();
}
return conn;
}
}
OraclelConn类:获取Oracle数据源
package
com.ljq.test;
import
java.sql.Connection;
import
java.sql.SQLException;
import
javax.naming.Context;
import
javax.naming.InitialContext;
import
javax.sql.DataSource;
public
final
class
OracleConn {
//
懒汉式单例(使用时才new)
private
static
OracleConn instance
=
null
; OracleConn() { }
//
延迟初始化(用到的时候才加载)(推荐)
//
public static synchronized JdbcConn
//
getInstance(){}->这样不好,因为每调用一次就同步,效率非常低
public
static
OracleConn getInstance() {
if
(instance
==
null
) {
synchronized
(OracleConn.
class
) {
//
可能会产生并发的问题,我们对他进行同步
if
(instance
==
null
) { instance
=
new
OracleConn(); } } }
return
instance; }
private
DataSource getDataSource() { DataSource ds
=
null
;
try
{ Context ctx
=
new
InitialContext(); ds
=
(DataSource) ctx.lookup(
"
java:comp/env/jdbc/mysql
"
); }
catch
(Exception e) { System.out.println(
"
数据源获取失败
"
); e.printStackTrace(); }
return
ds; }
public
Connection getConn() { Connection conn
=
null
;
try
{ conn
=
getDataSource().getConnection(); }
catch
(SQLException e) { System.out.println(
"
数据库连接失败
"
); e.printStackTrace(); }
return
conn; } }
页面index.jsp:打印数据库连接对象
<
body
>
mysql连接对象为: <% Connection conn = MysqlConn.getInstance().getConn(); %><%= conn %><% conn.close(); %>< br />
oracle连接对象为: <% Connection conn2 = MysqlConn.getInstance().getConn(); %><%= conn2 %><% conn2.close(); %>< br />
</ body >
mysql连接对象为: <% Connection conn = MysqlConn.getInstance().getConn(); %><%= conn %><% conn.close(); %>< br />
oracle连接对象为: <% Connection conn2 = MysqlConn.getInstance().getConn(); %><%= conn2 %><% conn2.close(); %>< br />
</ body >
5、启动tomcat