下面来说下,在tomcat 6.0.中配置数据源连接Oracle数据库的方法.连接其他数据库也是一样.只是改下driverClassName 和Url就行了.只是需要不同的驱动程序的jar包,拷贝到apache-tomcat-6.0.29\lib中。
1.下载Tomcat-6.0.29 解压到本地磁盘.
拷贝数据库驱动包.到apache-tomcat-6.0.29\lib目录下:
我这里以oracle10G为例.需要拷贝:ojdbc14.jar.
2.打开apache-tomcat-6.0.29\conf目录中的content.xml文件.
在此文件中配置Resource
Xml代码
<?xml version='1.0' encoding='utf-8'?>
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!--数据源-->
<Resource
name="jdbc/DBSource" <!--数据源名称,格式通常为jdbc/xxx名称-->
type="javax.sql.DataSource" <!--数据源类型-->
username="scott" <!--连接数据库用户名-->
password="tiger" <!--连接数据库密码-->
maxIdle="2" <!--最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。-->
maxWait="5000" <!--最大的等待时间,单位毫秒。如果超过此时间将接到异常。设为-1表示无限制-->
url="jdbc:oracle:thin:@localhost:1521:orcl"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxactive="10" <!--连接池的最大数据库连接数。设为0表示无限制-->
/>
</Context>
3.在Web项目中的web.xml里面需要引用数据源:
<!-- 引用数据源; -->
<resource-ref>
<description>Oracle dataSource</description>
<res-ref-name>jdbc/DBSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
4.在java代码中,写一个方法调用一下.
比如:在一个DataSourceDemo
package pack.java.datasource.demo;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class DataSourceDemo {
public Connection getConnection(String dsName){
Connection connection = null;
try {
//初始化,获取上下文对象;
InitialContext context = new InitialContext();
//根据datasourceName获取dataSource;
//本屌在转载的时候修改了以下内容start
这里特别注意:在tomcat下必须加上"java:comp/env/",不然会报Name jdbc is not bound in this Context,如果在OC4J下不用加前缀,加上会报错,本人亲测,而在weblogic下面这个前缀加不加都可以。
如果你用的是Spring,在tomcat下跑的话,那么Spring的配置如下,也就是说前缀必须加,不然会报Name jdbc is not bound in this Context。
//本屌修改end
javax.sql.DataSource dataSource = (javax.sql.DataSource) context.lookup("java:comp/env/"+dsName);
try {
//从数据源中获取连接;
connection = dataSource.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
}
}
5.在jsp页面中,测试一下,是否调用成功。
也可以把方法直接写在<%%>脚本中.这里为了,测试方便,就直接在java代码中,写入方法,只需要传入dataSourceName即可。
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@page import="javax.sql.DataSource"%>
<%@page import="pack.java.datasource.demo.DataSourceDemo"%>
<%@page import="java.sql.Connection"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
DataSourceDemo dataSourceDemo = new DataSourceDemo();
Connection connection = dataSourceDemo.getConnection("jdbc/DBSource");
//打印connection对象;
out.println(connection);
%>
</body>
</html>