0

I'm deploying my SpringBoot Application to a Tomcat 8.5 container. Similar as described here: http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html I modified my SpringBootApplication, so it's deployable as war.

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
}

Similiar to this question Activating Spring @Profile Using JNDI I wan't the application to select the active Profile using an JNDI entry.

I added an EnvironmentApplicationContextInitializer identical to the one shown in the accepted answer.

However: I do not use any web.xml. So the profile is not being picked up and used.

How do I make the SpringBootApplication using the EnvironmentApplicationContextInitializer?

Community
  • 1
  • 1
CyclingSir
  • 143
  • 1
  • 9
  • You don't need it... Just register `SPRING_PROFILES_ACTIVE` as a JNDI entry (or `spring.profiles.active`) and it will be read. You don't need anything else. – M. Deinum Jan 17 '17 at 09:11
  • Thanks, but (similar to the question linked) I have to reuse a already present JNDI-entry and mapping this entry is not an option either. So I'd like to know how to get the accepted solution in the linked question working with spring boot. – CyclingSir Jan 17 '17 at 09:30
  • Add it as an `initializer` . – M. Deinum Jan 17 '17 at 09:42

1 Answers1

0

Thanks to M Deinum's comment I found a solution:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        // this would be used if run via java -jar service.war
        // SpringApplication app = new SpringApplication(Application.class);
        // CustomApplicationContextInitializer initializer = new CustomApplicationContextInitializer();
        // app.addInitializers(initializer);
        // app.run(args);
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // this will be used within an app container
        CustomApplicationContextInitializer initializer = new CustomApplicationContextInitializer();
        return builder.initializers(initializer).sources(Application.class);
    }
}

Note the builder.initializers(initializer) part.

Community
  • 1
  • 1
CyclingSir
  • 143
  • 1
  • 9