我通常是Tomcat人,但我们在我们的一个客户项目中使用Widlfly。
使用Tomcat,我可以设置每个应用程序"属性通过为每个应用程序创建单独的上下文,就像Tomcat documentation very nicely says。
这样,我的WebApp1.war
可以与my.property.value=Cat
一起投放,而WebApp2.war
可以与my.property.value=Dog
同时投放。
我还没有找到与Wildfly相似的文档/功能。您能否建议我如何单独为应用程序设置属性,或者指向文档?
谢谢。 : - )
答案 0 :(得分:0)
我认为,我找到了解决此问题的方法。假设app1.war
和app2.war
是不同的战争,并且名字不同。
然后,您可以在运行时使用应用程序初始化过程为每个应用程序定义不同的spring.config.name
。而不是application.properties
,每个WAR(以及每个jar都需要查找)都在寻找一个特定于应用程序的属性文件。
/** Main Entry Point for this Application */
@SpringBootApplication(scanBasePackages = "de.mach.selfservices")
public class Application extends SpringBootServletInitializer implements WebApplicationInitializer {
// JAR init
public static void main(String[] args) {
SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);
if (!System.getProperties().containsKey("spring.config.name")) {
builder = builder.properties("spring.config.name:app1");
}
builder.run(args);
}
// WAR init
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
if (!System.getProperties().containsKey("spring.config.name")) {
builder = builder.properties("spring.config.name:app1");
}
return builder.sources(Application.class);
}
}
第二个应用程序然后在app2
中有spring.config.name
。在这两种情况下,SpringBoot的默认行为都符合预期。它在app1.properties
或app2.properties
的WAR / JAR内部和外部。因此,您可以将两个文件放入wildfly/standalone/configuration
中,并可以独立配置两个WAR。