У меня есть код, как показано ниже, который работал прекрасно, когда я запустил его в качестве приложения на Java:JDBC getConnection не работает на сервере Tomcat. Но он работает как приложение Java
package com.LearnersLingoo.WebContent;
// Рассмотрит всю необходимую импорта позаботились
public class VerifyUser {
public VerifyUser(){
}
boolean userExist(String userName, String userPassword){
return true;
}
public static void main(String[] args) throws SQLException {
Connection myConn = null;
Statement myStmt = null;
ResultSet myRes = null;
try{
myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "student", null);
System.out.println("Connection Successful");
myStmt = myConn.createStatement();
int rowsAffected = myStmt.executeUpdate("insert into learners" +
"(ID, userName, FirstName, LastName, Password)" +
"values" +
"(11001, 'Test', 'testUser', 'UserLastN', 'password')");
System.out.println("Rows inserted: " + rowsAffected);
}
catch (Exception e){
e.printStackTrace();
}
}
}
сообщение консоли, как показано ниже:
Connection Successful
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '11001' for key 'PRIMARY'
Здесь в любом случае пользователь уже присутствует, так что по крайней мере соединение успешно.
Когда у меня есть подобный код, выполняемый как сервлет я получаю
Connnnection not successfuljava.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
Я прошел через другие подобные вопросы по этой теме, который предложил мне добавить Class.forName (com.mysql.jdbc.driver) Но это не помогло
@WebServlet
public class HomePage extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection connection;
/**
* @see HttpServlet#HttpServlet()
*/
public HomePage() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public void init(){
try {
// Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "student", null);
System.out.println("Connection Successful");
} catch (SQLException e) {
System.out.println("Connnnection not successful");
e.printStackTrace();
}
}
Пожалуйста, помогите мне о том, как добавить JDBC банку на сервере Tomcat. Я запускаю сервер Tomcat для своего веб-приложения в Eclipse, установленном на Mac.
Обновлено полный трассировки стека:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.LearnersLingoo.WebContent.HomePage.init(HomePage.java:37)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:779)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
Connnnection not successful
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Вам необходимо добавить JDBC-файл JAR в ваш файл WAR. –
Я могу решить эту проблему, выполнив следующее: я добавил файл jar mySQL JDBC на Tomcat Server, используя Tomcat Server «Open Launch Configuration» -> ClassPath. Это решило проблему. Не могли бы вы рассказать мне, правильно ли это решение проблемы? Таким образом, в общей сложности я добавил драйвер JDBC в двух местах. 1) К классу классов веб-приложения и 2) к пути класса Tomcat. –