设为首页 收藏本站
查看: 509|回复: 0

[经验分享] tomcat中数据源的使用

[复制链接]

尚未签到

发表于 2017-1-29 08:48:37 | 显示全部楼层 |阅读模式
  数据源简介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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-334741-1-1.html 上篇帖子: tomcat连接池配置使用实例 下篇帖子: [原创]基于TOMCAT的安全认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表