您的位置:首页 > 运维架构 > Tomcat

tomcat使用指南(三)-配置数据源

2015-02-02 15:39 260 查看

为何使用JNDI数据源

如果用java直接连接:

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
String url="jdbc:oracle:thin:@localhost:1521:orcl";    
Connection conn= DriverManager.getConnection(url,user,password);
也是可以的,但是这样没有连接池的概念,每次连接都得重新创建,使用完毕必须记得断开,非常麻烦且效率低下,只适合小应用。

单个数据源

单个数据源配置很简单,修改server.xml,在你的工程context节点中添加resource即可。

<Context path="/pipeliner" docBase="F:\code\gd-dev\billing\autoacct\javaee\pipeliner\src\main\webapp" debug="5" reloadable="true" crossContext="true">
<span style="white-space:pre">	</span><Resource name="jdbc/sdact1ds"
          auth="Container"
          type="javax.sql.DataSource"   
          factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
          driverClassName="oracle.jdbc.driver.OracleDriver"   
          url="jdbc:oracle:thin:@32.121.2.130:1521:test"   
          username="ucr_app"   
          password="ucr_app"
          maxActive="60"
          maxIdle="20"
          maxWait="10000"
          removeAbandoned="true"
          removeAbandonedTimeout="60"
          logAbandoned="true"/>
</Context>


同时,工程中必须要有所用数据库的jdbc的jar包,比如oracle的是ojdbc6.jar(java6)或jdbc14.jar(java1.4)

配置server.xml是全局的jndi,如果想非全局的,可增加配置在C:\work\apache-tomcat-7.0.57\conf\Catalina\localhost下。

有些文章说还得配置web.xml,其实是不需要的。(但是多数据源时就必须配置了)

数据源名称不一定必须叫jdbc/sdact1ds,你直接叫sdact1ds也是可以的,只是使用tomcat的数据源时大家都习惯前面加jdbc/,如果使用weblogic则一般不加;但是调用的时候必须前面加上javacomp/evn,比如(这个很重要,用习惯了weblogic为了这个折腾了一下):

java:comp/env/jdbc/sdact1ds

maxActive就是你配置的数据库连接池的最大连接数。

多个数据源

修改apache-tomcat-7.0.57\conf下的web.xml,这个文件很大,4000多行,在最后</web-app>之前增加即可。

<resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/sdact1ds</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/sdautoacct1</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
然后修改server.xml:

<Context path="/pipeliner" docBase="F:\code\bss_gd-dev\billing\autoacct\javaee\pipeliner\src\main\webapp" debug="5" reloadable="true" crossContext="true">
<span style="white-space:pre">	</span><Resource name="jdbc/sdact1ds"
          auth="Container"
          type="javax.sql.DataSource"   
          factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
          driverClassName="oracle.jdbc.driver.OracleDriver"   
          url="jdbc:oracle:thin:@32.121.2.130:1521:test"   
          username="ucr_app"   
          password="ucr_app"
          maxActive="60"
          maxIdle="20"
          maxWait="10000"
          removeAbandoned="true"
          removeAbandonedTimeout="60"
          logAbandoned="true"/>
        <Resource name="jdbc/ds_act_autoacct1"
          auth="Container"
          type="javax.sql.DataSource"   
          factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
          driverClassName="Altibase.jdbc.driver.AltibaseDriver"   
          url="jdbc:Altibase://30.51.9.46:20305/autoacctbak1"   
          username="AUTOACCTBAK"   
          password="AUTOACCTBAK"
          maxActive="60"
          maxIdle="20"
          maxWait="10000"
          removeAbandoned="true"
          removeAbandonedTimeout="60"
          logAbandoned="true"/>
</Context>


本文出处:
http://blog.csdn.net/ouyida3
2015.2.2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: