TOMCAT连接池问题(解决问题200分相送)

starwill 2005-01-29 02:10:02
从昨天开始配置TOMCAT连接池,到现在还没弄好~~
先说一下我的环境:winxp+jdk1.5+tomcat-5.5.4~~~
不使用连接池,能正常连接oracle/mssql2000/mysql/access,我全部测试过~~
连接离的库文件(commons-pool-1.2.jar)我已复制到:\command\lib目录下~~

我首先尝试直接修改server.xml和web.xml(根据网上的资料),然后尝试过在$tomcat$/conn/Catalina/localhost目录下另写一个.xml文件,但错误全部一样:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

以下是我server.xml文件内容:

<Server port="8005" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

<!-- Global JNDI resources -->
<GlobalNamingResources>

<Environment name="simpleValue" type="java.lang.Integer" value="30"/>

<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />

</GlobalNamingResources>

<Service name="Catalina">

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">


<Resource name="jdbc/oracle" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/oracle">

<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:@192.168.0.2:1521:housing</value>
</parameter>

<parameter>
<name>username</name>
<value>hagjj</value>
</parameter>

<parameter>
<name>password</name>
<value>gjj</value>
</parameter>

<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>

<parameter>
<name>maxIdle</name>
<value>98</value>
</parameter>

<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>

</ResourceParams>

</Host>

</Engine>

</Service>

</Server>

以下是web.xml文件内容(注:我的应该程序目录下的web.xml文件):

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<display-name>CFBBS</display-name>

<description>ceng feng bbs</description>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>com.htf.servlet.HelloworldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

解决问题立即200分相送~~~
...全文
544 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
epson1980 2005-02-17
  • 打赏
  • 举报
回复
也遇到同样问题!
换了Tomcat的版本也不行!
图形化建立的!
cxc010 2005-02-02
  • 打赏
  • 举报
回复
============================
我也遇到过这个问题,后来在Apache Tomcat Properties的Java选项卡的 java Classpath中加上驱动文件的路径后重启一下解决了,不过我用的是mysql.
============================
我也加了还是不行,这怎么回事呢,请问你的Tomcat是哪个版本呢?我的是5.5.4
drugon 2005-02-01
  • 打赏
  • 举报
回复
Oracle的JDBC驱动是有版本的,不同的版本是不同的JDBC驱动,这一点不能搞错,你的问题很有可能是这种错误。
lvyuanfang 2005-02-01
  • 打赏
  • 举报
回复
看tomcat的文档,很清楚!
以梦为马 2005-02-01
  • 打赏
  • 举报
回复
up
Jzealot 2005-01-30
  • 打赏
  • 举报
回复
进admin,可以可视化管理连接池
qileroro 2005-01-30
  • 打赏
  • 举报
回复
我也遇到过这个问题,后来在Apache Tomcat Properties的Java选项卡的 java Classpath中加上驱动文件的路径后重启一下解决了,不过我用的是mysql.
-------------------------------------
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
--------------------------------------
iamzhanglin 2005-01-30
  • 打赏
  • 举报
回复
帮你顶!!!!!
YuLimin 2005-01-29
  • 打赏
  • 举报
回复
tomcat连接池配置
Tomcat文档说明 http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
Tomcat4的数据库连接池配置 http://www.7880.com/Info/Article-37ebcbc0-2.html
tomcat连接池的配置与使用(原创)数据库mysql http://www.7880.com/Info/Article-37f05fa0.html
vongood 2005-01-29
  • 打赏
  • 举报
回复
maybe 版本有问题。
unrealwalker 2005-01-29
  • 打赏
  • 举报
回复
5.0.28
(delete /Catalina/localhost/quickstart.xml)
1.server.xml(before </Host>)
<Context docBase="quickstart" path="/quickstart" reloadable="true" workDir="work\Catalina\localhost\quickstart">
<Resource name="jdbc/mysql" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql">
<parameter>
<name>username</name>
<value>admin</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/quickstart</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>4</value>
</parameter>
</ResourceParams>
</Context>

2.web.xml*2(before </web-app>)
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
hjx615 2005-01-29
  • 打赏
  • 举报
回复
top
zxjcool 2005-01-29
  • 打赏
  • 举报
回复
上面的配置,应该都是正确的,但是有一点非常非常重要,就是tomcat版本的问题,同一种配置,我试过,在tomcat5.5.7下不行(差点就放弃了),最后查了查资料,改用5.0.28版本一试,ok,搞定!

