tomcat中数据源的使用

数据源简介JDBC2.0提供了javax.sql.DataSource的接口,负责与数据库建立连接,实际应用时不需要编写连接数据库代码,可以直接从数据源获得数据库的连接,使得应用于数据库的耦合降低。

Dataource中事先建立了多个数据库连接,这些数据库连接保持在数据库连接池中,当程序访问数据库时,只需要从连接池从取出空闲的连接,访问数据库结束,在将这些连接归还给连接池。DataSource对象由容器(Tomcat)提供,不能使用创建实例的方法来生成DataSource对象,要采用JAVA的JNDI(Java Nameing and Directory Interface,java命名和目录接口)来获得DataSource对象的引用。(另有一种说法:“其实从技术上来说,数据源连接方式是不需要目录服务的,我们同样可以通过序列化数据源对象直接访问文件系统。这点是需要明确的。”感兴趣的朋友可以试试。)JNDI是一种将对象和名字绑定的技术,对象工厂负责生产出对象,这些对象都和唯一的名字相绑定。程序中可以通过这个名字来获得对象的引用。Tomcat把DataSource作为一种可配置的JNDI资源来处理,生成DataSource对象的工厂为org.apache.comm.ons.dbcp.BasicDataSourceFactory

 

在一个web应用中可以使用多种数据库连接池,可以使用hibernate的连接池,可以使用Struts自带的连接池,也可以使用下面的配置连接池的方式,大家可以试试各种连接池的效率情况!

 

顺便说一句,tomcat中如何使用连接池,tomcat的相关文档中就有介绍,要学着看权威的文档,因为它权威而且准确!!

 

拿tomcat5为例,步骤如下:

 

1.打开%Tomcat_Home%\conf下server.xml,在<Host></Host>中加入<Context></Context>,配置你的应用,如下:

<Context path="/demo" docBase="E:/workspace/demo/WebRoot" debug="0" reloadable="true">  
               
                      <Resource
                              name="jdbc/myDB"
                              auth="Container"
                              type="javax.sql.DataSource"
                              password="lportal"
                              driverClassName="oracle.jdbc.driver.OracleDriver"
                              maxIdle="2"
                              maxWait="5000"
                              username="lportal"
                              url="jdbc:oracle:thin:@192.168.13.123:1521:lportal"
                              maxActive="50"
                          />
 </Context>

 

2.在应用的web.xml中做如下配置(没有试验,好像不配置也可以)
<wepapp>
<resource-ref>                             
<descryiption>DB Connection</descryiption>   
<res-ref-name> jdbc/myDB</res-ref-name>
<res-type>javax.sql.DataSource </res-type>  
<res-auth>Container </res-auth>              
</resource-ref>                            
</wepapp>
其中的res-ref-name的值,与server.xml文件中配置的Resource中的name一致

 

3. 通过JNDI查找来得到datasource,得到connection
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/myDB");
Connection con = ds.getConnection();

 

4.jar包的支持,一定要把连接数据库的jar包放在%Tomcat _Home%\common\lib下,不能只放在应用的lib下,连接池是tomcat容器管理,所以tomcat进行数据库连接时只能去寻找自己的lib下的jar包们,找不到就会出错了!!~

 

需要注意的是:这里是拿tomcat5为例,如果在tomcat4中配置数据库连接池是另外的语法,配置的内容相同,拷贝上面的配置文件到tomcat4下是不可用的。

 

也可以配置全局的连接池,可为tomcat下所有的应用使用

 

拿tomcat5为例:

在%Tomcat_Home%\conf下server.xml中配置全局数据库连接池,配置如下:

 

<GlobalNamingResources>
<Resource
                              name="jdbc/myDB"
                              auth="Container"
                              type="javax.sql.DataSource"
                              password="xsfw1209"
                              driverClassName="oracle.jdbc.driver.OracleDriver"
                              maxIdle="2"
                              maxWait="5000"
                              username="xsfw1209"
                              url="jdbc:oracle:thin:@192.168.13.143:1521:ora9i"
                              maxActive="50"
    />
</GlobalNamingResources>

 

而在应用中,引用该连接池,配置如下:

 

<Context path="/bb" docBase="E:/workspace/bb/WebRoot" debug="0" reloadable="true">  
               
             <ResourceLink name="myDB"
                  global="jdbc/myDB"
              type="javax.sql.DataSource"/>
               
</Context>

 

继续2、3、4步骤,就能够在应用中使用全局数据库连接池了!

可以参考百度文库中的文章http://wenku.baidu.com/view/f0553cd3195f312b3169a54a.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值