tomcat的连接池 是Tyrex提供的
可以参考tomcat文档
或者去www.apache.org看看
可以参考tomcat文档
或者去www.apache.org看看
解决方案 »
- 如何将图片直接上传到oracle数据库中?
- mysql有没有windows界面的管理软件啊?
- 代码如何实现用SmartUpload上传图片至MySQL中?
- 如何设置虚拟目录,先给20',如果能真正解决问题,另外贴给100分。
- <a href="modify.do?user=${u.username}">修改</a> 传值问题
- 写在页面很好,用javabean就出错,解决了就算入门了吧
- 关于字符串类型转换为浮点类型的问题
- jsp中长插入语句换行的连接!在先等待!
- [求助]Httpclient POST遇到未将对象引用设置到对象的实例
- 拷贝的代码报500
- 请教,我想读取另外一台电脑上D盘上一个共享的文件,怎样在JSP里获得这个文件的路径
- 初学:JSP运行显示问题,内附出错代码!
看看这个帖子
当然也可以使用tyrex 的连接池
实际上只要实现了数据源工厂类的都可以。我是按照标准的tomcat 文档的说明配置的,其他的资料都大同小异,差不多。但是出现问题自己还是搞不明白,用tomcat也有一段时间了,其文档大值都看过,还是自己整吧,这种问题问也没有收获,要是真正能面对面交流看一看可能就会明白一点。
除了你定义的全局资源外,你还需要在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"为你可以使用的连接池。
你配置的是全局的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>
头大了,甚至开始怀疑是否tomcat版本的问题。
先帮你顶一下。
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/等)中也没有问题。
连接到数据库的连接很多超过并发连接数.另外问一下你用的是什么版本的tomcat。我用的是tomcat4.1.24. 我看了你的配置,觉得应该也是对得,你设置的是全局的数据源,对所有的
context都会有用,我设置的是在嵌入在自己的context中的数据源,我想应该是一样的,但是为什么找不到驱动程序类,这个类在common/lib下,而且直接使用这个驱动程序可以创建连接。不过我还是试一下你的方法,请详细告知一下你的 环境
比如 tomcat 的版本和jdk的版本;还有数据库的版本。 我用class12.jar可以驱动0racle7.3
jdk1.4.1_02
tomcat4.1.24
oracle 817你怎么还在用oracle7这么古董的东西呀!难道你的数据库是在SCO平台上吗?
随便搭个Linux平台就行,我现在的开发环境就是redhat8+oracle817,以前是redhat7.3+oracle817,很稳定呀!
至于你说的数据库连接问题,我建议你还是采用oracle的其它版本,oracle7连oracle公司自己都不维护了。