Spring boot, szablon jdbc działa po uruchomieniu jar ręcznie, ale nie przez cron. W czym może być przyczyna?

0

Pytanie

Używam aplikacji spring boot przez Amazon Ec2, który łączy się z bazą danych Oracle. Plik application.properties posiada następujące odpowiednie właściwości-

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

Plik Jar aplikacji uruchamiany przez cron z uprawnieniami roota z tego folderu.

Od tego czasu aplikacja nie odzyskiwał dane dla zapytania 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'));

Jednak jeden i ten sam wniosek zawsze pracował nad bazą danych.

Dziś, kiedy rozpoczęło jar aplikacji spring boot, ręcznie przechodząc do lokalizacji jar, to działa.

Jestem ciekaw, co mogło być tego przyczyną?

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

Najlepsza odpowiedź

0

Gdy uruchomiłem ręcznie, przechodząc do lokalizacji jar i uruchamiając aplikację, żądanie zaczął działać.

Następnie zdałem sobie sprawę, że problem polegał w katalogu roboczym aplikacji spring boot. Cron uruchomił jar aplikacji za pomocą "root" jako katalogu roboczego, podczas gdy Spring boot jar spodziewałem się plik konfiguracyjny – application.properties (właściwości) lub application.yml – w 4 z góry określonych miejscach w następującej kolejności pierwszeństwa:

  1. Podkatalog /config bieżącego katalogu
  2. Aktualny katalog
  3. Drogę do klasy /pakiet konfiguracyjny
  4. Ścieżka główna do klasy

W ten sposób, wskazując katalog roboczy dla zadań cron w prawidłowe położenie (w tym przypadku lokalizacja spring boot jar), źródła danych zostały pobrane poprawnie.

Link - https://www.baeldung.com/spring-properties-file-outside-jar

2021-11-18 12:57:02

W innych językach

Ta strona jest w innych językach

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