Проблема с несколькими источниками данных весенней облачной задачи - PullRequest
0 голосов
/ 18 декабря 2018

Я настроил два источника данных в своем приложении, следуя руководству примера spring: https://github.com/spring-cloud/spring-cloud-task/blob/master/spring-cloud-task-samples/multiple-datasources. Используемая версия загрузочной пружины: 2.0.0.RELEASE Используемая мной версия spring.cloud.task.version: 1.2.2.RELEASE.

Это приложение отлично работает на моем локальном компьютере, но при развертывании на AWS я получил следующую ошибку с определением класса: CustomTaskConfigurer.java.который определен так же, как здесь: https://github.com/spring-cloud/spring-cloud-task/blob/master/spring-cloud-task-samples/multiple-datasources/src/main/java/io/spring/configuration/CustomTaskConfigurer.java

Сообщение об ошибке выглядит примерно так:

исключение: org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем 'org.springframework.cloud.task.configuration.SimpleTaskConfiguration ': сбой вызова метода init;вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'customTaskConfigurer', определенного в файле [/home/vcap/app/BOOT-INF/classes/com/xxx/configuration/CustomTaskConfigurer.class]: бобсоздание экземпляра через конструктор не удалось;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.xxx.configuration.CustomTaskConfigurer $$ EnhancerBySpringCGLIB $$ bc80cd46]: конструктор сгенерировал исключение;Вложенное исключение - java.lang.IllegalStateException: невозможно создать TaskExecutionDao.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Если это проблема с несколькими источниками данных, вы можете попробовать пометить ее как @Primary.Полезно обеспечить лучшую трассировку стека.

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

Основной причиной этой ошибки является то, что когда я разрабатывал приложение локально, я настраивал локальный компонент источника данных для postgresql, как показано ниже: @Bean @Primary @ConfigurationProperties ("spring.datasource") public HikariDataSource sourceDataSource () {return DataSourceBuilder.создать () тип (HikariDataSource.class) .build ().}

Этот компонент читает свойства в файле application.properties, которые идентифицируют имя пользователя и пароль для локального postgres.Когда это приложение развернуто в облаке, оно будет подключаться к базе данных облака вместо локальных баз данных, что означает, что URL, имя пользователя и пароль больше не верны.После добавления конфигурации для облака эта ошибка исчезла.

Но эта трассировка стека исключений говорит только о том, что она не может создать taskExecutionDao. Пользователю действительно трудно исправить проблему, увидев такое сообщение об ошибке.

...