我需要一个免费的,可部署的配置项myapp1.war,它可以从tomcat /
lib文件夹中检索配置文件。由于我在同一个Tomcat上同时存在其他Web应用程序:myapp2.war,myapp3.war,因此需要以下布局:
tomcat/lib/myapp1/application.properties
tomcat/lib/myapp2/application.properties
tomcat/lib/myapp3/application.properties
这样,我可以构建战争文件,而无需在战争内部创建任何属性文件,然后将其部署在任何服务器上。
我已经阅读了Spring文档,但是它解释了以jar运行时如何设置位置:
java -jar myapp.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
对于多个同时存在的战争文件,我无法弄清楚该如何做。
我想知道这是否可行,还是应该放弃Spring Boot并回到传统的Spring MVC应用程序。
一个解决方案可能是按照此问题的]建议将application- {profile}
.properties加载为@PropertySource批注,但随后的日志记录系统将无法正常工作,如您在文档中所见。
日志记录系统在应用程序生命周期的早期进行了初始化,因此在通过@PropertySource批注加载的属性文件中找不到此类日志记录属性。
这意味着您在application- {profiles} .properties中的日志记录属性如下:
logging.config=classpath:myapp1/logback.xml
logging.path = /path/to/logs
logging.file = myapp1.log
将被忽略,日志系统将无法正常工作。
为了解决这个问题,我已经在配置应用程序时使用SpringApplicationBuilder.properties()方法在开始时加载属性。在那里,我设置了Spring
Boot用来加载所有application- {profiles} .properties的“ spring.config.location”:
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
return springApplicationBuilder
.sources(Application.class)
.properties(getProperties());
}
public static void main(String[] args) {
SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(Application.class)
.sources(Application.class)
.properties(getProperties())
.run(args);
}
static Properties getProperties() {
Properties props = new Properties();
props.put("spring.config.location", "classpath:myapp1/");
return props;
}
}
然后,我已将属性文件从src / main / resources移至src / main / resources / myapp1
.
├src
| └main
| └resources
| └myapp1
| └application.properties
| └application-development.properties
| └logback.xml
└─pom.xml
在pom.xml中,我必须将嵌入式tomcat库的范围设置为“提供”。另外,要从最终战争中排除src / main / resources /
myapp1中的所有属性文件,并生成免费的,可部署的战争:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<packagingExcludes>
**/myapp1/
</packagingExcludes>
</configuration>
</plugin>
然后在Tomcat中
├apache-tomcat-7.0.59
└lib
├─myapp1
| └application.properties
| └logback.xml
└─myapp2
└application.properties
└logback.xml
现在,我可以生成免配置的war并将其放到apache-tomcat-7.0.59 /
webapps文件夹中。属性文件将使用类路径(对于每个Web应用程序)独立解析:
apache-tomcat-7.0.59/lib/myapp1
apache-tomcat-7.0.59/lib/myapp2
apache-tomcat-7.0.59/lib/myapp3
我需要一个自由配置、可部署的war,MYAPP1.war,它可以从Tomcat/lib文件夹中检索配置文件。由于我有其他web应用程序共存于同一Tomcat上:myApp2.war、myApp3.war,所以我需要这样的布局: 这样,我就可以构建war文件,而不需要war中的任何属性文件,并将其部署在任何服务器上。 我读过Spring文档,但它解释了当作为JAR运行时如何设置位置: 我不知道如何在
问题内容: 我想将我的react组件打包为一个lib。 下面是webpack我的设置: 然后以这种方式在我的其他组件中要求包装后 并且上述组件的webpack设置是: 编译文件后,它显示错误: 我认为错误是来自外部设置,原因是在我删除后,它可以工作。 我搜索了一些相关的答案,但无法解决。 有人对此有任何想法吗?谢谢。 问题答案: 我找到了答案! 原因是需要设置不同的外部值(参考doc)。 由于我将
问题内容: 我在Tomcat 7中配置Web应用程序时遇到问题。在我的WAR文件中,有一个属性文件,它包含特定于环境的属性。我试图在服务器上覆盖该配置文件,以便将同一WAR文件部署到多个环境。 我听说有一种方法可以使用中的替换配置文件来执行此操作。这是我很难弄清楚的方法。 另外,是同一台Tomcat服务器上运行的许多软件之一,它不能作为本地主机运行。我希望能够为多个Web应用程序解决此问题。 问题
问题内容: 如何使用Tomcat从Web应用程序外部的公共文件夹中提供图像文件?我不想在其他端口上使用第二个Apache文件服务器,因为图像文件是同一应用程序的一部分。而且我不想在webapps内部创建指向公共文件夹的符号链接,因为我的应用程序被部署为war文件....是否有一个更简单的解决方案,类似于将默认servlet用于webapps内部的静态内容,用于webapps外部的静态内容 问题答案
SpringApplication将从以下位置的application.properties文件中加载属性,并将它们添加到Spring环境中: 列表按优先级排序(列表中较高位置定义的属性会覆盖较低位置定义的属性)。 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config
我在Tomcat中部署了基于Spring Boot的war文件。我无法使用外部应用程序属性文件。我正在使用follows提供外部属性文件的路径 我也用qoutes试过 这些属性不起作用,spring正在读取绑定在war文件中的属性文件。有谁能帮我一下吗?谢谢