Używałem WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat i kilku innych w ciągu ostatnich ponad 10 lat. Tak więc, gdybym rozważał nowy projekt, zadałbym sobie najpierw kilka pytań. Jedną rzeczą, której już nie kwestionowałbym, jest to, że płasko odmówiłbym używania JSP, chyba że byłbym torturowany, dopóki nie zapłakałem za mamą.
Czy muszę być zgodny / wdrożyć w konkretnym produkcie z powodu czyjegoś mandatu? Czy nie ma sposobu, aby ich zignorować lub przekonać, że jest inaczej? Jeśli tak, oto twoja odpowiedź.
Czy muszę używać EJB? Naprawdę? Unikaj ich, jeśli to w ogóle możliwe - są naprawdę potrzebne tylko w bardzo dużych systemach klasy korporacyjnej. Pamiętaj, że to tylko narzędzia i to duże (czy ktoś może powiedzieć „Złoty młot”?). Są mocno nadużywane, więc naprawdę pytaj, czy ich potrzebujesz. Jeśli ich potrzebujesz, usuwa to kilka opcji, w tym mój ulubiony Jetty.
Czy musisz używać innych głównych technologii J2EE, takich jak JMS, ESB itp.? Jeśli tak, i naprawdę nie możesz się bez niego obejść, to znowu jesteś ograniczony do pełnego kontenera J2EE. Na przykład dokładnie przemyśl i zbadaj sprawę, zanim zdecydujesz się na BPM, i unikaj AquaLogic BPM za (prawie) wszelką cenę - jest to wyjątkowo brzydkie.
Jeśli naprawdę musisz używać pełnowartościowego kontenera J2EE, rozważ najpierw open-source, ponieważ jest on bardziej niezawodny, lepiej obsługiwany i tańszy. Mają większe bazy klientów i bardziej otwartą interakcję z pomocą techniczną, więc szybciej otrzymują lepsze poprawki. Jednak Resin jest niedojrzały i unikałbym go w stosunku do GlassFish czy JBoss - uważałem, że jest to problematyczne we wdrażaniu i wspieraniu. Wolałbym JBoss ze względu na szerszą bazę klientów, dojrzałość itp. GlassFish jest trudniejszy do włączenia do zautomatyzowanego procesu budowania / wdrażania, ale może być lepszy w przypadku niektórych jego specyficznych funkcji (jeśli ich potrzebujesz).
Czy mam szczególny powód, aby potrzebować Apache? Następnie pochyl się w stronę Tomcata, może plus coś.
Czy mogę zadowolić się tylko serwletami? Wtedy użyłbym Jetty - jest to najlżejsze, najszybsze, najłatwiejsze, najbardziej elastyczne rozwiązanie. Jeśli opieram się przeciwko możliwości korzystania z Jetty, kwestionowałbym wszystkie moje założenia, dlaczego. YAGNI ma zastosowanie.
Najlepiej jest używać StringTemplate / WebStringTemplate na Jetty: czyste, solidne, szybkie, łatwe w utrzymaniu rozwiązanie bez opłat licencyjnych, solidnej reputacji i wsparcia itp. Od tego zaczynam dzisiaj.
Większość aplikacji / systemów wybiera wiele wymyślnych funkcji J2EE, podczas gdy wszystko, czego naprawdę potrzebują, to serwlety i JDBC z przyzwoitą architekturą / projektem. Zapytaj, dlaczego uważasz, że potrzebujesz więcej.
Spośród pełnowartościowych kontenerów unikałbym WebLogic i WebSphere, chyba że wspierasz główną publiczną witrynę internetową (witryna mojego obecnego pracodawcy jest wdrażana w WebLogic i uzyskuje ponad 11 milionów odsłon miesięcznie, inne były porównywalne). Prawdziwym powodem do sławy WebLogic jest ich stosunkowo łatwe łączenie w klastry, ale unikanie ich zastrzeżonych funkcji blokowania dostawcy za (prawie) wszelką cenę. WebSphere to po prostu koszmar, którego uniknąłbym dosłownie za wszelką cenę - odmawiam realizacji projektów związanych z WebSphere po tym, jak zrobiłem kilka w przeszłości. Żaden z produktów nie jest wart ogromnych opłat licencyjnych, chyba że naprawdę masz specjalną potrzebę, która motywuje do korzystania z zastrzeżonej funkcji. W ciągu dziesięciu lat pracy jako starszy architekt / inżynier w wielu firmach z listy Fortune 500 nie widziałem jeszcze takiej potrzeby. Z drugiej strony,
Nawet w przypadku naprawdę dużych, publicznych witryn internetowych o dużym natężeniu ruchu, zastrzeżone produkty są nadal wątpliwe. Wolałbym raczej wydawać te wielomilionowe opłaty licencyjne rocznie na dobry sprzęt i trochę czasu spędzonego przez garstkę naprawdę dobrych konsultantów, aby zająć się prostym rozwiązaniem skalowalnym. Dodatkowe miliony rocznie można by następnie wykorzystać do wyprodukowania czegoś wartego sprzedaży na tej ładnej stronie internetowej ...
EDYCJA: kolejny element do rozważenia ...
Niedawno spotkałem Terracotta . Przemyślam wszystko i zamierzam wkrótce wdrożyć to w znaczącym systemie. W szczególności Terracotta radzi sobie lepiej z klastrowaniem niż cokolwiek innego, więc JUŻ NIE polecałbym WebLogic do tworzenia klastrów.