Ich habe ein JSF2-Projekt mit Netbeans 7 erstellt und erfolgreich auf Glassfish 3.1 bereitgestellt. Die Ear-Datei ist ziemlich groß geworden (6.5MB), aber das meiste besteht aus externen JAR-Dateien (wie Apache Commons, Solrj, Primefaces und PDFRenderer usw.), die in die entsprechenden WAR / EJB-Dateien kopiert werden.
Meine Frage ist: Wie kann ich das vermeiden und meine Ear-Datei kleiner machen - sie sollte nur die Sachen enthalten, die ich erstellt habe, die externen Bibliotheken sollten nur einmal auf dem Server bereitgestellt werden.
Ich habe im Internet nach Antworten zu diesem Thema gesucht und das einzige, was ich gefunden habe, war, die externen JAR-Dateien unter 'domains / domain1 / lib' oder 'domains / domain1 / lib / ext' in das glassfish-Installationsverzeichnis zu setzen und die ' Paket 'Flag in den Netbeans-Projektbibliothekseinstellungen, aber nichts davon funktionierte bisher (ich bekomme immer ClassNotFoundExceptions).
Muss ich etwas anderes tun, eine Klassenpfadeinstellung anpassen oder wie kann ich dies erreichen? Hat jemand eine Lösung?
Update: Ok, ich habe herausgefunden, dass dies nur auf meiner lokalen Glassfish-Installation passiert, die mit Netbeans geliefert wird (es ist ein Laptop mit 64 Bit Windows 7 läuft darauf). Auf meiner Remote-Linux-Box funktioniert es wie erwartet, d. H. Ich konnte alle externen Bibliotheken in 'domains / domain1 / lib' setzen - meine Ohr-Datei ist jetzt nur ~ 700k :) Ich werde das auf meinem Mac und auf einer anderen Windows 7-Box versuchen, um zu sehen, ob dies ein Betriebssystem-Problem oder etwas anderes ist.
Ich denke, ich kann die Frage jetzt selbst beantworten: domain1 / lib scheint der richtige Ort zu sein, all diese JAR-Dateien zu speichern. Zumindest funktioniert es perfekt auf den 2 Linux-Boxen, die ich ausprobiert habe und auf meinem Mac. Ich fand auch heraus, warum es auf meinem Windows 7-Laptop nicht gleich funktionierte. Der Domänenpfad ist benutzerspezifisch, wenn Sie die Glassfish-Installation verwenden, die mit Netbeans geliefert wird, dh Sie müssen die JAR-Dateien unter
ablegenC: \ Benutzer \ 'Benutzername \ \ netbeans \ 7.0 \ config \ GF3 \ domain1 \ lib
funktioniert wie erwartet, Gläser unter
C: \ Programme \ glassfish-3.1 \ glassfish \ domain \ domain1 \ lib
andererseits werden vom Classloader ignoriert .
Das einzige Verzeichnis, das Teil des Klassenpfads ist, ist das Verzeichnis domain1\lib\classes
. Wenn Sie Ihre Gläser dort platzieren, werden sie zum Klassenpfad hinzugefügt.
Sie können Ihre Ear-Datei auch im Verzeichnis lib
(früher APP-INF \ lib) speichern. Hier können Sie Ihre freigegebenen Gläser ablegen.