连接池中没有合适的驱动程序异常

编程入门 行业动态 更新时间:2024-10-26 12:35:39
本文介绍了连接池中没有合适的驱动程序异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试使用servlet来实现连接池.我知道有人问过很多类似的问题,但没有一个可以帮助您.

I am trying to implement connection pooling using servlet. I know there are lots of similar questions has been asked but none is able to help.

这是例外:

java.sql.SQLException:无法在以下位置创建用于连接URL的类的JDBC驱动程序nullorg.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2160)在org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2032)在org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532)在connection.CityInfoServlet.showCityInformation(CityInfoServlet.java:104)在connection.CityInfoServlet.doGet(CityInfoServlet.java:76)在javax.servlet.http.HttpServlet.service(HttpServlet.java:622)在javax.servlet.http.HttpServlet.service(HttpServlet.java:729)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:674)在org.apache.tomcat.util.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)在org.apache.tomcat.util.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456)在java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)在java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)在java.lang.Thread.run(未知源)造成原因:java.sql.SQLException:在以下位置没有合适的驱动程序java.sql.DriverManager.getDriver(未知源),网址为org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2144)...另外27个

java.sql.SQLException: Cannot create JDBC driver of class for connect URL null at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2160) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2032) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532) at connection.CityInfoServlet.showCityInformation(CityInfoServlet.java:104) at connection.CityInfoServlet.doGet(CityInfoServlet.java:76) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) at org.apache.tomcat.util.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) at org.apache.tomcat.util.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 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.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2144) ... 27 more

我不知道为什么显示此异常:

I don't know why this exception show :

原因:java.sql.SQLException:没有合适的驱动程序.

Caused by: java.sql.SQLException: No suitable driver.

我在WEB-INF/lib文件夹中添加了jar文件.

I added jar file in WEB-INF/lib folder.

这是我的Servlet代码:

Here is my Servlet Code :

package connection; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; @WebServlet("/CityInfoServlet") public class CityInfoServlet extends HttpServlet { private static final long serialVersionUID = 1L; DataSource dataSource = null; public void init( ServletConfig config ) { try{ Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env"); dataSource = (DataSource) envContext.lookup("jdbc/worldDB"); } catch( Exception exe ) { exe.printStackTrace(); } } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "City Information From Mysql Database"; out.print("<html><body bgcolor=\"#f0f0f0\">"); out.print("<h1 align=\"center\">" + title + "</h1>\n"); showCityInformation(out); out.print("</body></html>"); } private void showCityInformation( PrintWriter out ) { Connection connection = null; PreparedStatement preparedStatement = null; try { String sql = "select * from city limit ?"; connection = dataSource.getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, 10); ResultSet rs = preparedStatement.executeQuery(); while( rs.next() ) { int id = rs.getInt(1); String name = rs.getString(2); String countryCode = rs.getString(3); String district = rs.getString(4); int population = rs.getInt(5); out.print("ID: " + id + "<br>"); out.print("Name: " + name+ "<br>"); out.print("CountryCode: " + countryCode+ "<br>"); out.print("District: " + district+ "<br>"); out.println("Population: " + population+ "<br>"); out.println("--------------------------------------"+ "<br>"); } rs.close(); } catch( Exception e ) { e.printStackTrace(); } finally { try { if( preparedStatement != null ) { preparedStatement.close(); } } catch( SQLException sqlException ){ sqlException.printStackTrace(); } try { if( connection != null ) { connection.close(); } } catch( SQLException sqlException ) { sqlException.printStackTrace(); } } } }

这是context.xml文件

This is context.xml file

<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/worldDB" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="root" password="12345" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/world"/> </Context>

推荐答案

我认为..

1-您必须将合适的驱动程序复制到Server/lib文件夹

1 - you have to copy suitable driver to Server/lib folder

2-如果必须在项目META-INF上创建DataSource Connection context.xml,则进行修改

2 - If you have to created DataSource Connection context.xml on your project META-INF then modify

3-您的WEB.xml这样的项目(添加此内容)

3 - WEB.xml of you project like this (add this)

<resource-ref> <description>MySQLDatasource</description> <res-ref-name>jdbc/worldDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

然后您可以运行此应用程序 localhost:8080/app_name -确定但是如果您想从 localhost:8080

Then you can run this app localhost:8080/app_name - ok but if you want to call this app from localhost:8080

然后您必须

1-将上下文标签添加到您的Server/conf/server.xml文件中

1 - add Context tag to your Server/conf/server.xml file

2-将此行添加到您的Server/conf/context.xml

2 - add this line to your Server/conf/context.xml

<Resource name="jdbc/worldDB" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="root" password="12345" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/world"/>

3-重新启动服务器

然后它将在服务器上下文中找到此连接.

then it will find this connection from Server context.

更多推荐

连接池中没有合适的驱动程序异常

本文发布于:2023-10-18 23:45:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1505773.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:驱动程序   池中   合适   异常

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!