Frage

Ich versuche, herauszufinden, wie man eine große (40-50 MB) EAR-Datei durch eine ziemlich langsame VPN-Verbindung zum Server zu implementieren. Die EAR enthält EJB und IST-Projekte in Glassfish erstellt, und 90% der Dateigröße von einem externen Abhängigkeitsbibliothek verwendet.

  1. Hat jemand kam mit einer Strategie für elegante Implementierung in Produktionssystem von Netbeans, wo der Einsatz (über das Netzwerk) für nur getan wird, was wirklich (dh benötigt wird nur ein IST, nicht die gesamte EAR oder nur ein lib, nicht die gesamte Bibliotheken Teilprojekt).

  2. auf den ersten Punkt Verwandte, wie externe Abhängigkeit Libs in Netbeans von Projekt zu trennen, so dass das Projekt compiliert auf Entwicklung Maschine, aber wenn die EAR / IST / EJB erstellt wird es nicht alle die Abhängigkeit JAR-Dateien enthält , die es riesig machen.

Vielleicht brauchen wir benutzerdefinierte Ant-Skript zu schreiben? Starten Sie Maven verwenden?

Danke für solche Antworten,

Bozo

War es hilfreich?

Lösung

Hier ist der Grund ist es eine schlechte Idee, Ihre Abhängigkeiten aus einer EAR und in ein gemeinsames Verzeichnis zu verschieben: durch alle Abhängigkeiten innerhalb der EAR zu halten, die App-Server ist in der Lage sauber undeploy / redeploy dass EAR und den Raum zurückzugewinnen, dass es innerhalb der JVM-Heap (für Sun JVMs, die Permgen) verwendet. Wenn Sie einige Abhängigkeiten in eine gemeinsam genutzten Bibliothek bewegen, laufen Sie Gefahr, dass diese Abhängigkeiten werden einen harten Bezug auf ein Objekt halten innerhalb der EAR definiert. Dies bedeutet, dass die EAR-Klassen können nicht entfernt werden, und schließlich Ihre App-Server nach dem Ausführen von Permgen Raum abstürzen.

Mein Vorschlag von SSH basierte auf der Annahme, dass „VPN“ mittleren Windows-SMB, die viel Hin und her Kommunikation hat beim Kopieren von Dateien. SSH (oder richtiger gesagt, SCP oder RSYNC), können Sie die volle Bandbreite der Verbindung verwendet werden.

Wenn dies immer noch zu langsam ist, sollte man sich in Ihrer Infrastruktur zu verändern. Da VPN-Firmennetz mir schon sagt, können Sie vielleicht eine Maschine zu bauen bekommen auf demselben Netzwerksegment wie die Bereitstellung Maschine einrichten. Aus einem Prozess Sicht ist dies eine viel bessere Idee sowieso: Sie sollen nicht baut von einer Entwickler-Workstation werden bereitstellen. Stattdessen sollten Sie die Quelle in einer sauberen Umgebung überprüfen, erstellen einen Build, laufen Tests, und dann bereitstellen.

Eine Alternative ist, zu sehen, ob Ihr Träger app-serve „explodierte Ohren.“ - wenn ja, dann nur Sie die JAR-Dateien hochladen, die sich geändert haben

Andere Tipps

Ein vernünftiger Ansatz könnte Ihre EAR baut lokal, und verwenden Sie dann rsync die Datei über spiegeln und dann eine Umschichtung auslösen. Da die meisten Teile einer EAR-Datei nicht ändern, wenn die zugrunde liegenden Gläser nicht ändern tun, werden Sie einen großen Nutzen aus dem rsync-Algorithmus erhalten.

Warum nicht Sie Ihrer Bibliothek Gläser zu / Glasfischen Installation kopieren dir / Glasfischen / domains / domain1 / lib und tun sie nicht verpacken sie in Ihr Ohr-Datei?

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