tomcat的连接池 是Tyrex提供的
可以参考tomcat文档
或者去www.apache.org看看

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/1845/1845740.xml?temp=.3095056
    看看这个帖子
      

  2.   

    http://expert.csdn.net/Expert/topic/1845/1845740.xml?temp=.3095056
      

  3.   

    4.1以后的正式的连接池由dbcp提供
    当然也可以使用tyrex 的连接池
    实际上只要实现了数据源工厂类的都可以。我是按照标准的tomcat 文档的说明配置的,其他的资料都大同小异,差不多。但是出现问题自己还是搞不明白,用tomcat也有一段时间了,其文档大值都看过,还是自己整吧,这种问题问也没有收获,要是真正能面对面交流看一看可能就会明白一点。
      

  4.   

    这个问题把我折腾了3天,最后才弄明白。
    除了你定义的全局资源外,你还需要在server.xml中定义虚拟主机的资源:
    <Host>
    ...
    ...
    <Content..></Content>
    </Host>
    这是我的在Host中配置的例子:
            <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Hello, World Application" docBase="d:\Tomcat4.1\webapps\testweb" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/testweb" privileged="false" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper">
               <ResourceLink global="jdbc/oracle" name="jdbc/oracle" type="javax.sql.DataSource"/>
            </Context>其中global="jdbc/oracle"就是你已经定义的连接池,name="jdbc/oracle"为你可以使用的连接池。
      

  5.   

    http://www.zdnet.com.cn/developer/code/story/0,2000081534,39134180,00.htm,里面讲得很清楚,希望对你能有帮助
      

  6.   

    给hlgcsdn
     你配置的是全局的JNDI资源,所以需要在自己的
    context 中加入resourcelink,使其指向你配置的全局资源,这种办法我也试过了
    但是还是出同样的问题。
    我的配置是如下,帮忙看一看。
    <!-- Example Server Configuration File -->
    <!-- Note that component elements are nested corresponding to their
         parent-child relationships with each other --><!-- A "Server" is a singleton element that represents the entire JVM,
         which may contain one or more "Service" instances.  The Server
         listens for a shutdown command on the indicated port.     Note:  A "Server" is not itself a "Container", so you may not
         define subcomponents such as "Valves" or "Loggers" at this level.
     --><Server port="8005" shutdown="SHUTDOWN" debug="0">  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
                debug="0"/>
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
                debug="0"/>  <!-- Global JNDI resources -->
      <GlobalNamingResources>    <!-- Test entry for demonstration purposes -->
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>    <!-- Editable user database that can also be used by
             UserDatabaseRealm to authenticate users -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
           description="User database that can be updated and saved">
        </Resource>
        <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>  </GlobalNamingResources>
      <!-- Define the Tomcat Stand-Alone Service -->
      <Service name="Tomcat-Standalone">
        <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
        <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
                   port="80" minProcessors="5" maxProcessors="75"
                   enableLookups="true" redirectPort="8443"
                   acceptCount="100" debug="0" connectionTimeout="20000"
                   useURIValidationHack="false" disableUploadTimeout="true" />    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
                   port="8009" minProcessors="5" maxProcessors="75"
                   enableLookups="true" redirectPort="8443"
                   acceptCount="10" debug="0" connectionTimeout="0"
                   useURIValidationHack="false"
                   protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
         
        <!-- Define the top level container in our container hierarchy -->
        <Engine name="Standalone" defaultHost="localhost" debug="0">
          <!-- Global logger unless overridden at lower levels -->
          <Logger className="org.apache.catalina.logger.FileLogger"
                  prefix="catalina_log." suffix=".txt"
                  timestamp="true"/>
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                     debug="0" resourceName="UserDatabase"/>      <!-- Comment out the old realm but leave here for now in case we
               need to go back quickly -->
          
          <Realm className="org.apache.catalina.realm.MemoryRealm" />
                <!-- Define the default virtual host -->
          <Host name="localhost" debug="0" appBase="webapps" 
           unpackWARs="true" autoDeploy="true">
           
            <Logger className="org.apache.catalina.logger.FileLogger"
                     directory="logs"  prefix="localhost_log." suffix=".txt"
            timestamp="true"/>        <!-- Tomcat Root Context -->
            <!--
              <Context path="/ROOT" docBase="ROOT" debug="0"/>
            -->  
    <Context path="" docBase="d:\yqk" 
             reloadable="true" debug="0" privileged="true" />
     <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="localhost_yqk_log." suffix=".txt"
     timestamp="true"/>
    <Resource name="jdbc/OracleDB" auth="Container"
                  type="javax.sql.DataSource"/> 

    <ResourceParams name="jdbc/OracleDB">
      <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@128.0.93.126:1521:war</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>yqk</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>yqgl</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>10</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>4</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value>10000</value>
      </parameter>
    <parameter>
    <name>removeAbandoned</name>
    <value>true</value>
    </parameter>
    <parameter>
    <name>removeAbandonedTimeout</name>
    <value>60</value>
                 </parameter>
                 <parameter>
                  <name>logAbandoned</name>
                  <value>true</value>
                </parameter>
    </ResourceParams>  
            <!-- Tomcat Examples Context -->
            <Context path="/examples" docBase="examples" debug="0"
                     reloadable="true" crossContext="true"
     >           <Logger className="org.apache.catalina.logger.FileLogger"
                         prefix="localhost_examples_log." suffix=".txt"
               timestamp="true"/>
      
      
              <Ejb   name="ejb/EmplRecord" type="Entity"
                     home="com.wombat.empl.EmployeeRecordHome"
                   remote="com.wombat.empl.EmployeeRecord"/>   
      
              <Environment name="maxExemptions" type="java.lang.Integer"
                          value="15"/>
              <Parameter name="context.param.name" value="context.param.value"
                         override="false"/>
     
     
              <Resource name="mail/Session" auth="Container"
                        type="javax.mail.Session"/>
              <ResourceParams name="mail/Session">
                <parameter>
                  <name>mail.smtp.host</name>
                  <value>localhost</value>
                </parameter>
              </ResourceParams>
              <ResourceLink name="linkToGlobalResource" 
                        global="simpleValue"
                        type="java.lang.Integer"/>        </Context>

          </Host>    </Engine>  </Service>
    </Server>
      

  7.   

    真是烦躁啊。谁能解决,加分并表示衷心的感谢。我自己也写了一个简单的连接池,但我不想用,还是希望用tomcat本身的。
      

  8.   

    我也是同样的问题,还没有搞定。
    头大了,甚至开始怀疑是否tomcat版本的问题。
    先帮你顶一下。
      

  9.   

    按照我的办法没有问题呀!
    1、首先配置全局资源(server.xml)
    ...
      <GlobalNamingResources>
    ...
        <Resource name="jdbc/oracle" scope="Shareable" type="javax.sql.DataSource"/>
        <ResourceParams name="jdbc/oracle">
          <parameter>
            <name>validationQuery</name>
            <value>select sysdate from dual</value>
          </parameter>
          <parameter>
            <name>maxWait</name>
            <value>5000</value>
          </parameter>
          <parameter>
            <name>maxActive</name>
            <value>4</value>
          </parameter>
          <parameter>
            <name>password</name>
            <value>pass</value>
          </parameter>
          <parameter>
            <name>url</name>
            <value>jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:ora8</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>user</value>
          </parameter>
        </ResourceParams>
    ...
      </GlobalNamingResources>
    ...2、配置host中的资源引用(server.xml)        <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Hello, World Application" docBase="d:\Tomcat4.1\webapps\testweb" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/testweb" privileged="false" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper">
               <ResourceLink global="jdbc/oracle" name="jdbc/oracle" type="javax.sql.DataSource"/>
            </Context>3、在自己host中的web.xml(上例中的testweb\WEB-INF\web.xml)中配置
    <resource-ref>
          <description>Oracle Connection Pool</description>
          <res-ref-name>jdbc/oracle</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
    </resource-ref>4、将classes12.zip改成classes12.jar(或者直接用ojdbc14.jar)放在common/lib下
    5、重启tomcat
    6、ok我以前也想开发自己的连接池,最后发现还是用现成的,以后换到ejb容器(weblogic/jboss/等)中也没有问题。
      

  10.   

    谢谢你啊;你对oracle 了解吗?有的时候oracle会拒绝连接,过一回又正常了.有的时候必须多次关闭数据库再启动才可以.不知道是什么原因.使用DBA看活动的连接发现也不是因为
    连接到数据库的连接很多超过并发连接数.另外问一下你用的是什么版本的tomcat。我用的是tomcat4.1.24. 我看了你的配置,觉得应该也是对得,你设置的是全局的数据源,对所有的
    context都会有用,我设置的是在嵌入在自己的context中的数据源,我想应该是一样的,但是为什么找不到驱动程序类,这个类在common/lib下,而且直接使用这个驱动程序可以创建连接。不过我还是试一下你的方法,请详细告知一下你的 环境
    比如 tomcat 的版本和jdk的版本;还有数据库的版本。 我用class12.jar可以驱动0racle7.3
      

  11.   

    我开发一直是用oracle数据库,差不多有5年多了吧,目前的开发环境是:
    jdk1.4.1_02
    tomcat4.1.24
    oracle 817你怎么还在用oracle7这么古董的东西呀!难道你的数据库是在SCO平台上吗?
    随便搭个Linux平台就行,我现在的开发环境就是redhat8+oracle817,以前是redhat7.3+oracle817,很稳定呀!
    至于你说的数据库连接问题,我建议你还是采用oracle的其它版本,oracle7连oracle公司自己都不维护了。
      

  12.   

    别人以前开发的是用的oracle7.3的C/S模式的应用,我现在在原来的基础上加一层B/S不改动它的数据库结构,只是自己增加一些表。