2016-04-03 2 views
2

Я закончил создание динамического веб-приложения java локально, и теперь я пытаюсь развернуть его на капельке Digital Ocean.Развертывание приложения Java .war для цифрового океана Ubuntu

Я установил jdk, mysql и tomcat на свой сервер, и я развернул свое приложение, используя файл .war, экспортированный из eclipse. Я также скопировал файл mysql-connector-java в папку/opt/tomcat/lib.

Но когда я открываю мое приложение на сервере, ошибка появилась так:

Error instantiating servlet class surveyExchange.my.SignUpServlet 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/UserInfo?useSSL=false. 

И мой код выглядит следующим образом:

static String url = "jdbc:mysql://localhost:3306/"; 
static String dbName = "UserInfo?useSSL=false"; 
static String driver = "com.mysql.jdbc.Driver"; 
static String userName = "root"; 
static String password = "******"; 
static Connection conn = null; 

private static final long serialVersionUID = 1L; 

/** 
* @throws SQLException 
* @see HttpServlet#HttpServlet() 
*/ 
public SignUpServlet() throws SQLException { 
    super(); 
    conn = DriverManager.getConnection(url + dbName, userName, password); 
} 

Была ошибка в этой строке:

conn = DriverManager.getConnection(url + dbName, userName, password); 

Трассировка стека:

Exception 
javax.servlet.ServletException: Error instantiating servlet class surveyExchange.my.SignUpServlet 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

Root Cause: 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/UserInfo?useSSL=false 
    java.sql.DriverManager.getConnection(DriverManager.java:596) 
    java.sql.DriverManager.getConnection(DriverManager.java:215) 
    surveyExchange.my.SignUpServlet.<init>(SignUpServlet.java:34) 
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    java.lang.Class.newInstance(Class.java:383) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

Благодарим вас за терпение!

+0

Это выглядит так: Ошибка создания экземпляра класса сервлетовExchange.my.SignUpServlet java.sql.SQLException: Не найдено подходящего драйвера для jdbc: mysql: // localhost: 3306/UserInfo? UseSSL = false. – desperado

+0

Возьмите еще один драйвер переменной = URL + dbName; и передать этот аргумент .getConnection (драйвер, имя пользователя, пароль) –

+1

Добро пожаловать в Stack Overflow! Я не уверен, что ответ на ваш вопрос, но вы неплохо сделали, чтобы убедиться, что вся необходимая информация включена и хорошо отформатирована. Я уверен, что кто-то скоро ответит. Наслаждайтесь своим пребыванием! –

ответ

0

Косвенный способ ответить на ваш вопрос: Go with a datasource (но вы можете столкнуться с теми же проблемами там, так что продолжение)

Водитель должен быть хорошо в lib/ папке TOMCAT (а не в WEB-INF, но все, что вы сделайте, пожалуйста, используйте его только в одном месте).

Проверьте разрешения на файл (и все каталоги, касающиеся пользователя, которого вы используете для запуска tomcat), и убедитесь, что ваш коннектор - это файл jar, а не загруженный ZIP-файл, содержащий только банку ,

То, что я обычно делаю это aptitude install libmysql-java, чтобы убедиться, что у меня есть версия, соответствующая локальный MySQL, то ln -s /usr/share/java/mysql-connector-java.jar /opt/tomcat/lib/

Еще один вариант, чтобы попробовать, прежде чем пытаться соединение (раз в приложении запуск достаточно): выполнить Class.forName("com.mysql.jdbc.Driver");.

Кроме того, я бы утверждать, что это лучше для распределения соединения перенести init() метод сервлета (и убирать в destroy()) или даже использовать подключение JNDI - но это только в дополнение к вышеупомянутому ответу.

+0

Да, я выполнил 'Class.forName (" com.mysql.jdbc. Driver ");' и это сработало. Спасибо! – desperado

+0

@desperado На самом деле лучше использовать 'DriverManager.registerDriver (new com.mysql.jdbc.Driver());'. – Majora320

Смежные вопросы