2016-04-11 3 views
0

Мы разрабатываем решение для нескольких мандаторов для нескольких стран, таких как Швеция, Нидерланды, Германия и т. Д. Мы стремимся иметь 1 файл WAR для каждого мандатора и хотели бы иметь все работает в 1 tomcat. Возможно ли, что это интегрировано в встроенный tomcat Spring-Boot?Весенняя загрузка нескольких файлов WAR в 1 Tomcat

+0

Вложенный tomcat Spring Boot использует один экземпляр tomcat для каждого приложения. Если вы хотите, чтобы все работало в одном tomcat, почему бы не пойти с традиционным развертыванием? –

+0

@XtremeBiker Поскольку мы стремимся использовать встроенный tomcat вместо внешнего (runnable JAR file) –

+0

Затем оберните источники для каждого мандатора в том же проекте. У вас будет runnable jar, который запускает все из них. –

ответ

0

Если мандаторы являются разными файлами webapps/war, то вы можете добавлять войны/веб-приложения в EmbeddedServletContainer (Tomcat), используя метод tomcat.addWebapp.

В основной класс весенней загрузки добавьте следующий компонент.

@Bean 
public EmbeddedServletContainerFactory servletContainerFactory() { 
    return new TomcatEmbeddedServletContainerFactory() { 

     @Override 
     protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(
       Tomcat tomcat) { 
      // Ensure that the webapps directory exists 
      new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs(); 

      try { 
       Context context = tomcat.addWebapp("/Sweden","Sweden.war"); 
       tomcat.addWebapp("/Netherlands","Netherlands.war"); 
       tomcat.addWebapp("/Germany","Germany.war");     
       context.setParentClassLoader(getClass().getClassLoader()); 
      } catch (ServletException ex) { 
       throw new IllegalStateException("Failed to add webapp", ex); 
      } 
      return super.getTomcatEmbeddedServletContainer(tomcat); 
     } 

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