Wygląda na to, że w przestrzeni java istnieje aktualny trend, aby odejść od wdrażania aplikacji internetowych Java do kontenera serwletu Java (lub serwera aplikacji) w postaci pliku wojny (lub plik ear), a zamiast tego pakiet jest aplikacją jako słojem wykonywalnym z wbudowanym serwletem/serwerem HTTP, takim jak pomost. Chodzi mi o to bardziej w ten sposób, w jaki nowsze ramy wpływają na to, jak nowe aplikacje są opracowywane i wdrażane, a nie w jaki sposób aplikacje są dostarczane do użytkowników końcowych (ponieważ, na przykład, rozumiem, dlaczego Jenkins używa wbudowanego kontenera, bardzo łatwego do pobrania i przejścia). Przykłady frameworków przyjmujących opcję pliku wykonywalnego jar: Dropwizard, Spring Boot i Play (nie działa on na kontenerze serwletów, ale serwer HTTP jest osadzony).Porady dotyczące rozmieszczania plików wojennych w stosunku do pliku wykonywalnego z osadzonym kontenerem
Moje pytanie pochodzi ze środowiska, w którym wdrożyliśmy nasze aplikacje (do tej pory głównie Struts2) na serwerze aplikacji Tomcat, jakie zmiany, najlepsze praktyki lub uwagi należy wprowadzić, jeśli planujemy użyć podejście do kontenera osadzonego? Obecnie mamy około 10 rodzimych aplikacji działających na pojedynczym serwerze tomcat, a dla tych niewielkich aplikacji możliwość dzielenia zasobów i zarządzania na jednym serwerze jest dobra. Nasze aplikacje nie są przeznaczone do rozpowszechniania wśród użytkowników końcowych w celu działania w ich środowisku. Czy jednak, jeśli zdecydujemy się wykorzystać nowszą strukturę Java, czy to podejście powinno się zmienić? Czy przejście na słoiki wykonywalne jest stymulowane przez rosnące wykorzystanie wdrożeń w chmurze (np. Heroku)?
Jeśli masz doświadczenie w zarządzaniu wieloma aplikacjami w stylu Play w porównaniu z tradycyjnym wdrażaniem pliku wojny na jednym serwerze aplikacji, podziel się swoim spostrzeżeniem.
Dzięki za odpowiedź, masz kilka dobrych punktów. Chmura jest czynnikiem napędzającym! W naszej sytuacji czułbym się bardziej komfortowo, mając serwer chmury w modelu Amazon Web Services (Infrastructure as a Service), a nie tylko wdrażając aplikację Google App Engine (platforma jako usługa), ale przypuszczam, że to jest stara szkoła myśli. Tak więc na wynos: jeśli nie planujemy wykorzystać chmury na platformie jako usługi, to raczej wdrożenie wojny to raczej droga niż zarządzanie wieloma niezależnymi aplikacjami internetowymi Java na jednym serwerze. Jeszcze raz dziękuję za Twój wkład. –
Tylko 2cc: możesz uruchomić wiele _jar-apps_ na jednej maszynie z niewielkim serwerem HTTP jako proxy, np .: nginx, może być dodatkowo używany do typowego ruchu internetowego, jak niestandardowy CDN, load balancer, firewall, itp. Więc rozsądnie jest rozważ użycie go przy planowaniu dużego ruchu (ma lepszą wydajność, a następnie obsługę każdego żądania - nawet dla statycznych zasobów za pośrednictwem głównej aplikacji). – biesior