基于Tomcat5.0的Oracle10g数据库连接池



       今天下午花了三个小时的时间研究了一下基于Tomcat5.0的Oracle10g的数据库连接池,本来以为很简单,因为以前做过基于Tomcat6.0配置的SQLServer2005数据库连接池,以为两者相差不多,可以三下五除二的搞定,谁知居然花了那么长的时间才搞定,特此记录一下,以免遗忘。

 

      (1)首先,要配置DataSource,在Tomcat5.0\conf\目录下的 server.xml 文件中配置DataSource的相关信息,因为手写代码比较麻烦,从网上找到了一个快速配置DataSource的方法,就是使用Tomcat5.0的图形界面来配置相关的参数;启动Tomcat5.0,在地址栏中输入:http://localhost:端口号/admin,进入Tomcat5.0的图形管理界面,(Tomcat Web Server Administration Tool )输入Tomcat的登录帐户,进入管理界面;

 

     
基于Tomcat5.0的Oracle10g数据库连接池_第1张图片
 

 

      选择左侧的Resources节点下的 Data Sources 选项(标识1处),进入DataSource配置界面,系统会自动从server.xml 中读取已有的DataSource配置,并以列表的形式展示给用户(标识2处),你可以点击名称查看或修改详细信息,如果没有已有配置也没有关系,Tomcat5.0提供了快速配置DataSource的方法,在右上角的Data Source Actions 处,选择下拉列表框中的 Create new DataSource ,即可进入创建DataSource界面,如图2所示。

 


基于Tomcat5.0的Oracle10g数据库连接池_第2张图片
 

 

      填入如JNDI名称、数据库连接字符串、驱动器字符串、数据库帐户、密码、最大连接数、最长等待时间等相关参数后点击右上角的Sava按钮,并点击右上角的 Commit Changes 按钮就完成了DataSource的配置。

 

再次查看 server.xml ,发现已经增加了如下DataSource配置信息:

 

<Resource name="jdbc/oracle" type="javax.sql.DataSource" auth="Container" />
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>
    <ResourceParams name="jdbc/oracle">
      <parameter>
        <name>maxWait</name>
        <value>5000</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>4</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>password</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@localhost:1521:firstdb</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>2</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>mocha</value>
      </parameter>
    </ResourceParams>

 

 

     (2)接下来进入最重要的一步,也是很多人(包括我)忽略掉的地方,引起配置的失败,无法获得数据库连接。所以各位睁大眼睛看看是怎么做的。嘻嘻……

 

      进入Tomcat5.0安装目录, 如Tomcat 5.0\conf\Catalina\localhost ,在此目录中建立一个XML文件,文件名和项目名称同名,如 MochaOnline.xml , 在文件中新增Context节点并加入和 server.xml 文件中刚刚配置的DataSource代码即可,如下所示:

 

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\MochaOnline"
	path="/MochaOnline" workDir="work\Catalina\localhost\MochaOnline">
	<Resource name="jdbc/oracle" type="javax.sql.DataSource"
		auth="Container" />
	<ResourceParams name="UserDatabase">
		<parameter>
			<name>factory</name>
			<value>
				org.apache.catalina.users.MemoryUserDatabaseFactory
			</value>
		</parameter>
		<parameter>
			<name>pathname</name>
			<value>conf/tomcat-users.xml</value>
		</parameter>
	</ResourceParams>
	<ResourceParams name="jdbc/oracle">
		<parameter>
			<name>maxWait</name>
			<value>5000</value>
		</parameter>
		<parameter>
			<name>maxActive</name>
			<value>4</value>
		</parameter>
		<parameter>
			<name>password</name>
			<value>password</value>
		</parameter>
		<parameter>
			<name>url</name>
			<value>jdbc:oracle:thin:@localhost:1521:firstdb</value>
		</parameter>
		<parameter>
			<name>driverClassName</name>
			<value>oracle.jdbc.driver.OracleDriver</value>
		</parameter>
		<parameter>
			<name>maxIdle</name>
			<value>2</value>
		</parameter>
		<parameter>
			<name>username</name>
			<value>mocha</value>
		</parameter>
	</ResourceParams>
</Context>

 

 

      (3)完成上面两步后,就可以配置Web项目中的 web.xml 文件了,在其中配置资源引用,以便在项目启动时,将资源加载进来。

 

<resource-ref>
          <res-ref-name>jdbc/oracle</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
</resource-ref>

 

 

       (4)最后代码编写,获得连接池中的连接。

 

try {
	Context ctx = new InitialContext();
	DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/oracle");
	ds.getConnection();
} catch (Exception e) {
	e.printStackTrace();
}

 

               到此为止,基于Tomcat5.0的Oracle10g连接池已经配置完成了,另外在测试连接时,一定要在Web项目中调用连接,不要以Java程序的形式来运行,因为连接池是由Tomcat来提供的,不从容器中找,是不会有结果的。

              

               (完)xusweeter @ 2010年07月29日 晚22:08

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(oracle,sql,tomcat,jdbc,server,配置管理)