Aplikacja Spring Boot na zewnętrznym Apache Tomcat
Aplikacja Spring Boot na zewnętrznym Apache Tomcat
Wbudowany kontener servletów w Spring Boot ułatwia projektowanie aplikacji uwalniając programistę od konieczności utrzymywania i konfiguracji dodatkowego serwera. Wadą tego rozwiązania jest to, że nie postawimy np. na jednym serwerze więcej niż jednej aplikacji. Co zatem trzeba zrobić, aby wdrożyć swój projekt na zewnętrznym serwerze? W pliku pom.xml należy wyłączyć wbudowanego Tomcata:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>tomcat-embed-el</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> <exclusion> <artifactId>tomcat-embed-core</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> <exclusion> <artifactId>tomcat-embed-websocket</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> </exclusions> </dependency>
oraz zmodyfikować klasę startową nadpisując metodę configure z klasy bazowej SpringBootServletInitializer:
@SpringBootApplication public class UnicodeConverterApplication extends SpringBootServletInitializer{ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(UnicodeConverterApplication.class); } public static void main(String[] args) throws Exception { SpringApplication.run(UnicodeConverterApplication.class, args); } }
ponadto należy ustawić sposób pakowania aplikacji na war:
<packaging>war</packaging>
Uwaga: należy do wdrażania swojej aplikacji używać pliku .original. Ten drugi posiada również spakowane biblioteki wbudowanego Tomcata – katalog ./lib-provided co jest w tym przypadku zbędne.
Leave a comment