Wann ist es angebracht eine EAR zu verwenden und wann sollten in WARs Ihre Anwendungen sein?

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

Frage

Wir haben viele Frühling Web-Anwendungen auf einem WebLogic-Server zu machen und sind gespannt, wenn WARs in einer EAR gehen sollten und wann sie sollten nur als WARs existieren. Gelegentlich, müssen die WARs den Zugriff auf gemeinsame Logik JAR-Dateien, aber ich sehe nicht, warum diese in eine EAR zu gehen brauchen würde, wenn sie nur in die WARs verpackt werden.

Von dem, was ich verstehe, wenn mehrere WARs in einer EAR sind, und Sie müssen eine dieser WARs ändern, müssen Sie die gesamte EAR umschichten den Server zu aktualisieren. Dadurch werden alle die Kriege führen prallen. Wenn sie nicht in einer EAR waren jedoch konnte ich nur aktualisieren, um die eine IST und es wäre der einzige, prallt sein.

Was ist mit mit 100 falsch verschiedenen WAR-Dateien allein stehend und mit verpackten JAR-Dateien und gemeinsam genutzte Bibliotheken (mit WebLogic)?

Vielen Dank für jede Einsicht!

War es hilfreich?

Lösung

Wenn alle SIND-Dateien sind, dann ist eine EAR von begrenzten Nützlichkeit und diente nur als Aufmarsch Container für Ihre WARs. Sie können ein bisschen aufblasen sparen durch JAR-Dateien zwischen den Kriegen in dieser Art und Weise zu teilen, aber das ist an sich nicht sehr groß überzeugend.

EARs wesentlich sind, aber wenn sie mit voller JavaEE / J2EE-Anwendungen handelt, die WARs, EJBs, JMS, JCA Ressourcen usw. Die Interaktionen und Abhängigkeiten zwischen den Komponenten dieser Art von Anwendungen ist wesentlich einfacher in einem verwalten EAR.

Aber wenn alles, was Sie Weblogic verwenden für einen Krieg Behälter ist, dann könnten Sie auch ein Vanille-Servlet-Container wie Tomcat oder Jetty verwenden, für alle die funktionale Nutzung Sie von Weblogic raus.

Andere Tipps

Ich bin einverstanden mit fast allen skaffman des (in der Regel) Fleck auf Kommentare.

Wenn Sie Frühling verwenden ohne EJBs können Sie mit einer WAR-Datei bleiben, natürlich. Keine Notwendigkeit für eine EAR, dass ich sehen kann.

Wenn Sie jedoch Frühling App Message-Driven POJOs verwendet, kann ich sehen, wo Sie würde immer noch eine WAR-Datei auf WebLogic einsetzen Vorteil von JMS zu nehmen.

Eine EAR könnte notwendig sein, wenn Sie EJBs oder JCA haben, aber ich würde nicht sagen, dass JMS eine EAR beauftragt. Ich habe verwendet JMS und eine WAR-Datei auf WebLogic bereitgestellt und es ist ganz gut funktioniert.

Wenn Sie sich entscheiden, mit Tomcat zu gehen und eine WAR dort bereitstellen, können Sie immer noch JMS-Funktionalität behalten, wenn Sie ActiveMQ verwenden.

Das Argument mehrere WARs in eine EAR verpacken kann überzeugend, wenn Sie in die Situation kommt, dass mein letzter Arbeitgeber hat, wo man einen gemeinsamen Satz von Bibliothek JAR-Dateien hat, die von mehreren WARs verwendet werden, und die Größe dieser Sammlung JAR-Dateien sind beträchtlich. In unserer speziellen Situation, die Gesamtgröße von 3 WARs mit dem gemeinsamen JARs in jeden IST verpackt betrug 124MB. Durch Anordnung der Gläser in den EAR enthält und die Konfiguration des classpath jedes WAR jene JARs zu verwenden, die Grundfläche des EAR, dass die 3 WARs enthielt, wurde zu 40 MB reduziert. Ich würde der Ansicht, dass ein zwingender Grund.

mehrere gemeinsam genutzte Bibliotheken Mit eher nicht der zwingenden Grund sein für eine EAR zu gehen, als JAR-Datei (oder Satz von JAR-Dateien) immer als „Bibliothek“ eingesetzt wird, auf Weblogic, die können daher von allen WARs geteilt werden . Isn‘es richtig?

Im Moment eigentlich falsch ist mit nur Kriege bereitstellen, haben die Entwickler ein Interesse daran Aufgaben schnell wie möglich erfüllt werden. Das bedeutet nehmen sie oft auf technische Schulden, und wenn sie in einem anständigen Team sind, werden sie diese Schuld reinigen.

Dies stellt jedoch ein Problem dar, was passiert, wenn man die Komplexität der EAH vermeiden, und ein Glas teilen, indem sie an die Anwendungsserver hinzufügen? Viel häufiger im Krieg nur Team wird Offloading alles mögliche Anwendungskomplexität auf den Anwendungsserver. Ganz einfach, weil es leichter war, in ihren oft über zugeteilt Zeitplan zur Umsetzung. Ich gebe ihnen keine Schuld für diese überhaupt, haben wir ein neues Problem jedoch jetzt haben. Ein Standard-Anwendungsserver kann nicht verwendet werden, müssen Sie die Systemseitige Anpassungen tun. Effektiv die Webapplikation blutet alles über das System. Die Person, die den Application-Server verwaltet, muss jetzt auch anwendungsspezifische Details ... in einer Unternehmensumgebung, dies stellt ein sehr klares Problem kennen.

Die Entwickler können dann auf Systemverantwortung übernehmen, aber sie müssen noch zu treffen Fristen. Sie bluten zwangsläufig überall auf das O als auch, und plötzlich die Entwickler sind die einzig möglichen Administratoren. Wenn ein Administrator nicht weiß, was die Anwendung Systemseite verwendet, können sie sehr viel zu großen Problemen führen. Diese unklaren Linien immer in den Fingern weisenden Ende in beiden Richtungen, unbekannten Systemzuständen und Team Isolation.

Haben sie dann eine EAR benutzen? Nein, ich bin ein Ingenieur-Systeme, so dass ich sagen, dass sie immer ihre eigenen Anwendungsserver wie eine andere kommerzielle Anwendung bereitstellen können. Innerhalb eines RPM, ein Krieg, wenn die Bereitstellung wie andere unterstützte Anwendungsserver ist, dann bekommen sie die WAR-Deployment-Pipeline. Wenn nicht, dann werden alle RPM in einem ... Einmal nicht so dass die Mannschaft ihre Kosten externalisieren, dann werden EARs eine großartige Idee.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top