Я пытаюсь реализовать пул соединений с использованием сервлета. Я знаю, что есть много похожих вопросов, но никто не может помочь.нет подходящего исключения драйвера в соединении пула
Вот исключение:
java.sql.SQLException: Невозможно создать драйвер JDBC класса для подключения URL нуля на org.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) на подключение.CityInfoServlet.showCityInformation (CityInfoServlet.java:104) при подключении.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 (ApplicationFilterC hain.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.catal ina.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.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java: 1500) на org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1456) в java.util.concurrent.ThreadPoolExecutor.runWorker (Unknown Source) в java.util.concurrent. ThreadPoolExe cutor $ Worker.run (Неизвестный источник) at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) at java.lang.Thread.run (Неизвестный источник) Причиняется: java.sql.SQLException: Нет подходящий драйвер на java.sql.DriverManager.getDriver (Unknown Source) в org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory (BasicDataSource.java:2144) ...27 более
Я не знаю, почему это исключение шоу:
Вызванный: java.sql.SQLException: Нет подходящий драйвер.
Я добавил файл jar в папку WEB-INF/lib.
Вот мой сервлет код:
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 файл
<?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>
Да, я точно скопировал его из своих фактических данных. @RadLexus –
Что не так в контексте в ресурсе? @RadLexus –
это была опечатка. И я сожалею, что URL @RadLexus –