Tomcat配置数据源--方案三

测试的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>
注意: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;
	}
}





OraclelConn类:获取Oracle数据源
package 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>


5、启动tomcat,在浏览器中输入:< http://localhost:8083/ljqtest/>,输出如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值