2011-01-05 9 views
1

Wenn ich JBoss 6 starte, sehe ich, dass es alle JAR-Dateien aus WEB-INF/lib im Ordner tmp/vfs/automountXXX entpackt. Z.B. hase-server.war enthält Bibliothek asm-3.1.jar, dann in tmp ich die folgenden Ordner mit Dateien sehen:JBoss 6 entpackt Gläser aus WEB-INF/lib des Krieges

asm-3.1.jar-83dc35ead0d41d41/asm-3.1.jar 
asm-3.1.jar-2a48f1c13ec7f25d/contents/"unpacked asm-3.1.jar" 

es dauert nicht Dateien aus my.ear/lib nur WEB-INF/lib. .. Wieso ist es so? Und gibt es einen Weg, dies zu verhindern? Es verlangsamt nur das Starten (und Stoppen) des Anwendungsservers, was bei der Entwicklung nicht so komfortabel ist ... übrigens. Ich packte Krieg auf Ohrstruktur, gab mir die gleiche Arbeitsanwendung und speicherte 1 Minute, während der Anwendungsserver anfing ... 1 Minute ist gut genug ... Ich hoffe, es gibt einen einfacheren Weg, ohne im Entwicklungsmodus zu packen.

Wenn es irgendwie zu JavaEE 6 Spezifikation und ejb-Gläser verwandt ist, die jetzt in WEB-INF/lib angeordnet werden kann, so dass ich nicht über solche Bibliotheken in meinem Krieg Dateien ...

UPDATE: eigentlich, wenn ich hase-server.war zu hase-server.ear umpacken, die hase-server.war enthält und bewegt alle seine Bibliotheken hase-server.ear/lib dann sehe ich noch zwei Ordner in tmp:

asm-3.1.jar-215a36131ebb088e/asm-3.1.jar 
asm-3.1.jar-14695f157664f00/contents/ 

aber in diesem Fall ist der letzte Ordner leer. Es erstellt also immer noch zwei Ordner, entpackt aber nicht meine Bibliothek. Auch ich benutze exploded deployment so ist die Frage nur über Jar-Dateien, nicht auspacken Ohr/Krieg.

Antwort

0

Nach discussion auf JBoss AS Forum kann es ein Fehler sein. Und es gibt keine Problemumgehung, um es jetzt zu reparieren/zu vermeiden/zu konfigurieren.

Die einzige Idee, die ich bekam, war meine Anwendungen neu zu packen: innerhalb EAR habe ich Bibliotheken von WEB-INF \ lib von WAR zu EAR \ lib verschoben (nur Struts war in WAR, sonst wird es nicht funktionieren), und andere WAR-Anwendung, die ich als EAR und all seine Bibliotheken gemacht habe, konnte ich nach EAR \ lib verschieben. Im Entwicklungsmodus kann ich diese Struktur einfach verwenden, und es spart mir mehr als 2 Minuten, um den Anwendungsserver zu starten, und das ist eine Menge ... Jetzt braucht JBoss 1:50 Minuten zum Starten, im Vergleich zu 4 Minuten vorher ...

1

Es wird auch EARs auspacken, nur nicht an der gleichen Stelle. Sie müssen herumjagen, um herauszufinden, wo sie ausgepackt werden, aber sie sind da.

Es tut dies für Leistungsmerkmale. Wenn dies nicht der Fall wäre, wäre das Classloading extrem langsam, da es durch verschachtelte ZIP-Dateien recherchieren müsste, um herauszufinden, was es benötigt.

Sie können also fühlen, dass das Entpacken verlangsamt Sie, aber es macht tatsächlich die Dinge schneller.

+0

Nun, ich sehe den Grund zum Auspacken, aber ich frage nach dem Entwicklungsmodus. Es ist keine Produktion, also brauche ich einen Server, um schnell zu starten, und in diesem Fall fühle ich kein langsames Classloading. Wäre nett, Option in Server-Konfiguration zu bekommen :) Für die Produktion -> stimme ich völlig mit Ihnen überein, aber eine andere Sache ist seltsam für mich: warum nur Bibliotheken von WEB-INF/lib sind entpackt, warum Server "Ohr"/lib-Ordner ignoriert dann (nur meine Frage mit dieser Info erweitert)? – Maxym

+0

@Maxym: Das langsame Classloading ist nur während des Startvorgangs bemerkbar und wirkt sich auf dev * more * als die Produktion aus. Sobald die Klassen geladen sind, stoppt die Verlangsamung. – skaffman