Не удается получить соединение JDBC в Elastic Beanstalk

я хочу развернуть свое приложение в AWS.
Я установил свой env.
и в root-context.xml моего приложения я установил источник данных.

<bean id = "dataSource" class = "org.apache.commons.dbcp2.BasicDataSource">
    <property name = "driverClassName" value = "oracle.jdbc.driver.OracleDriver" />
    <property name = "url" value = "jdbc:oracle:thin:@mydbinstance.cnn31xputfwg.ap-northeast-2.rds.amazonaws.com:1521:orcl" />
    <property name = "username" value = "myid" />
    <property name = "password" value = "mypassword" />
</bean>

этот параметр отлично работает локально на сервере tomcat. но в AWS это сообщение об ошибке

nested exception is org.apache.ibatis.exceptions.PersistenceException: 
Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is
java.sql.SQLException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
The error may exist in file [/var/lib/tomcat8/webapps/ROOT/WEB-INF/classes/mappers/emp/emp-mapper.xml]
The error may involve EmpDAO.List ### The error occurred while executing a query
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is
java.sql.SQLException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'

Теперь мой вопрос: что мне делать, чтобы использовать соединение get jdbc в AWS?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
477
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, когда вы запускаете приложение на AWS, в его CLASSPATH отсутствует драйвер Oracle JDBC. Итак, ответ - добавить драйвер в путь к классам.

И я предвижу следующий вопрос: «как это сделать?», И самый простой способ - просто вручную скопировать драйвер в свой путь к классам.

Если вам не нравится ручная работа, вы можете сгенерировать шаблон приложения Spring с помощью Spring Initializr. Его сценарий сборки имеет плагин org.springframework.boot, который выполняет две важные функции:

  • создает один файл jar, который включает Tomcat, поэтому приложение может быть запущено только java -jar my-app.jar (без развертывания в Tomcat)
  • включает все зависимости из раздела сценария сборки dependencies к этому файлу jar (включая драйвер Oracle JDBC)

путь к классам? где я могу найти путь к классам? Я использую проект maven spring, а файл ojdbc.jar существует в репозитории.

I have 10 fingers 22.07.2018 10:45

Другие вопросы по теме

Javascript считывает мою строку даты как число, когда я передаю свои данные с помощью ModelAndView (Spring)
Как передать данные, содержащиеся в модальном режиме динамической загрузки, на контроллер в приложении Spring Boot, чтобы иметь возможность выполнять необходимые операции POST?
BindingResult заполняет сообщение об ошибке в консоли eclipse, но не в форме / веб-странице
Как запустить тестовые примеры с помощью фреймворка Spring-Boot
Моя страница JSP не загружает файл CSS
IntelliJ Idea не обновляет удаленный Tomcat, работает только повторное развертывание
@PreAuthorize hasPermission возвращает настраиваемое сообщение об отказе в доступе вместо страницы с отказом в доступе
Статус HTTP 500 - javax.mail.MessagingException: не удалось подключиться к SMTP-узлу: localhost, порт: 25, ответ: 421
Загрузка узлов neo4j с ближайшими соседями при загрузке Spring
Потоковая передача звука из серверной части Kotlin / Spring в интерфейсную часть