之前我在tomcat6.0下配置过sql2000,mysql的连接池,这次想配置oracle的,但出现了问题。
环境:Eclipse3.3+myeclipse6.0的合成版,tomcat6.0,oracle9版
1.我已在context.xml和server.xml下做了如下配置
<Resource auth="Container"
driverClass="oracle.jdbc.OracleDriver"
maxActive="100" maxIdle="30" maxWait="10000"
name="jdbc/oracleds" username="scott" password="tiger"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@localhost:1521:ketty" />
2.已在tomcat lib目录下和项目中添加了ojdbc14.jar
3.在servlet中获取数据源并对表单提交过来的数据进行操作。
Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:/comp/env/jdbc/oracleds");
运行时出现错误,问题描述如下:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'jdbc:oracle:thin:@localhost:1521:ketty'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at webbook.guestbook.AddMessageServlet.doPost(AddMessageServlet.java:37)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
... 16 more
2008-12-9 22:52:19 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet AddMessageServlet threw exception
java.lang.NullPointerException
at webbook.guestbook.AddMessageServlet.doPost(AddMessageServlet.java:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
第二个地方报错说驱动不匹配,这点我觉得可以否定,因为驱动是已安装的oracle自带的。
关于第一个错误我上网查了很多,但没有一个明确答案。希望大家帮我看看。
不管上面的问题您能不能帮忙解决,请帮我解答下这个基础问题:
如果我们要直接获取连接,则需要在项目中添加相应的数据库驱动,但我在看一视频教程时却发现这么个问题,就是在配置缓冲池的情况下,它将项目中的oracle驱动给移除了,说不移除可能引起问题,给我的感觉此时是多余的。但我就不懂了,在配置缓冲池时不是有这么个参数么driverClass="oracle.jdbc.OracleDriver",这个参数应该要用到相应驱动啊,后来仔细想想,在context.xml和server.xml中配置的缓冲池是与项目无关的,移除也是有可能的,但我就不清楚了,此时driverClass这里的值又是什么意思,这个驱动类来自哪里?难道这里driverClass有另类解释?或者说其值oracle.jdbc.OracleDriver可以随便取?这个应该不可能吧,毕竟之前我配置过sql2000和mysql的缓冲池,希望大家帮我解释下。
环境:Eclipse3.3+myeclipse6.0的合成版,tomcat6.0,oracle9版
1.我已在context.xml和server.xml下做了如下配置
<Resource auth="Container"
driverClass="oracle.jdbc.OracleDriver"
maxActive="100" maxIdle="30" maxWait="10000"
name="jdbc/oracleds" username="scott" password="tiger"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@localhost:1521:ketty" />
2.已在tomcat lib目录下和项目中添加了ojdbc14.jar
3.在servlet中获取数据源并对表单提交过来的数据进行操作。
Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:/comp/env/jdbc/oracleds");
运行时出现错误,问题描述如下:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'jdbc:oracle:thin:@localhost:1521:ketty'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at webbook.guestbook.AddMessageServlet.doPost(AddMessageServlet.java:37)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
... 16 more
2008-12-9 22:52:19 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet AddMessageServlet threw exception
java.lang.NullPointerException
at webbook.guestbook.AddMessageServlet.doPost(AddMessageServlet.java:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
第二个地方报错说驱动不匹配,这点我觉得可以否定,因为驱动是已安装的oracle自带的。
关于第一个错误我上网查了很多,但没有一个明确答案。希望大家帮我看看。
不管上面的问题您能不能帮忙解决,请帮我解答下这个基础问题:
如果我们要直接获取连接,则需要在项目中添加相应的数据库驱动,但我在看一视频教程时却发现这么个问题,就是在配置缓冲池的情况下,它将项目中的oracle驱动给移除了,说不移除可能引起问题,给我的感觉此时是多余的。但我就不懂了,在配置缓冲池时不是有这么个参数么driverClass="oracle.jdbc.OracleDriver",这个参数应该要用到相应驱动啊,后来仔细想想,在context.xml和server.xml中配置的缓冲池是与项目无关的,移除也是有可能的,但我就不清楚了,此时driverClass这里的值又是什么意思,这个驱动类来自哪里?难道这里driverClass有另类解释?或者说其值oracle.jdbc.OracleDriver可以随便取?这个应该不可能吧,毕竟之前我配置过sql2000和mysql的缓冲池,希望大家帮我解释下。
http://space.itpub.net/12125877/viewspace-468058
<ResourceParams name="jdbc/dbcp">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:JSQLConnect://localhost/database=fccs</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.jnetdirect.jsql.JSQLDriver</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<!-- SQLServer dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sunwei</value>
</parameter>
</ResourceParams>