Spring boot, шаблон jdbc работает после запуска jar вручную, но не через cron. В чем может быть причина?

0

Вопрос

Я использую приложение spring boot через Amazon Ec2, которое подключается к базе данных Oracle. Файл application.properties имеет следующие соответствующие свойства-

hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
hibernate.show_sql=true
hibernate.format_sql=true

# dbcp2 settings
spring.datasource.dbcp2.initial-size=10
spring.datasource.dbcp2.max-total=100
spring.datasource.dbcp2.pool-prepared-statements=true
spring.jdbc.template.max-rows=500
spring.datasource.dbcp2.max-open-prepared-statements=100

logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE

# Schema
spring.appds.jdbcurl = jdbc:oracle:thin:@xx.r.zz.tt:1521/tttt
spring.appds.username = userAPP
spring.appds.password = passwordApp
spring.appds.driverClassName = oracle.jdbc.OracleDriver

Jar-файл приложения запускается через cron с правами суперпользователя из корневой папки.

С тех пор приложение не возвращало данные для запроса jdbctemplate.

SELECT *
FROM TABLE(lic.skd_es_i.e_g_app_sh_li(key => 54234
, date_from => NULL
, date_to => NULL
, use_country => 'IT'
, work_title => ''
, source => 'LOCAL'));

Однако один и тот же запрос всегда работал над базой данных.

Сегодня, когда я перезапустил jar приложения spring boot, вручную перейдя в расположение jar, он работает.

Мне любопытно знать, что могло быть причиной этого?

cron java jdbctemplate spring-boot
2021-11-15 10:44:16
1

Лучший ответ

0

Когда я запустил приложение, вручную перейдя в расположение jar и запустив приложение, запрос начал работать.

Затем я понял, что проблема заключалась в рабочем каталоге приложения spring boot. Cron запустил jar приложения, используя "root" в качестве рабочего каталога, в то время как Spring boot jar ожидал файл конфигурации – application.properties или application.yml – в 4 заранее определенных местах в следующем порядке приоритета:

  1. Подкаталог /config текущего каталога
  2. Текущий каталог
  3. Путь к классу /конфигурационный пакет
  4. Корневой путь к классу

Таким образом, указывая рабочий каталог для заданий cron в правильное расположение (в данном случае расположение spring boot jar), источники данных были загружены правильно.

Ссылка - https://www.baeldung.com/spring-properties-file-outside-jar

2021-11-18 12:57:02

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................