JBoss vs Tomcat ponownie [zamknięte]

138

Wydaje się, że jest to odwieczne pytanie (które jest :)), który serwer jest lepszy między Tomcat i JBoss, ale nie znalazłem jeszcze wystarczająco dobrej odpowiedzi, aby rozwiązać mój problem.

Wiem, że Tomcat to tylko silnik serwletów, a JBoss oferuje znacznie więcej funkcji po wyjęciu z pudełka, ale nie rozumiem, dlaczego Tomcat jest lepszy w niektórych sytuacjach niż jboss. Czytałem gdzieś, że JBoss ma architekturę, którą można podłączać i jeśli jest to wymagane, możesz odłączyć funkcje od JBoss, aby zasadniczo był to kontener serwletów tomcat. Jeśli tak jest, to czy nie lepiej jest to zrobić zamiast używać Tomcata, aby pozostawić pole do ponownego podłączenia.

Innym wyjaśnieniem, które znajduję na korzyść Tomcata, jest to, że jest lekki, czy oznacza to mniejsze zapotrzebowanie na pamięć, czy też umożliwia szybszą reakcję. Ponownie, muszę wiedzieć, że jboss nie ładuje komponentów zgodnie z wymaganiami, tj. Jeśli używam tylko serwletów, to jboss nie pominie pozostałych funkcji i automatycznie stanie się lekki.

Zasadniczo moja aplikacja nie ma żadnych funkcji Java EE, ale „lekkie” argumenty przemawiające za Tomcatem nie brzmią wystarczająco przekonująco z wyżej wymienionych powodów.

Proszę pomóż.

Edycja: w końcu zdecydowaliśmy się użyć tomcata i używamy go od ponad 6 miesięcy z dużą łatwością użytkowania. W rzeczywistości znaleźliśmy praktyczne zastosowanie, w którym mogliśmy bardzo łatwo uruchomić wiele instancji tomcat na tej samej maszynie serwera dla różnych programistów, to samo mogłoby być bardzo trudne w przypadku jboss.

Zauważyłem, że tomcat jest bezproblemowy w naszej pracy i dlatego może być właściwym wyborem, gdy nie używasz zbyt wielu funkcji Java EE. PS: Należy pamiętać, że nadal używamy Spring i Hibernate z Tomcat

Ashish
źródło
1
Uhh, czy JBoss nie integruje się z Tomcat?
Navi
4
@Navi: Niezupełnie. Zawiera rozwidloną wersję bazy kodu Tomcat, ale jest trochę rozbieżna.
skaffman
1
Prosta aplikacja internetowa bez funkcji j2ee powinna być łatwo wdrażana w każdym zgodnym kontenerze serwletów. Biorąc to pod uwagę, nie powinno mieć większego znaczenia, którego z nich użyjesz z góry. Zacząłbym od najprostszego do wdrożenia (Tomcat i Jetty dobrze mi służyły w przeszłości).
Joel
3
FYI, pod koniec 2011 roku Tomcat otrzymał certyfikat JavaEE 6 jako TomEE, aby odpowiedzieć na to odwieczne pytanie.
David Blevins,
1
zamknięte pytania z około 150 tysiącami wyświetleń, 125 głosami za i 0 przeciw? !! Wiem, że takie są zasady, ale muszę powiedzieć, że trzeba je trochę zmienić.
Muhammed Refaat

Odpowiedzi:

132

Po pierwsze fakty, żadne nie jest lepsze . Jak już wspomniałeś, Tomcat dostarcza kontener serwletów, który obsługuje specyfikację Servlet (Tomcat 7 obsługuje Servlet 3.0). JBoss AS, „kompletny” serwer aplikacji, obsługuje Java EE 6 (w tym Servlet 3.0) w jego aktualnej wersji.

Tomcat jest dość lekki i jeśli potrzebujesz pewnych funkcji Java EE poza Servlet API, możesz łatwo ulepszyć Tomcat, dostarczając wymagane biblioteki jako część swojej aplikacji. Na przykład, jeśli potrzebujesz funkcji JPA, możesz dołączyć Hibernate lub OpenEJB, a JPA działa prawie po wyjęciu z pudełka.

Jak zdecydować, czy użyć Tomcata, czy pełnego stosu Java EE serwera aplikacji :

Rozpoczynając projekt, powinieneś mieć pojęcie, czego on wymaga. Jeśli pracujesz w środowisku dużego przedsiębiorstwa, JBoss (lub dowolny inny serwer Java EE) może być właściwym wyborem, ponieważ zapewnia wbudowaną obsługę np .:

  1. Obsługa wiadomości JMS na potrzeby integracji asynchronicznej
  2. Silnik usług internetowych (JAX-WS i / lub JAX-RS)
  3. Możliwości zarządzania, takie jak JMX i skryptowy interfejs administracyjny
  4. Zaawansowane zabezpieczenia, np. Natychmiastowa integracja z katalogami innych firm
  5. Plik EAR zamiast obsługi „tylko” plików WAR
  6. wszystkie inne "świetne" funkcje Java EE, których nie pamiętam :-)

Moim zdaniem Tomcat jest bardzo dobrym rozwiązaniem, jeśli chodzi o aplikacje zorientowane na przeglądarkę internetową, przeznaczone dla użytkowników. Jeśli w grę wchodzi integracja zaplecza, należy rozważyć (przynajmniej) serwer aplikacji Java EE. Wreszcie, migracja WAR opracowanej dla Tomcata do JBoss powinna trwać 1 dzień.

Po drugie, należy również wziąć pod uwagę użycie w swoim środowisku. W przypadku, gdy Twoja organizacja już obsługuje, powiedzmy, 1000 instancji JBoss, zawsze możesz to zrobić, niezależnie od konkretnych wymagań (weź pod uwagę takie aspekty, jak koszt operacji lub podnoszenie umiejętności). Oczywiście dotyczy to odwrotnie.

moje 2 centy

Dom
źródło
13

Spójrz na TOMEE

Posiada wszystkie funkcje potrzebne do zbudowania kompletnej aplikacji Java EE.

Deb J
źródło
7

Z pewnością zwróciłbym się do TomEE, ponieważ chodzi o to, aby Tomcat domyślnie zapewniał brak integracji JavaEE 6. To rodzaj bardzo dobrego kompromisu

Romain Manni-Bucau
źródło
6

Ściśle mówiąc; Bez funkcji Java EE Twoja aplikacja prawie wcale nie potrzebuje serwera aplikacji ;-)

Jak inni zauważyli, JBoss ma (mniej więcej) pełny stos Java EE, podczas gdy Tomcat jest tylko kontenerem internetowym. JBoss może być skonfigurowany tak, aby służył tylko jako kontenery internetowe, wtedy byłby to po prostu cienkie opakowanie wokół dołączonego kontenera internetowego tomcat. W ten sposób mógłbyś mieć prawie tak samo lekkiego JBossa, który byłby po prostu cienkim „opakowaniem” wokół Tomcata. To byłoby prawie tak samo lekkie.

Jeśli nie potrzebujesz żadnych dodatków, które oferuje JBoss, wybierz ten, który najbardziej Ci odpowiada. Który z nich jest dla Ciebie najłatwiejszy w konfiguracji i utrzymaniu?

Jon Martin Solaas
źródło
1
jak trudne jest korzystanie z usług internetowych i jmx z tomcat, czy możesz podać dobre referencje / linki
Ashish
2

Wyczytałem również, że na niektórych serwerach na przykład jeden potrzebuje tylko adnotacji w kontekście trwałości, ale na niektórych serwerach wstrzykiwanie powinno być wykonywane ręcznie.

Antti Tanskanen
źródło