Ho usato WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat e alcuni altri negli ultimi 10 anni. Quindi, se stavo prendendo in considerazione un nuovo progetto, mi farei prima alcune domande. Una cosa che non metterei più in discussione è che rifiuterei di usare i JSP se non fossi stato torturato fino a quando non avrei pianto per la mia mamma.
Devo essere compatibile / distribuire a un prodotto specifico a causa del mandato di qualcuno? Non c'è modo di ignorarli o convincerli altrimenti? Se è così, c'è la tua risposta.
Devo usare gli EJB? Veramente? Evitali, se possibile, sono davvero necessari solo per sistemi di grandi dimensioni di livello aziendale. Ricorda che sono solo strumenti e strumenti importanti (qualcuno può dire "Golden Sledgehammer"?). Sono pesantemente abusati, quindi chiedo davvero se ne hai bisogno. Se ne hai bisogno, ciò rimuove diverse opzioni tra cui la mia preferita, Jetty.
Devi usare una delle altre principali tecnologie J2EE come JMS, ESB, ecc.? Se è così, e non puoi davvero farne a meno, allora sei di nuovo vincolato a un contenitore J2EE completo. Pensa e indaga attentamente prima di impegnarti in BPM, ad esempio, ed evita AquaLogic BPM a (quasi) tutti i costi - è brutto all'estremo.
Se devi davvero utilizzare un contenitore J2EE completo, considera prima l'open-source perché è più robusto, meglio supportato e più economico. Hanno una base clienti più ampia e interazioni di supporto più aperte, quindi tendono a ottenere soluzioni migliori più velocemente. Tuttavia, la resina è immatura e la eviterei rispetto a GlassFish o JBoss - ho trovato problematico implementare e supportare. Preferirei JBoss a causa della sua più ampia base di clienti, maturità, ecc. GlassFish è più difficile da incorporare in un processo di compilazione / distribuzione automatizzato, ma potrebbe essere più bello per alcune delle sue caratteristiche specifiche (se ne hai bisogno).
Ho un motivo speciale per aver bisogno di Apache? Quindi inclinati verso Tomcat, forse più qualcosa.
Posso accontentarmi solo dei servlet? Quindi userei Jetty: è la soluzione più leggera, più veloce, più semplice e più flessibile. Se mi sto appoggiando a non poter usare Jetty, metterei in dubbio tutte le mie ipotesi sul perché. Si applica YAGNI.
La cosa migliore è usare StringTemplate / WebStringTemplate su Jetty: una soluzione pulita, robusta, veloce e gestibile senza costi di licenza, solida reputazione e supporto, ecc. È da qui che inizio oggi.
La maggior parte delle applicazioni / sistemi scelgono molte fantasiose funzionalità J2EE quando tutto ciò di cui hanno veramente bisogno sono servlet e JDBC con un'architettura / design decente. Domanda perché pensi di aver bisogno di più.
Tra i contenitori completi, eviterei WebLogic e WebSphere a meno che tu non stia supportando un sito Web pubblico MAJOR (il sito Web del mio attuale datore di lavoro è distribuito su WebLogic e ottiene undici + milioni di accessi al mese, altri sono stati comparabili). La vera pretesa di fama di WebLogic è il loro clustering relativamente semplice, ma evita le loro caratteristiche di blocco del fornitore proprietario a (quasi) tutti i costi. WebSphere è semplicemente un incubo che eviterei letteralmente a tutti i costi - mi rifiuto di fare progetti che coinvolgono WebSphere dopo aver fatto un paio in passato. Nessuno dei due prodotti vale le enormi spese di licenza, a meno che tu non abbia veramente un bisogno particolare che guida l'uso di una funzione proprietaria. In un decennio come architetto / ingegnere senior per molte aziende di Fortune 500, non ho ancora visto un tale bisogno. D'altro canto,
Anche per i siti Web pubblici molto grandi e ad alto traffico, i prodotti proprietari sono ancora discutibili. Preferirei spendere quel multimilionario di tasse di licenza su un buon hardware e un po 'di tempo di qualità da una manciata di consulenti davvero bravi per affrontare una semplice soluzione di scalabilità. I milioni in più all'anno potrebbero quindi essere utilizzati per produrre qualcosa degno di vendita su quel bel sito Web ...
EDIT: un altro pezzo da considerare ...
Di recente ho incontrato Terracotta . Sto ripensando a tutto e sto cercando di implementarlo presto in un sistema significativo. In particolare, Terracotta fa il clustering meglio di ogni altra cosa, quindi NON consiglierei MAI PIÙ WebLogic per il suo clustering.