Почему мое соединение JDBC прерывается только при развертывании через Jetty? - PullRequest
0 голосов
/ 03 декабря 2018

Чтобы притворяться, я новичок в веб-разработке.У меня есть веб-приложение Java, которое развернуто через Jetty, и у меня есть проблема, которая действительно смущает меня.Чтобы отобразить данные из моей базы данных в веб-приложении, я должен установить соединение с базой данных, что я могу сделать, когда я тестирую код моего модуля, но когда я вызываю те же методы со страниц .jsp для заполнения веб-приложения, я получаюсообщение, сообщающее мне это:

java.sql.SQLException: No suitable driver found for jdbc:sqlserver://localhost:1433;integratedSecurity=true;database=TicketITBookingSystemDatabase;loginTimeout=30;

Вот остаток соответствующего кода:

public void queryDatabase(String query){

ResultSet resultSet = null;
String connectionUrl = establishDatabaseConnection();

try (Connection connection = DriverManager.getConnection(connectionUrl);
     Statement statement  = connection.createStatement();) {

    //Execute the sql statement passed as the query parameter.
    resultSet = statement.executeQuery(query);
    processResultSet(resultSet);
    statement.close();
}
// Handle any errors that may have occurred.
catch (SQLException e) {
    e.printStackTrace(); //why is this being hit but only on the web build
}

И событие, которое вызывается:

public List<String[]> getAllEvents(){
    queryDatabase("EXEC dbo.sp_GetAllEventDetails");
    return events;
}

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Проблема в том, что либо вы не добавили jar драйвера в путь к классу Jetty, либо - если вы развернули его вместе с приложением - вам необходимо явно загрузить драйвер с помощью Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").Автоматическая загрузка драйвера JDBC работает только тогда, когда драйвер находится на начальном пути к классу, а не если он находится на пути к классам контекста.

Однако обычно не рекомендуется использовать DriverManager непосредственно из веб-приложения.Использование DataSource обычно лучше, особенно если реализация источника данных предоставляет пул соединений.

0 голосов
/ 03 декабря 2018

Необходимо добавить драйвер базы данных на путь к классу Jetty.

Проверить, присутствует он или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...