Wohin mit externen Bibliotheken in Glassfish?

8

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.

    
user871526 31.07.2011, 12:43
quelle

2 Antworten

1

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

ablegen
  

C: \ 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 .

    
user871526 14.08.2011 10:02
quelle
-1

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.

    
Ivo Abeloos 02.08.2011 07:44
quelle