2009-08-05 9 views
2

Ich habe eine große monolithische Webapp, und wenn ich Änderungen an einem bestimmten Abschnitt der Webapp bin ich gezwungen, die gesamte App bereitzustellen.Zerlegen Webapp in mehrere Stücke (Tomcat)

Ich möchte diese in kleinere Brocken basierend auf Funktionalität zerlegen (zB In einer Banking-Website - Ich möchte Informationen aus der Online-Banking-Funktionalität zu trennen, also, wenn ich eine Änderung der Online-Banking-Funktionalität, ich Stellen Sie nur diesen Teil bereit)

Die Herausforderung hier ist die Existenz bestimmter gemeinsamer Elemente in der Webapp, wie eine gemeinsame Klasse, die über die Anwendung geteilt wird.

Irgendwelche Gedanken zu den verschiedenen Möglichkeiten, wie die Webapp-Partitionierung durchgeführt werden könnte? Vielen Dank.

Antwort

1

Dies ist nicht tomcat-spezifisch, aber im Allgemeinen, wenn Sie eine Web-Anwendung aufteilen, wollen Sie einen Weg haben, verschiedene Zustände über die verteilten Teile hinweg zu teilen. Sie können dies mit einer Datenbank oder einem Memcached-Speicher für die Sitzungsinformationen tun, aber stellen Sie sicher, dass jede Anwendung die allgemeinen Sitzungsdaten lesen kann (einige Frameworks verwenden einen Schlüssel zum Verschlüsseln der Sitzungsdaten und müssen alle den gleichen Schlüssel zum Lesen haben) es). Ich denke nicht, dass die meisten Cookie-Speicher für Sitzungsinformationen so hashen, dass der Cookie zwischen den Anwendungen nicht korrekt beibehalten wird.

Brechen nach Funktion macht am meisten Sinn. Sehen Sie, wo Sie Ihren Backend-Code trennen können. Wenn Sie nette, erholsame URLs haben, können Sie sich wahrscheinlich Ihre URLs ansehen, um gute Partitionen zu finden.

Auch wenn Sie einen großen statischen Abschnitt haben, den Sie separat aktualisieren, sollte das vielleicht von etwas anderem als Tomcat serviert werden.

Für allgemeine Klassen können Sie Klassenimplementierungen in ein jar in Ihrem tomcat/lib-Ordner einfügen. Sie wären für den gesamten Server verfügbar. Sie könnten nicht sehr gut auf Ihren Webkontext zugeschnitten werden (es sei denn, Sie haben den Kontext an sie weitergegeben) und Sie müssten den gesamten Server neu starten, um die JAR-Datei zu aktualisieren, damit Tomcat sie neu lädt.

Vielleicht können Sie etwas mit Schnittstellen arbeiten, die Ihnen mehr Unabhängigkeit in jeder Partition ermöglicht, so dass sie in irgendeiner Weise unabhängig kompilieren können. Vielleicht hilft Ihnen auch ein Aufruf einiger Remote-Methoden beim Verschieben gebräuchlicher Funktionen in ein einzelnes .jar oder .war.

+0

Danke Danivo. Es tut mir leid, dass meine Sitzung in meiner Frage nicht klar war, sie war nur ein Beispiel für eine gemeinsame Entität. Ich suche nach irgendeiner Komponente, die geteilt wird, z.B. Eine Klasse, die von der gesamten App verwendet wird. – rubyer

Verwandte Themen