Quali sono le decisioni di progettazione coinvolte nella scelta di come esporre un'applicazione Web Java?

2

Ci sono molti modi per esporre un'applicazione Web Java al consumatore: contenitore di applicazioni (JBoss ecc.), contenitore servlet (Tomcat ecc.), OSGi (Knopflerfish ecc.), WAR autoeseguibile (Winstone ecc.) e così via. Ci sono delle considerazioni chiare su dove un approccio dovrebbe essere preferito rispetto ad un altro?

Ad esempio, una raccolta di WAR autoeseguibili in esecuzione come processi Unix raw sovraperforma le stesse applicazioni distribuite all'interno di Tomcat tenendo conto dei problemi di amministrazione e scalabilità?

    
posta Gary Rowe 10.04.2012 - 16:30
fonte

1 risposta

2

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.

    
risposta data 12.04.2012 - 14:10
fonte

Leggi altre domande sui tag