Jar, czy War?

0

Hej,
mam pewne pytanie odnośnie postawienia aplikacji na serwerze. Otóż przerabiałem pewną wewnętrzną aplikację w firmie. Wcześniej była pakowana jako WAR i stawiana na serwerze na Tomcacie. Przy pracy z ta apką postanowiłem zmienić sposób jej pakowania na JAR z wbudowanym Tomcatem w spring boota. Wydaje mi się, że jar - zwłaszcza biorąc pod uwagę wielkośc apki (jest nieduża) - jest zgrabniejszym rozwiązaniem, jednak usłyszałem sprzeczne opinie.

Teraz pytanie ode mnie - jaki sposób deploymentu aplikacji na serwerze wybiera się aktualnie najczęściej? Czy korzysta się z pakowania jar, czy war? Jeśli JAR, to jak później uruchomić tą aplikację na serwerze? Ma ona działać na Win Server 2016 i czytałem gdzieniegdzie, że jary najlepiej uruchamiać jako usługi Windows. Czy to prawda?

Z góry dzięki za wszystkie odpowiedzi ;)

2

make jar not war

0

Okej, zatem skoro potwierdziło się, że jar będzie lepszą opcją to dajcie jakieś wskazówki jaka jest najwygodniejsza forma deploymentu jarów. Jako Windows service?
Uruchamianie z konsoli odpada, bo apka ma scheduler i musi działać 24 godziny na dobę, a dostęp do serwera mam tylko poprzez pulpit zdalny (jest on postawiony z tego co pamiętam na jakimś vmware).

0
Belka napisał(a):

Okej, zatem skoro potwierdziło się, że jar będzie lepszą opcją to dajcie jakieś wskazówki jaka jest najwygodniejsza forma deploymentu jarów. Jako Windows service?
Uruchamianie z konsoli odpada, bo apka ma scheduler i musi działać 24 godziny na dobę, a dostęp do serwera mam tylko poprzez pulpit zdalny (jest on postawiony z tego co pamiętam na jakimś vmware).

Moim zdaniem klasyczny sposób (Tomcat jako windows service) i WAR jest sprawdzony.
Filozofia fat jar lepiej się wpisuje w cloud, Docker, te sprawy, szybkie poodnoszenie w jednym kroku gdy moc obliczeniowa jest potrzebna, oraz w stanowisko developerskie/testowe

I na odwrót, sam goły fat jar jest bardzo daleki od bycia usługą. Musiałby dostać jakiś wrapper w C/C++
Usługa charakteryzuje się tym, że jest zarejestrowana (nawet jeśli jest nieaktywna). Jak zarejestrować JAR, potencjalnie zmienny???

6
AnyKtokolwiek napisał(a):

Moim zdaniem klasyczny sposób (Tomcat jako windows service) i WAR jest sprawdzony.

Zgadzam się, że jest to sposób sprawdzony i działa w setkach tysięcy miejsc. Wszędzie tak samo źle.
Jest to rozwiązanie niebezpieczne i niefektywne.

NIebezpieczne, bo istotne konfiguracje (wersja tromcata, xmle, dodatkowe jary) mogą być łatwo/niechcący ręcznie zmieniane.
Z tego wychodzą fajne numery jak wersja tomcata na produkcji jest inna niż u developerów i jeszcze inna niż na testach (ostatnio widziałem taki problem).
Nieefektywne, ze względu na:

  • najgorsze : okazyjne walki z classpathem i konfliktami jarów, (raz na ruski rok, ale boli)
  • wolniejszy start zwykle,
  • dodatkową zabawę w konfiguracje (xml itp),

Przy okazji embedded tomcat (w jar) tylko troche poprawia sytuację.
(fajniejsze rozwiazania to generalnie te, które nie bazują na servletach - ale jeśli sprawa dotyczy starej aplikacji to nie ma co się szarpać).

Co do "jar jako serwis" - google pokazuje wiele rozwiązań jar service wrapper widziałem kilka w użyciu, może nawet jakiś konfigurowałem, ale niestety to nie moja działka (serwery na windows).

0

Nie znam się na Windowsie (dlatego się wypowiem :D), ale jeżeli Docker działa na Windowsie, to mógłbyś spróbować uruchomić apkę w kontenerze dockerowym w tle (z parametrem -d -> detached mode). Na unixach powinno to działać podobnie jak parę innych opcji odpalania aplikacji jako proces w tle (np. service/screen/tmux/nohup/itd.). Nie uruchamiałem czegoś takiego produkcyjnie, więc trudno mi coś napisać o stabilności takiego podejścia. Jeżeli takie rozwiązanie nie wchodzi w grę, to chyba rzeczywiście musisz poszukać jakichś rozwiązań uniwersalnych dla wszystkich platform albo konkretnie Windows-specific.

0

Z tego co sprawdzałem dzisiaj, to mógłbym odpalić cmd, czy tam PowerShella i uruchomić jara standardową komendą jar, ale wtedy zachodzi obawa, że ktoś kto połączy się z serwerem "w innej sprawie" zamknie z jakiegoś powodu konsolę i apka padnie. Postanowiłem nie ryzykować w taki sposób, zwłaszcza że główną funkcjonalnością aplikacji jest scheduler odpalający się o wczesnych godzinach. Finalnie zatem chyba spakuję to w war.

1 użytkowników online, w tym zalogowanych: 0, gości: 1