Jak uruchomić aplikację Spring Boot na serwerze Jetty

24 października 2015, Dariusz Wawer

Z drobną pomocą Maven’a możliwe jest uruchomienie aplikacji Spring Boot na wielu wbudowanych serwerach. Ponieważ Spring Boot to „pod maską” dalej standardowy Spring, więc uruchomienie na środowisku Java EE też nie stanowi problemu. Po weryfikacji okazuje się jednak, że uruchomienie aplikacji bazującej Spring Boot na istniejącej instancji Jetty wymaga modyfikacji w pom.xml. W tym artykule znajdziesz informacje o tym, co i jak trzeba dostosować. Jeśli chcesz od razu zobaczyć jak wygląda gotowa konfiguracja, to pobierz przykładową aplikację (spring boot, baza hsql, hibernate), uruchom i przejrzyj poszczególne pliki.

Przełączenie się na Jetty zamiast Tomcat dla komendy spring-boot:run

Domyślnie Spring Boot dla uruchamiania aplikacji z wykorzystaniem komendy spring-boot:run wykorzystuje serwer Tomcat. Przełączenie się na Jetty jest stosunkowo proste:

Wystarczy, że w pom.xml wyłączymy zależność starter-tomcat i dodamy zależność starter-jetty.

Instalowanie i uruchamianie na serwerze Jettty

Na początku wydawało mi się, że wystarczy przejść krok po korku wspomniany wyżej post z bloga Springa. Niestety próba uruchomienia na Jetty po prostej podmianie kończyła się następującym błędem:

Okazuje się, że pomimo wykluczenia zależności starter-tomcat, Spring Boot próbuje załadować implementację DataSource z Tomcat’a.

Możemy rozwiązać ten problem z wykorzystaniem jednego z dostępnych narzędzi implementujących pulę połączeń. Na rynku znajdziemy szereg gotowych rozwiązań open-source tego typ, m. in.: DBCPHikari, C3p0, BoneCP. Nam ostatnio najbardziej podoba się Hikari, więc musimy dodać następującą zależność do pom.xml:

Żeby możliwe było użycie tej implementacji musimy wykluczyć zależność tomcat-jdbc z artefaktu starter-jdbc:

Konfiguracha puli połączeń Hikari

Hikari wymaga skonfigurowania trochę innych właściwości niż standardowe tomcat-jdbc, a dokładnie mówiąc musimy ustawić jdbcUrl zamiast url. Przykładowa konfiguracja dla Hikari i bazy danych Oracle wygląda następująco:

Więcej informacji odnośnie konfigurowania puli połączeń HikariCP znajdziesz w dokumentacji Hikari. Jeśli postanowisz wykorzystać którąkolwiek z innych implementacji puli połączeń pamiętaj, aby przyjrzeć się szczegółowym właściwościom, które wymagają konfiguracji, bo tak jak w przypadku Hikari mogą być konieczne drobne zmiany w stosunku do domyślnie używanego tomcat-jdbc.

Przykładowa aplikacja

Tutaj znajdziesz przykładową aplikację, która po wystartowaniu komendą spring-boot:run uruchomi się na serwerze Jetty. Aplikacja jest dosyć prosta – udostępnia 2 metody REST: /set/{param}/{value} and get/{param}, ale pozwala przetestować cały stos aplikacyjny (wywołanie, zapis do bazy, odczyt z bazy) z wykorzystaniem wspomnianego HikariCP, Hibernate i bazy danych HSQL.

Tagi: , , , , , , , , , ,

Zapraszamy do kontaktu!

Pretius jest firmą tworząca oprogramowanie wspierające biznes.
Tworzymy aplikacje webowe wykorzystując: Java, Oracle DB, Oracle Apex, AngularJS.
Skontaktuj się z nami, aby porozmawiać o tym jak możemy pomóc w realizacji Twojego projektu!