如何在 Tomcat 8.5 中部署 Spring boot 时使用外部配置文件

2024-01-03

我的 Spring Boot 应用程序 (2.1.1.RELEASE) 作为 WAR 部署在 Debian 9 系统下的 Tomcat 8.5 服务器中。除其他外,它使用以下文件来配置应用程序:

  • myApplication.properties(Spring的主配置文件)
  • log4j2.xml

两者都在src/main/resources.

我的问题是如何配置 Tomcat 和 Spring Boot 以允许我拥有一个目录/home/oliver/conf其中包含这两个文件,以便覆盖下定义的默认值src/main/resources(然后在WEB-INF/classes在爆发的战争中)。

以下是我已采取的步骤。

首先,作为我正在处理的项目的要求,我通过编辑更改了默认的 Tomcat 基目录以指向另一个位置/etc/init.d/tomcat8 :

CATALINA_HOME=/usr/share/tomcat8
CATALINA_BASE=/home/oliver

My /home/oliver/conf包含 Tomcat 和 Spring 配置的文件夹如下所示:

- Catalina/
- context.xml
- web.xml
- server.xml
- ...
- myApplication.properties
- log4j2.xml
- otherAppConfFile.properties
- ...

因为Spring寻找application.properties默认情况下,我正在使用@PropertySource注释指定另一个文件:

@SpringBootApplication
@PropertySource({classpath: myApplication.properties})
public class MyApp extends SpringBootServletInitializer {...}

我尝试添加-Dspring.config.location=file:/home/oliver/conf/myApplication.properties to JAVA_OPTS定义于/etc/default/tomcat8,并且它可以工作(正确覆盖嵌入文件),但是例如如果我尝试添加file:/etc/oliver/conf/log4j2.xml改成前面的JVM参数,就不起作用了。

我读了一些有关 Spring“环境配置文件”的内容,但如果可能的话不想使用它们。

当我启动 Tomcat 并发出ps aux | grep tomcat命令,我看到所有 JAVA_OPTS 参数都按预期定义,而且我还看到以下内容:

-classpath :/home/oliver/conf:/usr/share/tomcat8/bin/.... -Dcatalina.base=/home/oliver -Dcatalina.home=/usr/share/tomcat8

我对 Tomcat 的类路径和 Spring 的类路径的关联方式以及我应该如何解决这个问题有点困惑。

如果我在启动时看到的类路径包括/home/oliver/conf目录中,为什么里面的文件不覆盖嵌入的属性文件(myApplication.properties、log4j2.xml ...)?是否可以看到该文件夹​​并将其添加到 Spring 的类路径中?

EDIT :

附带说明一下,下面可能有各种文件/home/oliver/conf需要考虑到这一点,例如log4j2.xml + myApplication.properties + 密钥库.jks所以我不确定我可以信赖-Dspring.config.location and -Dlogging.config完全。


我从你的问题中了解到你正在尝试做这样的事情。

-Dspring.config.location=file:/etc/oliver/conf/log4j2.xml

我认为属性 spring.config.location 是提供用于配置的属性文件的位置,而不是 log4j2.xml 。 您可以通过设置logging.config的值来设置myApplication.properties中日志文件的位置,例如

logging.config=file:/etc/oliver/conf/log4j2.xml

或者你可以尝试

-Dlogging.config=file:/etc/oliver/conf/log4j2.xml

UPDATE

这就是我在生产系统中所做的事情。创建文件 setenv.sh 并输入以下命令。

export JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=/path/to/keystore/keystore.jks -Djavax.net.ssl.trustStorePassword=changeit -Dspring.profiles.active=qa -Dspring.config.location=/path/to/config/ -Dfws_log=/path/to/logfile/location -Xms512m -Xmx1024m -Dsecret.key=somesecretkey"

