SqlServer数据库tomcat连接池连接~

一、安装JDBC Driver
 数据库的驱动jar文件放至{Tomcat_install}\common\lib目录下

二、配置Connection Pool
    1.配置全局的连接池,Tomcat里的任何Web应用都能使用该配置的连接池。
      在Tomcat的server.xml文件中的GlobalNamingResources结点下面添加,连接池设置
      <Resource
       name="jdbc/MSSQLDS"
       auth="Container"
       type="javax.sql.DataSource"  
       maxActive="100"
       maxIdle="30"
       maxWait="10000"
       username="sa"
       password="sa"
       driverClassName="net.sourceforge.jtds.jdbc.Driver"
       url="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs" />

 

       jtds驱动:

       <Resource
       name="jdbc/MSSQLDS"
       auth="Container"
       type="javax.sql.DataSource"  
       maxActive="100"
       maxIdle="30"
       maxWait="10000"
       username="sa"
       password="sa"
       driverClassName="net.sourceforge.jtds.jdbc.Driver"
       url="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs" />


       注意:name为连接池的全局JNDI全称
   
       下面两个xml配置文件,不进行设置仍然可以连接数据源!    
       在$TOMCAT_HOME$/conf目录下:
       context.xml里面设置全局访问的名称:
       <ResourceLink
        global="jdbc/MSSQLDS"
        name="jdbc/MSSQLDS"
        type="javax.sql.DataSource"/>
       web.xml里面设置全局参考数据源:
         <resource-ref>
           <description>DB Connection</description>
           <res-ref-name>jdbc/MSSQLDS</res-ref-name>
           <res-type>javax.sql.DataSource</res-type>
           <res-auth>Container</res-auth>
         </resource-ref>

     2.配置局部的连接池(推荐)
       在$TOMCAT_HOME$/conf/Catalina/localhost/目录下新建一个xml文件,该xml文件要与你发布的Web应用目录名称相同,假如为webappname.xml,加入以下内容(配置Tomcat的外部虚拟目录也是在这里搞定的,哈!)
       <?xml version='1.0' encoding='utf-8'?>

       <Context path="/webappname" docBase="webappname" debug="0" 
                reloadable="true" crossContext="true">
         <Resource
            name="jdbc/MSSQLDS"
            auth="Container"
            type="javax.sql.DataSource"           
            maxActive="100"
            maxIdle="30"
            maxWait="10000"
            username="sa"
            password="sa"
            driverClassName="net.sourceforge.jtds.jdbc.Driver"
            url="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs"/>
         <ResourceLink global="jdbc/MSSQLDS" name="jdbc/MSSQLDS"              
                type="javax.sql.DataSource"/>
       </Context>
      配置Tomcat\webapps\webappname\WEB-INF\web.xml,设置参考数据源
        <resource-ref>
          <description>my DB Connection</description>
          <res-ref-name>jdbc/MSSQLDS</res-ref-name> the same as server.xml
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
        </resource-ref>
      配置\Tomcat\webapps\webappname\META-INF\context.xml,设置数据源连接 如下:
        <?xml version='1.0' encoding='utf-8'?>
        <Context path="/webappname" docBase="webappname" debug="5"   
              reloadable="true" crossContext="true">
          <ResourceLink name="jdbc/MSSQLDS" global="jdbc/MSSQLDS"
              type="javax.sql.DataSource"/>
        </Context> 

      

     使用代码:
      Context ctx= (Context) new InitialContext().lookup("java:comp/env"); 
     DataSource ds = (DataSource)ctx.lookup("jdbc/MSSQLDS");
     Connection conn = ds.getConnection(); 


     conn.close();

     别忘了对Connection对象调用close()方法,注意:这里不会关闭这个
     Connection,而是将这个Connection放回数据库连接池。

------------------------------------------------------------------------------------
还可以用注入方式来调用连接池,即在Hibernate的配置文件hibernate.cfg.xml中调用,在JSP容器中配置好连接池以后,再在Hibernate的配置文件中调用系统的连接池设置,关键代码摘录如下:

<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/MSSQLDS</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
</session-factory>

 

 

PS:今天测试了下突然无法访问了,一直提示:
ERROR - Could not obtain initial context
javax.naming.NoInitialContextException: Cannot instantiate class:
在网上查了半天,换了好几种类都不行。

原来是MyEclipse在hibernate.cfg.xml中生成了:
<property name="connection.username">sa</property>

<property name="connection.password">sa</property>
<property name="jndi.url">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs</property>
<property name="jndi.class">net.sourceforge.jtds.jdbc.Driver</property>

这几个属性。去掉后一切正常,浪费了大半天的时间~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值