Z konieczności wykorzystania paru bibliotek w Javie wybrałem JRuby + Rails do nowego projektu.
Klient nie ma środowiska JavaEE, a projekt to pojedyncza webaplikacja (bez Enterprise’owych cudów).
Zakładając, że serwer = Linux i jest dostęp do roota, jak najwydajniej wdrożyć produkcyjnie taką aplikację?
Jest sobie np. taki Tomcat. Ale hasło “reference servlet implementation” nasuwa mi skojarzenie “jestem wolny jak cholera ale robię wszystko wg. standardów”. Słusznie?
Najbardziej podoba mi się Jetty, ale tutaj też nie wiem czy warto przed nim postawić jeszcze Apacha/nginxa?
Tomcat i jetty to 2 równorzędne serwery, oba stabilne i szybkie. Generalnie jetty jest mniej rozbudowany, ale w codziennym użytkowaniu nie widzę różnicy.
mimo, że jest taka możliwość to nie radzę stawiać więcej niż jednej aplikacji na danym serwerze, lepiej zrobić osobną konfiguracje dla danej aplikacji, instalujesz server, javę i aplikację na jednym koncie, w ten sposób łatwiej jest zarządzać konfiguracją
ja używam jettiego i po każdym wgraniu wara restartuje serwer
przygotuj się na zwiększone użycie ramu
monitoruj zużycie pamięci, jak skończy się pamięć (np. w PermGen) to Garbage collector lubi zamulić aplikację (spędziłem nie jedną noc na debugowaniu takich błędów)
P.S. Nie używałem javy do jruby więc moje doświadczenia opierają się na korzystaniu z innych frameworków niż rails
To może offtopic ale Jetty wymaga bardzo niewielkich zasobów. I można się nim fajnie pobawić.
Jakiś czas temu udało mi się odpalić Jetty (chyba iJetty, jakąś okrojoną wersję) na Androidzie i podpiąć do tego proste renderowanie stronek via JRuby. Totalnie bezużyteczne ale działa