您可以在此文件中添加任意数量的键值映射,所有这些映射都会在 Tomcat 启动时加载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Tomcat 8.5 中部署 Spring boot 时使用外部配置文件 的相关文章

  • 在Spring中使用什么样的“EventBus”?内置、Reactor、Akka?

    我们将在几周后启动一个新的 Spring 4 应用程序 我们希望使用一些事件驱动的架构 今年 我到处读到有关 Reactor 的内容 在网上查找时 我偶然发现了 Akka 所以现在我们有3个选择 春天的ApplicationEvent ht
  • JAVA - Xuggler - 组合 MP3 音频文件和 MP4 电影时播放视频

    使用 JAVA 和 Xuggler 以下代码组合 MP3 音频文件和 MP4 电影文件并输出组合的 mp4 文件 我希望在合并音频和视频文件时应自动播放输出视频文件 String inputVideoFilePath in mp4 Stri
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • Pivotal Cloud Foundry - 连接到外部 Oracle 数据库

    我正在创建一个 Spring boot 应用程序 该应用程序连接到一个不由 PCF 管理 或驻留在外部 的 Oracle 数据库 在我的本地开发环境中 我在 application properties 文件中配置了数据库连接详细信息 有人
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • Git/gitolite:设置 gitolite 后移动存储库

    我正处于让 Git 和 Gitolite 工作的最后阶段 这是目前的情况 Gitolite 管理下的存储库没有工作副本 因此 您要做的就是创建另一个包含工作副本的存储库 提交数据并将它们推送到 gitolite 管理的存储库 最简单的方法是
  • 当我使用自定义入口点时,为什么 webpack 无法找到 React?

    我在 Webpack 中设置了一个自定义入口点 但在我的 React 代码行中收到错误 import React from react Webpack 能够构建它 但它不会拦截该路径 因为 Chrome 给了我这个控制台错误 未捕获的类型错
  • 服务人员强制更新新资产

    我一直在阅读html5rocks Service Worker 简介 http www html5rocks com en tutorials service worker introduction 文章并创建了一个基本的服务工作线程来缓存
  • 为什么 Firefox 中的背景过滤器不起作用?

    我使用背景过滤器 模糊 30px 但 Firefox 不支持此属性 moz 背景过滤器 模糊 60px 也不起作用 默认不支持https caniuse com css backdrop filter https caniuse com c
  • 如何在 vstest 控制台上获取自定义输出?

    我在 Visual Studio 2012 中编写了一些数据驱动的测试 当我通过在 Visual Studio 2012 命令提示符中运行以下命令从控制台运行测试时vstest console exe myTestSuite dll 我收到
  • 什么是 Querydsl 'Q'

    我看到了 Querydsl 的示例 但我不明白其中的 QEmployee 是什么 QEmployee employee QEmployee employee QEmployee e new QEmployee e query from em
  • 如何在 Intellij 中启用 CSS 编辑

    我刚刚切换到 IntelliJ IDEA 因为我认为它非常适合开发 JavaFX 应用程序 我一定做错了什么 因为当我编辑 CSS 文件时 没有代码完成 当我尝试创建新的 CSS 文件时 没有 CSS 文件选项 我正在使用 IntelliJ
  • 如何在 Rails 中将文本转换为 unicode?

    在我的数据库中 我有以下条目 id name info 1 John Smith 正如您所知 信息栏显示错误 但它实际上是韩语 在 Chrome 中 当我将浏览器编码从 UTF 8 切换为韩语 我认为是 euc kr 时 我实际上设法这样查
  • 如何安装jar库?

    我已经下载了 ANTLR Java 运行时库 这是一个 jar 文件 它包含 org antlr runtime 我应该把它放在哪里以便 Java 编译器可以找到它 我需要提取它吗 如果相关的话 我正在使用 NetBeans 目前 假设您可
  • msbuild xmlupdate 删除 web.config 中的节点

    如何使用 MSBuild 社区任务删除 web config 中的节点 我可以使用 XmlUpdate 任务更新节点 但无法删除节点 有任何想法吗 XmlUpdate 任务可以做到这一点 我正在使用 2010 年 11 月 30 日的夜间版
  • 将纬度和经度转换为 3D 空间中的点

    我需要将纬度和经度值转换为 3 维空间中的点 我已经尝试了大约 2 个小时 但没有得到正确的结果 The 等长方形坐标来自openflights org http openflights org data html 我尝试了几种组合cos
  • JIRA api 的 .NET 包装器?

    我正在开发 JIRA 实现 需要使用 API 有谁知道 JIRA SOAP API 的现有 NET 包装器吗 在 Visual Studio NET 项目中 右键单击项目引用并选择 添加服务引用 输入 JIRA 的 WSDL 描述符的 UR
  • 如何捕获datePicker关闭事件

    我正在使用日期选择器 它工作正常 我的网页很少需要使用开始日期和结束日期进行一些计算 我希望能够在日期选择器关闭时进行计算 我在用 有人有什么建议吗 您正在寻找onClose method 参考API文档here http api jque
  • 公共 IP 地址是否可以用作 Google OAuth 重定向 URI?

    我正在尝试设置一个需要用户的 Google Latitude 信息的网络服务 因此我使用 Google OAuth 来获取用户授权内容 但是 当尝试在 Google API 控制台中为 Web 应用程序客户端 ID 设置重定向 URI 时
  • 在 int main() 中使用类函数

    我在从主程序调用函数时遇到问题 这些功能必须在我的班级中 如何从 int main 访问它们 include
  • 使用 Delphi 7 进行开发时,准备好使用 Delphi 2009 及更高版本了吗?

    我正在 Delphi 7 中开发一个 Word 插件 但很快我会将其升级到 Delphi 2010 如您所知 因为 2009 版本 Delphi 引入了新的字符串类型Unicode字符串等于关键字string 另一方面 根据这个线程 htt
  • 使用 AJAX 调用 WordPress 简码

    我想使用切换按钮运行短代码 如果开关为 ON 我会调用一个短代码 如果它为 OFF 我会调用另一个 作为测试 我尝试通过 AJAX 单击单个链接来调用短代码 它给出了以下内容 文件 page recherche php a href CLI
  • gitlab CI期间激活conda环境

    My gitlab ci yml文件看起来像这样 anomalydetector image continuumio miniconda 4 7 10 stage build tags docker script conda env cre
  • 是否可以在 Xcode 7 自动化 UI 测试中存根 HTTP 请求?

    我一直在尝试在 Xcode 7 自动化 UI 测试中拦截和存根 模拟 HTTP 请求 使用诸如OHHTTP存根 https github com AliSoftware OHHTTPStubs 没有运气 下面是我如何尝试在 UI 测试文件的
  • 如何在 Tomcat 8.5 中部署 Spring boot 时使用外部配置文件

    我的 Spring Boot 应用程序 2 1 1 RELEASE 作为 WAR 部署在 Debian 9 系统下的 Tomcat 8 5 服务器中 除其他外 它使用以下文件来配置应用程序 myApplication properties