在Wildfly上设置每个应用程序属性

时间:2016-12-09 19:54:10

标签: java wildfly wildfly-10

我通常是Tomcat人,但我们在我们的一个客户项目中使用Widlfly。

使用Tomcat,我可以设置每个应用程序"属性通过为每个应用程序创建单独的上下文,就像Tomcat documentation very nicely says

这样,我的WebApp1.war可以与my.property.value=Cat一起投放,而WebApp2.war可以与my.property.value=Dog同时投放。

我还没有找到与Wildfly相似的文档/功能。您能否建议我如何单独为应用程序设置属性,或者指向文档?

谢谢。 : - )

1 个答案:

答案 0 :(得分:0)

我认为,我找到了解决此问题的方法。假设app1.warapp2.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.propertiesapp2.properties的WAR / JAR内部和外部。因此,您可以将两个文件放入wildfly/standalone/configuration中,并可以独立配置两个WAR。

相关问题