Domanda

Ultimamente ho letto / imparato di più su Spring e su come si userebbe Spring in combinazione con altri strumenti open source come Tomcat e Hibernate. Sto valutando se Spring MVC potrebbe essere una possibile tecnologia sostitutiva per il progetto su cui lavoro, che utilizza WebLogic e MOLTO codice Java EE personalizzato. Il fatto è che ho sempre sospettato che la nostra soluzione fosse troppo ingegnerizzata e IN MODO più complessa di quanto debba essere. Sorprendentemente, è il 2009, eppure stiamo scrivendo le nostre classi di gestione delle transazioni e pooling di thread. E non è che siamo Amazon, eBay o Google, se sai cosa intendo. Pertanto, sto studiando un "più semplice è meglio" opzione.

Quindi, ecco la mia domanda: mi piacerebbe sentire le opinioni su come prendere la decisione che un server di applicazioni Java EE completo è necessario o meno. Come si misura " dimensione / carico / domanda su un'app Java EE Numero di utenti simultanei? Totale transazioni giornaliere? Come "pesante" un'app deve essere scaricata prima di alzare le mani in segno di resa e dire "OK, Tomcat non la sta tagliando, abbiamo bisogno di JBoss / WebLogic / WebSphere"?

È stato utile?

Soluzione

Non penso che la decisione di utilizzare un server Java EE completo o meno debba essere basata sul numero di utenti o transazioni. Piuttosto dovrebbe essere basato sulla necessità della funzionalità.

Nel mio attuale progetto ci stiamo effettivamente spostando da JBoss a Vancat Tomcat perché ci siamo resi conto che non stavamo usando nessuna delle funzionalità Java EE oltre i servlet di base. Tuttavia, stiamo usando Spring. Tra la gestione degli oggetti di base di Spring, la gestione delle transazioni e le funzionalità JDBC, non stiamo assistendo a un'esigenza convincente di EJB. Attualmente usiamo Struts 2 piuttosto che l'MVC di Spring, ma ne ho sentito parlare molto bene. In ogni caso, Spring si integra bene con una serie di framework Web Java.

Altri suggerimenti

Spring non tenta di sostituire alcune parti avanzate delle specifiche JavaEE, come JMS e JTA. Invece, si basa su quelli, rendendoli coerenti con il "modo di Primavera" e in generale rendendoli più facili da usare.

Se l'applicazione richiede la potenza di JMS e JTA simili, è possibile utilizzarli facilmente tramite Spring. Non è un problema con questo.

Google open source gran parte del loro codice. Se stai scrivendo cose di basso livello, invece di implementare il codice già scritto, spesso stai pensando troppo al problema.

Torna alla domanda attuale, Walmart.com, etrade.com, The Weather Channel e parecchi altri usa solo Tomcat. Gli addetti al marketing e alle vendite di IBM vorrebbero farti credere diverso, forse, ma Tomcat non ha limiti superiori.

Ad eccezione di EJB, non sono sicuro di ciò che manca a Tomcat e non sono un fan di EJB.

Ciò che Tomcat non offre oltre agli elementi più esotici di Java EE sono i bean di sessione (noti anche come EJB). I bean di sessione consentono di isolare l'elaborazione in modo efficiente. Quindi potresti avere un box per il front-end, un altro per i bean di sessione (business logic) e un altro per il database.

Dovresti farlo per almeno 2 motivi:

  1. Performance; Stai scoprendo che una scatola per gestire tutto sta caricando troppo la scatola. Separare i diversi strati in scatole diverse ti permetterebbe di ridimensionare. I bean di sessione sono anche in grado di caricare l'equilibrio a un livello più fine. Tomcat e altri servizi web di quel genere non hanno un clustering out of the box.
  2. Flessibilità; Ora che hai spostato la tua logica di business nel suo ambiente, puoi sviluppare un front-end alternativo che utilizza lo stesso layer, ma, ad esempio, era un front-end client spesso. O forse altri contesti vorrebbero usare i bean di sessione.

Anche se probabilmente dovrei sottolineare che se usi i servizi web per comunicare con quel livello intermedio, potrebbe anche essere su Tomcat!

L'unico motivo per utilizzare un server Java EE completo è se hai bisogno di transazioni XA distribuite, se non hai bisogno di transazioni XA allora puoi usare Spring + JPA + Tomcat + Bean Validation + JSTL + EL + JSP + Java mail.

Anche un server Java EE dovrebbe implementare JMS, ma non ha senso eseguire il server JMS nella stessa macchina virtuale del resto del server delle app, quindi se hai bisogno di JMS dovresti avere un server JMS separato.

Non sono assolutamente d'accordo con tutte le risposte fornite qui.

Tutto può essere aggiunto a Tomcat, inclusi EJB, CDI, JTA, Bean Validation, JAX-RS, ecc.

La domanda è: vuoi questo? Vuoi riunire tutte quelle dipendenze nelle versioni giuste e testare che tutto funzioni insieme, quando altri lo hanno già fatto?

Cerchiamo di essere chiari: nessuno usa solo Tomcat! Tutti aggiungono sempre un framework web, un contenitore di ioc, un orm, un gestore delle transazioni, servizi web, ecc. Ecc.

I server Java EE leggeri come TomEE includono già tutto questo e rendono l'esperienza dello stack completa di avere tutte queste cose integrate molto meglio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top