Quando è opportuno utilizzare un EAR e quando dovrebbe essere le tue applicazioni in guerre?

StackOverflow https://stackoverflow.com/questions/1364273

Domanda

Abbiamo molte applicazioni Spring web per fare in un server WebLogic e siamo curiosi di sapere quando le guerre dovrebbero andare in un EAR e quando dovrebbero solo esistere come guerre. Di tanto in tanto, le guerre dovranno accedere JAR logica comune, ma non vedo il motivo per cui questi avrebbero bisogno di andare in un EAR quando potrebbero semplicemente essere confezionati nelle guerre.

Da quanto ho capito, se diverse guerre sono in un EAR e avete bisogno di modificare una di quelle guerre, è necessario ridistribuire l'intero EAR per aggiornare il server. Ciò farà sì che tutte le guerre di rimbalzo. Se non fossero in un EAR, tuttavia, ho potuto solo aggiornare il prima guerra e sarebbe l'unico a rimbalzo.

Cosa c'è di sbagliato con avere 100 diversi file WAR in piedi da sola e l'utilizzo di JAR confezionati e librerie condivise (usando WebLogic)?

Grazie per tutta la comprensione!

È stato utile?

Soluzione

Se hai a disposizione solo file WAR, quindi un EAR è di utilità limitata, che serve solo come un contenitore di distribuzione per le vostre guerre. È possibile salvare un po 'di troppo grosso condividendo JAR tra le due guerre in questo modo, ma che in sé non è enorme convincente.

Le orecchie sono essenziali, tuttavia, quando si tratta di applicazioni JavaEE / J2EE completo, che utilizzano le guerre, EJB, JMS, risorse JCA, ecc Le interazioni e le dipendenze tra i componenti di questo genere di applicazioni è di gran lunga più facile da gestire in un EAR.

Ma se quello che tu stai usando Weblogic è un contenitore di WAR, allora si potrebbe anche utilizzare un contenitore di vaniglia servlet come Tomcat o Jetty, a tutti l'uso funzionale si ottiene fuori di Weblogic.

Altri suggerimenti

Sono d'accordo con quasi tutti (in genere) posto su commenti di skaffman.

Se stai usando primavera senza EJB si può attaccare con un file WAR, naturalmente. Non c'è bisogno di un orecchio che posso vedere.

Tuttavia, se la primavera applicazione utilizza POJO message-driven posso vedere dove saresti ancora distribuisce un file WAR su WebLogic di approfittare di JMS.

Un orecchio potrebbe essere necessario se hai EJB o JCA, ma non direi che JMS mandati un EAR. Ho usato JMS e implementato un file WAR su WebLogic e ha funzionato bene.

Se si decide di andare con Tomcat e distribuire un WAR lì, è ancora possibile mantenere la funzionalità JMS se si utilizza ActiveMQ.

L'argomento per confezionare guerre multiple in un orecchio può essere interessante se si esegue in situazione che il mio ultimo datore di lavoro ha fatto, in cui si dispone di un insieme comune di vasi di libreria che vengono utilizzati da più guerre, e la dimensione di tale raccolta di JAR è considerevole. Nella nostra particolare situazione, la dimensione totale di 3 guerre con i comuni JAR confezionati in ciascun WAR pari a 124MB. Individuando i JAR nella EAR contenimento e la configurazione del percorso di classe di ciascun WAR utilizzare quei vasi, l'impronta EAR che conteneva i 3 WAR è stato ridotto a 40 MB. Mi piacerebbe prendere in considerazione che un motivo valido.

La presenza di più librerie condivise, piuttosto non dovrebbe essere la ragione per andare per un EAR, come JAR (o un insieme di JAR) può sempre essere distribuito come "libreria" a weblogic che può quindi essere condivisa da tutte le guerre . Isn' giusto?

Non c'è niente di sbagliato in realtà con un solo la distribuzione guerre, gli sviluppatori hanno interesse a ottenere compiti incontrato più rapidamente possibile. Ciò significa che spesso prenderanno sul debito tecnico, e se sono in una squadra di tutto rispetto, che puliranno il debito.

Questo presenta però un problema, che cosa succede quando si evita la complessità delle orecchie, e condividere un vaso con l'aggiunta al server di applicazione? Molto più comune nella guerra unica squadra, sta scaricando tutti i tipi di complessità delle applicazioni per il server di applicazione. Semplicemente perché era più facile da implementare, nella loro spesso eccessivamente assegnato pianificazione. Non li biasimo per questo a tutti, ma ora abbiamo un nuovo problema. Un server di applicazione standard non può essere utilizzata, è necessario effettuare le personalizzazioni lato del sistema. Effettivamente l'applicazione web è il sanguinamento in tutto il sistema. La persona che gestisce il server di applicazione, ora deve anche conoscere i dettagli specifici di applicazione ... in un ambiente aziendale, questo presenta un problema molto chiaro.

Gli sviluppatori possono quindi assumersi la responsabilità del sistema, ma hanno ancora bisogno di rispettare le scadenze. Essi inevitabilmente sanguinare in tutto il sistema operativo, nonché, e improvvisamente gli sviluppatori sono gli unici amministratori possibili. Se un amministratore non sa cosa l'applicazione utilizza lato sistema, possono molto causare gravi problemi. Queste linee chiare finiscono sempre in dita che puntano in entrambe le direzioni, stati di sistema sconosciuti, e l'isolamento di squadra.

Non hanno di utilizzare un EAR, allora? No, io sono un ingegnere di sistemi, quindi dico sempre che possano implementare il proprio application server come un'altra applicazione commerciale. All'interno di un RPM, se la distribuzione di un WAR è come altri application server supportati, quindi ottengono il gasdotto distribuzione WAR. Se no, allora RPM tutto in uno ... Una volta, non permettendo alla squadra di esternare i loro costi, quindi EAR diventare una grande idea.

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