Развертывание Springboot War на Tomcat 8.5

Я создал файл войны весенней загрузки с помощью maven, когда я пытаюсь развернуть файл войны на внешний сервер tomcat в командной строке. У меня исключение.

Ошибка при создании bean-компонента с именем inMemoryDatabaseShutdownExecutor, определенным в ресурсе пути к классам [org / springframework / boot / devtools / autoconfigure / DevToolsDataSourceAutoConfiguration.class]: неудовлетворенная зависимость, выраженная через параметр 0 метода inMemoryDatabaseShutdownExecutor; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'dataSource', определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / jdbc / DataSourceConfiguration $ Hikari.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно ; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.zaxxer.hikari.HikariDataSource]: фабричный метод dataSource вызвал исключение; вложенное исключение - java.lang.IllegalStateException: не удается загрузить класс драйвера: oracle.jdbc.OracleDriver

Я использую два файла application.properties: один в src / main / resources, который имеет фактическую конфигурацию источника данных для Oracle, а другой - в src / test / resources, который имеет источник данных для H2 в базе данных памяти.

Пожалуйста, дайте мне знать, если я что-то пропустил, например, размещение файла свойств в config в папке tomcat и т. д.

Это исключение возникает при запуске приложения или тестовых примеров?

Gaurav Srivastav 16.10.2018 18:51

При запуске приложения со встроенным сервером springboot из eclipse оно работает без ошибок. Только при развертывании войны в Tomcat возникают ошибки (путем размещения файла войны в веб-приложениях в Tomcat).

PragmaticFire 16.10.2018 19:09

Проверьте зависимости времени выполнения для такого источника данных, как Oracle. Проверьте, не включен ли ваш oracle jar в каталог lib tomcat.

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

Ответы 3

Я полагаю, вы установили oracle.jdbc.OracleDriver как имя класса драйвера в своем application.properties в src / main / java, верно? Вы не забыли включить эту зависимость от pom.xml, как показано ниже?

<dependency>
      <groupId>com.oracle</groupId>
          <artifactId>ojdbc14</artifactId>
      <version>10.2.0.4.0</version>
</dependency>

Редактировать

Попробуйте добавить это в tomcat context.xml:

  <Resource name = "jdbc/mydb" auth = "Container" type = "javax.sql.DataSource"
           maxTotal = "100" maxIdle = "30" maxWaitMillis = "10000"
           username = "xxx" password = "xxx" driverClassName = "oracle.jdbc.OracleDriver"
           url = "jdbc:oracle:thin:@localhost:1521:xe"/>  

Я пробовал это, не сработало. Думаю, он не может искать автоконфигурацию DataSourceConfiguration $ Hikari.class

PragmaticFire 16.10.2018 20:41

Хорошо, основная причина этого в том, что в моем файле войны нет oracle6 jar - хотя я добавил зависимость в свой pom.xml.

<dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc</artifactId>
            <version>6</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/ojdbc6.jar</systemPath>
        </dependency>

Поэтому я явно добавил банку в свою библиотеку Tomcat, и она сработала.

Я добавил конфигурацию источника данных программным способом, как показано ниже, и она сработала, не знаю, почему ее нельзя было выбрать из application.properties.

@Configuration
public class DatasourceConfig {
@Bean
public DataSource datasource() {
    return DataSourceBuilder.create()
      .driverClassName("com.mysql.cj.jdbc.Driver")
      .url("jdbc:mysql://localhost:3306/test_db")
      .username("username")
      .password("password")
      .build(); 
   }
}

Кредиты на статью Baeldung здесь

проблема здесь в том, что конфигурация считывается, но зависимость не устраняется. Вы можете пересмотреть свой ответ

pradosh nair 20.03.2021 08:36

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