java - Spring Boot 应用程序在外部 tomcat 上运行时未读取特定于环境的 yaml 文件作为战争
问题描述
我正在开发一个 Spring 启动应用程序,我在外部 Tomcat 上作为战争包装运行,在 Tomcat 启动期间传递 spring 活动环境,使用-Dspring.profiles.active
它被 Spring 应用程序接受(在日志中可见)但是当我试图读取任何应用程序中定义application-dev.yaml
的属性无法读取 dev yaml 中定义的任何属性。
我已经设置了外部 Tomcat,并且在构建了 war 文件之后,我将它放在了 tomcat 中并启动了 tomcat。在 tomcatcatalina.bat
中,我设置了set "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=dev"
.
日志:
2019-07-21 17:16:50.472 INFO 26228 --- [ost-startStop-1] c.f.purge.PurgeServiceApplication : Starting PurgeServiceApplication v1.0.0 on BLR-LT-101133 with PID 26228 (C:\Users\skumar8\Documents\Tomcat\apache-tomcat-8.5.41\webapps\purge-service\WEB-INF\classes started by SKumar8 in **C:\Users\skumar8\Documents\Tomcat\apache-tomcat-8.5.41\bin)
2019-07-21 17:16:50.481 INFO 26228 --- [ost-startStop-1] c.f.purge.PurgeServiceApplication : The following profiles are active: dev**
2019-07-21 17:16:53.626 INFO 26228 --- [ost-startStop-1] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2019-07-21 17:16:53.715 INFO 26228 --- [ost-startStop-1] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 60ms. Found 0 repository interfaces.
2019-07-21 17:16:54.922 INFO 26228 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$ac299624] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-07-21 17:16:55.244 INFO 26228 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4652 ms
2019-07-21 17:16:58.855 INFO 26228 --- [ost-startStop-1] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2019-07-21 17:16:59.223 INFO 26228 --- [ost-startStop-1] org.hibernate.Version : HHH000412: Hibernate Core {5.3.9.Final}
2019-07-21 17:16:59.228 INFO 26228 --- [ost-startStop-1] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2019-07-21 17:16:59.702 INFO 26228 --- [ost-startStop-1] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
2019-07-21 17:17:01.641 INFO 26228 --- [ost-startStop-1] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.InformixDialect
2019-07-21 17:17:01.779 INFO 26228 --- [ost-startStop-1] o.h.e.j.e.i.LobCreatorBuilderImpl : HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
2019-07-21 17:17:02.556 INFO 26228 --- [ost-startStop-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-07-21 17:17:03.399 INFO 26228 --- [ost-startStop-1] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-07-21 17:17:03.609 WARN 26228 --- [ost-startStop-1] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2019-07-21 17:17:04.300 INFO 26228 --- [ost-startStop-1] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator'
2019-07-21 17:17:04.397 INFO 26228 --- [ost-startStop-1] c.f.purge.PurgeServiceApplication : Started PurgeServiceApplication in 15.37 seconds (JVM running for 61.826)
2019-07-21 17:16:50.472 INFO 26228 --- [ost-startStop-1] c.f.purge.PurgeServiceApplication : Starting PurgeServiceApplication v1.0.0 on BLR-LT-101133 with PID 26228 (C:\Users\skumar8\Documents\Tomcat\apache-tomcat-8.5.41\webapps\purge-service\WEB-INF\classes started by SKumar8 in C:\Users\skumar8\Documents\Tomcat\apache-tomcat-8.5.41\bin)
2019-07-21 17:16:50.481 INFO 26228 --- [ost-startStop-1] c.f.purge.PurgeServiceApplication : The following profiles are active: dev
2019-07-21 17:16:53.626 INFO 26228 --- [ost-startStop-1] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2019-07-21 17:16:53.715 INFO 26228 --- [ost-startStop-1] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 60ms. Found 0 repository interfaces.
2019-07-21 17:16:54.922 INFO 26228 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$ac299624] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-07-21 17:16:55.244 INFO 26228 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4652 ms
2019-07-21 17:16:58.855 INFO 26228 --- [ost-startStop-1] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2019-07-21 17:16:59.223 INFO 26228 --- [ost-startStop-1] org.hibernate.Version : HHH000412: Hibernate Core {5.3.9.Final}
2019-07-21 17:16:59.228 INFO 26228 --- [ost-startStop-1] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2019-07-21 17:16:59.702 INFO 26228 --- [ost-startStop-1] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
2019-07-21 17:17:01.641 INFO 26228 --- [ost-startStop-1] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.InformixDialect
2019-07-21 17:17:01.779 INFO 26228 --- [ost-startStop-1] o.h.e.j.e.i.LobCreatorBuilderImpl : HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
2019-07-21 17:17:02.556 INFO 26228 --- [ost-startStop-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-07-21 17:17:03.399 INFO 26228 --- [ost-startStop-1] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-07-21 17:17:03.609 WARN 26228 --- [ost-startStop-1] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2019-07-21 17:17:04.300 INFO 26228 --- [ost-startStop-1] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator'
2019-07-21 17:17:04.397 INFO 26228 --- [ost-startStop-1] c.f.purge.PurgeServiceApplication : Started PurgeServiceApplication in 15.37 seconds (JVM running for 61.826)
**Properties defined in application-dev.yaml**
spring:
cache:
jcache:
config: classpath:ehcache.xml
**Error log**
java.lang.IllegalArgumentException: Cannot find cache named 'akamaiSecretCache' for Builder
**Debug Option tried**
我确实尝试过在中定义的一些简单的单行属性,application-dev.yaml
但也没有运气。
解决方案
您能否确认 application-***.yml 文件是否打包在生成的 war 文件中?您可以简单地提取计算机上的war文件进行检查。如果它不包括在内,使用它来包括
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<warName>${app.jvm}</warName>
<webResources>
<resource>
<directory>${basedir}/src/main/resources/config</directory>
<targetPath>WEB-INF</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
推荐阅读
- android - kotlin notifyDataSetChanged 不更新视图
- rust - 防止不能借用`*self`作为不可变的,因为在访问结构中的不相交字段时它也被借用为可变的?
- node.js - MongoDB加入查询
- git - `git checkout SHA`后如何返回HEAD
- python - Python Jupyter Notebook pygame Image: FileNotFoundError: No such file or directory
- if-statement - Google 表格单元格信息
- javascript - 通过模态复选框过滤 Javascript 中的表格
- python - 时间限制超过黑客等级 - 如果知道未来价格,则最大利润
- javascript - getData 返回结果
- java - 如何生成特定范围内的随机颜色?