至于楼主说的5.5.4版本,我没去试过,估计如果楼主配不出,找不到错误的原因,不妨改用5.0.28试试,说不定有意外的惊喜!!
bf2000bf 2005-01-29
  • 打赏
  • 举报
回复
用个简单的方法:CATALINA_BASE/webapps中建个xml文件内容如下,就不要修改server.xml了
<Context path="/demo" docBase="webapps/MyWebApp.war" debug="0" privileged="true">
<Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/oracle">
<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:@192.168.0.111:1521:jinhui</value>
</parameter>
<parameter>
<name>username</name>
<value>ggg</value>
</parameter>
<parameter>
<name>password</name>
<value>aaa</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>50</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
</ResourceParams>
</Context>
web.xml中加入
<resource-ref>
<description>Oracle Datasource Connector Pool</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
dabo1980 2005-01-29
  • 打赏
  • 举报
回复
Web.xml


<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>

<resource-ref>
<description>connectDB test</description>
<res-ref-name>jdbc/SqlServerDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

</web-app>
dabo1980 2005-01-29
  • 打赏
  • 举报
回复
Server.xml



<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"/>

<GlobalNamingResources>

<Environment name="simpleValue" type="java.lang.Integer" value="30"/>

<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>

<Service name="Tomcat-Standalone">

<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="20000"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

<Engine name="Standalone" defaultHost="localhost" debug="0">

<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"/>

<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"/>

<Context path="" docBase="ROOT" 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="jdbc/SqlServerDB" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/SqlServerDB">

<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>60</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>false</value>
</parameter>
-->
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>username</name><value>sa</value>
</parameter>
<parameter>
<name>password</name><value>3667844</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://211.93.63.99:1433;DatabaseName=shortmessage</value>
</parameter>
</ResourceParams>
<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>
dabo1980 2005-01-29
  • 打赏
  • 举报
回复
安装jdk

安装tomcat

配置环境变量

Java_Home C:\JDK

Tomcat_Home C:\TOMCAT

Path C:\JDK\BIN;C:\TOMCAT\BIN;

ClassPath .;C:\JDK\LIB\DT.JAR;C:\JDK\LIB\TOOLS.JAR;C:\JDK\LIB;C:\TOMCAT\COMMON\LIB;

配置conf\Server.xml 见Server.xml

配置Root\Web-Inf\Web.xml 见Web.xml
bf2000bf 2005-01-29
  • 打赏
  • 举报
回复
请在server.xml文件,<context></context>中加入对DATASOURCE.xml
的引用或直接加入DATASOURCE.xml的内容
starwill 2005-01-29
  • 打赏
  • 举报
回复
按楼上的兄弟的方法改了之后,运行tomcat时报错,程序还能运行:
2005-1-29 14:50:33 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-80
2005-1-29 14:50:33 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 971 ms
2005-1-29 14:50:33 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2005-1-29 14:50:33 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.4
2005-1-29 14:50:33 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2005-1-29 14:50:34 org.apache.tomcat.util.digester.Digester fatalError
严重: Parse Fatal Error at line 2 column 2: The markup in the document following the root element must be well-formed.
org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1545)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:561)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1011)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1003)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:437)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2010)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
2005-1-29 14:50:34 org.apache.catalina.startup.HostConfig deployDescriptor
严重: Error deploying configuration descriptor DataSource.xml
org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1545)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:561)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1011)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1003)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:437)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2010)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
2005-1-29 14:50:35 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-80
2005-1-29 14:50:35 org.apache.jk.common.ChannelSocket init
信息: JK2: ajp13 listening on /0.0.0.0:8009
2005-1-29 14:50:35 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/50 config=null
2005-1-29 14:50:35 org.apache.catalina.startup.Catalina start
信息: Server startup in 2353 ms
bf2000bf 2005-01-29
  • 打赏
  • 举报
回复
应用如下:
public abstract class Entity {

private static DataSource ds=null; //数据源
protected final static Connection getDBConn() throws SQLException, NamingException {
try {
PrintLog.printLog("Entity--建立数据库连接对象");
Connection dbc = getDBSource().getConnection();
return dbc;
}
catch (SQLException e) {
throw e;
}
catch (NamingException e) {
throw e;
}

}

private final static synchronized DataSource getDBSource() throws NamingException {
try {
if (ds == null) {
PrintLog.printLog("Entity--建立数据源");
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/oracle");
return ds;
} else {
return ds;
}
} catch (NamingException e) {
throw e;
}

}

}
加载更多回复(6)

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