Non ho una visione formalizzata delle considerazioni in quanto tale, ma posso elencare alcuni fattori nel prendere la decisione:
Ridistribuzione: la ridistribuzione frequente causa problemi nelle EAR con frammentazione della memoria, quindi con quale frequenza dovremo pubblicare gli aggiornamenti. Avranno bisogno di un'interruzione sui server (se distribuiti su JBoss / Weblogic)?
Risorse condivise - Accesso a risorse condivise come JDBC, ecc. se raggruppate nello stesso EAR. Questi causeranno contese e posso apportare modifiche a una senza influenzare l'altra? Solitamente tutti i WAR vengono influenzati dalle modifiche apportate a livello di EAR.
Aggiornamenti ai server - La distribuzione con Tomcat e così via richiede un possibile aggiornamento al contenitore web di base per sfruttare le nuove funzionalità Java / server quando disponibili. Esempio Tomcat dal 6 al 7.
Dimensione: dimensioni scaricabili del pacchetto di installazione se si distribuisce il contenitore insieme all'applicazione. Quanto è grande dovremmo tenerlo?
Controllo sulla configurazione - Configurazione interna della mia app oltre all'accesso a config.xml o server.xml sui contenitori sottostanti. Vogliamo che i clienti li modifichino? oppure raggruppiamo tutti questi elementi con le impostazioni preferite?
Impronta di memoria - Ovviamente i server in piena regola richiedono più Heap (Xmx) di un'app Winstone
Che cos'è il client già in esecuzione - I server esistenti nel loro data center potrebbero essere riutilizzati se l'infrastruttura di Weblogic o Tomcat è già installata (ad esempio).
Requisiti del cluster: un ulteriore requisito di prestazioni richiede l'aggiunta di server in un cluster? Quanto è buono il clustering JBoss rispetto all'esecuzione su Tomcat e qual è l'impatto sul codice dell'applicazione nell'ambiente cluster w.r.t. memorizzazione nella cache ecc.