Diese Dokumentation behandelt die Verwendung indizierter Bereitstellungsverzeichnisse.
Zur Indizierung wurde das Nummerierungsschema für Verzeichnisnamen der bereitgestellten Anwendungen eingesetzt. Dadurch wird es möglich, gezielt die JAR- oder Klassendatei einer bestimmten bereitgestellten Anwendung zu verändern. Dieser Mechanismus ist für die Windows-Plattform von besonderer Bedeutung, da Windows auf eine bereits geladene Datei eine Dateisperre legt und bei dem Versuch, die Datei zu überschreiben, eine Freigabeverletzung auftritt. Die Datei wird beim Sitzungsstart auf die Server-Instanz oder das IDE geladen. Beim Auftreten der Freigabeverletzung bestehen zwei Möglichkeiten:
Kompilieren Sie die aktualisierte Klassendatei (ursprünglich Teil dieser JAR-Datei) und fügen Sie sie an erste Stelle im Klassenpfad ein, damit sie vor älteren Klassen geladen wird. Lassen Sie die Anwendung dann von Sun ONE Application Server neu laden (sofern die Neuladefunktion aktiviert ist).
Aktualisieren Sie die JAR-Datei, erzeugen Sie eine neue EAR-Datei, und stellen Sie die Anwendung dann erneut bereit.
Auf der Solaris-Plattform ist eine erneute Bereitstellung nicht nötig, da dort keine Dateisperrungen stattfinden.
Wenn Sie eine bereits bereitgestellte Anwendung unter Windows ändern, um beispielsweise Kompilierungen, ANT-Dateikopien, IDE-Setup- oder andere Operationen durchzuführen, achten Sie auf eine weitere Änderung. Zur Umgehung der Dateisperre wird ein neues Verzeichnis mit erhöhter Indexnummer erzeugt. Beispielsweise wird auf der Solaris-Plattform die J2EE-Anwendung helloworld mit der folgenden Verzeichnisstruktur auf Sun ONE Application Server bereitgestellt:
appserv/domains/domain1/server1/applications/j2ee-apps/helloworld_1
Anschließend muss eine Änderung an einem Servlet vorgenommen werden, das Teil dieser bereitgestellten Anwendung ist (z. B. HelloServlet.java). Sun ONE Studio IDE wird gestartet, die Quelldatei für dieses Servlet wird geändert und mit dem genannten Verzeichnis als javac-Ziel kompiliert. Wenn die Quelle so an der richtigen Speicherposition kompiliert wurde, liegt eine Neuladedatei für diese Anwendung vor. Das Neulade-Flag in server.xml ist auf true gesetzt, und wenn die Serverinstanz ausgeführt wird, werden die Änderungen ohne erneute Assemblierung oder Bereitstellung der Anwendung wirksam.
Auf der Windows-Plattform kann die JAR- oder Class-Datei aufgrund der Dateisperre nicht bearbeitet oder aktualisiert werden. Auf Windows stehen die folgenden zwei Lösungsmöglichkeiten zur Verfügung:
Kompilieren Sie die geänderte Quelldatei, und fügen Sie die JAR- oder Class-Datei in classpath ein, damit die Änderungen wirksam werden.
Ändern Sie die helloworld-Quelle, assemblieren Sie sie und stellen Sie sie erneut bereit, ohne jedoch die vorherige Bereitstellung von helloworld zu entfernen.
Die zweite Methode ist die empfehlenswertere, da hierbei der Verzeichnisname der bereitgestellten Anwendung einen erhöhten Indexwert erhält. Nach einer weiteren Bereitstellung von helloworld sehen die Verzeichnisstrukturen wie folgt aus:
appserv/domains/domain1/server1/applications/j2ee-apps/helloworld_1
appserv/domains/domain1/server1/applications/j2ee-apps/helloworld_2
Die zweite Bereitstellung von helloworld erfolgt unter helloworld_2.