[置顶] 在tomcat 6.0.中配置数据源连接Oracle数据库的方法

时间:2021-08-13 08:31:45

下面来说下,在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。

[置顶]        在tomcat 6.0.中配置数据源连接Oracle数据库的方法
//本屌修改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>