2017-01-17 8 views
0

Я развертываю приложение SpringBoot в контейнере Tomcat 8.5. Как описано здесь: http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html Я модифицировал свой SpringBootApplication, поэтому он развертывается как война.Настройка Spring @Profile от JNDI для SpringBoot

@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); 
    } 
} 

похож на этот вопрос Activating Spring @Profile Using JNDI я wan't приложение для выбора активного профиля с помощью записи JNDI.

Я добавил EnvironmentApplicationContextInitializer, идентичный показанному в принятом ответе.

Однако: я не использую никаких web.xml. Таким образом, профиль не подбирается и не используется.

Как создать SpringBootApplication с помощью EnvironmentApplicationContextInitializer?

+0

Вам это не нужно ... Просто зарегистрируйте 'SPRING_PROFILES_ACTIVE' как запись JNDI (или' spring.profiles.active'), и она будет считана. Тебе ничего не нужно. –

+0

Спасибо, но (похоже на вопрос связан) Я должен повторно использовать уже существующую запись JNDI, и сопоставление этой записи также не является вариантом. Так что я хотел бы знать, как получить принятое решение в связанном вопросе, работая с весенним ботинком. – CyclingSir

+0

Добавьте его как 'initializer'. –

ответ

0

Благодаря M Deinum's комментарий Я нашел решение:

@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); 
    } 
} 

Обратите внимание на builder.initializers(initializer) часть.

 Смежные вопросы

  • Нет связанных вопросов^_^