Dez 01
GlassFish Installation
Wie man an der .jar Datei erkennen kann, muss zwingend ein JDK/JRE installiert sein, um den Installer ausführen zu können. Ich habe mich für folgende Java Installation entschieden, die ich über yast (OPENSuse 11.0) installiert habe.
java version “1.6.0_06″
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)
In dem Download Verzeichnis meiner JAR Datei habe ich dann folgenden Befehl ausgeführt.
java -jar glassfish-installer-v2ur2-b04-linux-ml.jar
Unerwarteter weise öffnet sich nun ein Fenster, dass mich dazu auffordert die Lizenz zu akzeptieren. Da hatte ich wohl Glück, dass ich auf dem Server die Xlibs installiert hatte und auch noch meine lokale DISPLAY Variable gesetzt war. Nur zum Test entfernen ich die DISPLAY Variable und bin gespannt, ob die Installation nur klappt, wenn man einen XServer vorweisen kann.
Wie erwartet bekomme ich folgende Exception:
java -jar glassfish-installer-v2ur2-b04-linux-ml.jar
Exception in thread “main” java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:89)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at java.awt.Toolkit$2.run(Toolkit.java:836)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:828)
at sun.swing.SwingUtilities2$AATextInfo.getAATextInfo(SwingUtilities2.java:120)
at javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:1556)
at javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:130)
at javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1591)
at javax.swing.UIManager.setLookAndFeel(UIManager.java:537)
at javax.swing.UIManager.setLookAndFeel(UIManager.java:577)
at org.jvnet.poormans_installer.Main.setUILookAndFeel(Main.java:95)
at org.jvnet.poormans_installer.Main.main(Main.java:50)
Fazit für die Installationsvorbereitung:
Ohne XServer ist die Installation des GlassFish Servers auf diesem Wege nicht zu schaffen. Also vor der Installation für eine funktionierende Umgebung sorgen.
1. Eine JAVA VM Installieren
2. Die Xlibs auf dem Server installieren
3. Auf dem lokalen Client einen XServer starten.
Also setzte ich nun meine DISPLAY Variable wieder und starte die Installation noch einmal. Ich akzeptiere die Lizenz und deaktiviere das Autoupdate, da der Server keine Verbindung zum Internet hat.
Das war‘s dann wohl auch schon. Ich werde weder nach einem Installationsverzeichnis gefragt noch nach einem Admin Passwort. Es werden nur eine Reihe von Dateien und Ordner in einem Unterverzeichnis ‘glassfish’ angelegt.
Nach dieser sehr rudimentären Installation habe ich nun ein Verzeichnis “/tmp/glassfish/glassfish”. Den Ordner glassfish verschiebe ich nun nach /opt und folge der Installationsroutine. Die an dieser Stelle eine gültige ant Installation benötigt. Glücklicherweise ist ant Bestandteil der oben entpackten .jar Datei.
Die Installation der ich hier folge ist unter https://glassfish.dev.java.net/downloads/v2ur2-b04.html zu finden.
> chmod -R +x lib/ant/bin
> lib/ant/bin/ant -f setup.xml
Nachdem wieder in unterschiedlichsten ant tasks durchlaufen werden, die Dateien entpacken und kopieren, wird zum Schluss der create.domain Task ausgeführt. In dem Task wird die Default Domain angelegt. Per Default werden folgende Eistellungen vorgenommen:
Verwendet wird der Port 4848 für Admin.
Verwendet wird der Port 8080 für HTTP Instance.
Verwendet wird der Port 7676 für JMS.
Verwendet wird der Port 3700 für IIOP.
Verwendet wird der Port 8181 für HTTP_SSL.
Verwendet wird Standardanschluss 3820 für IIOP_SSL.
Verwendet wird Standardanschluss 3920 für IIOP_MUTUALAUTH.
Verwendet wird Standardanschluss 8686 für JMX_ADMIN.
Die Domäne wird mit dem Profil:developer wie angegeben nach der Variable AS_ADMIN_PROFILE in der Konfigurationsdatei erstellt.
Der Pfad im gegebenen Gebietsschema [de_DE] unter: [/opt/glassfish/lib/install/templates/locales/de_DE/index.html] wurde nicht gefunden. Stattdessen wird die Standard-(en_US)index.html verwendet.
Sicherheitsspeicher verwendet: JKS
Domäne domain1 wurde erstellt.
Die für Admin-Benutzername [admin] für diese Domäne [domain1] relevanten Anmeldeinformationen wurden erfolgreich in [/root/.asadminpass] gespeichert.
Stellen Sie sicher, dass diese Datei geschützt bleibt. In dieser Datei gespeicherte Informationen werden von asadmin-Befehlen zur Verwaltung dieser Domäne verwendet.
Damit ist die Installation nun abgeschlossen und der GlassFish ist bereit zum Start. Allerdings möchte ich mir vorher den create.domain Task man genauer ansehen.
Der GlassFish Task create.domain hat folgenden Aufbau:
<target name=”create.domain” depends=”setup.init,set.env”>
<exec executable=”${ASADMIN}” failonerror=”true”>
<arg line=”create-domain” />
<arg line=”–adminport ${admin.port}” />
<arg line=”–instanceport ${instance.port}” />
<arg line=”–user ${admin.user}” />
<arg line=”–passwordfile "${adminpassfile}"” />
<arg line=”–domainproperties orb.listener.port=${orb.port}:jms.port=${imq.port}:http.ssl.port=${https.port}” />
<arg line=”–savelogin” />
<arg line=”${domain.name}” />
</exec>
<delete file=”${adminpassfile}” />
</target>
Hinter dem Namen ASADMIN verbirgt sich ein Shell Skript das unter “/opt/glassfish/bin/asadmin” zu finden ist. Eine ausführliche Doku zum asadmin Tool ist unter http://docs.sun.com/app/docs/doc/819-3658/gcode?a=view zu finden. Diese Doku ist Teil des “Sun Java System Application Server Plattform Edition 9 Administration Guide”. Dieses Guide bezieht sich eigentlich nicht auf den GlassFish Server, ist aber in Bezug auf das asadmin Tool 100% kompatibel zu der Version die im Sun Java System Application Server Plattform Edition 9 verwendet wird.
In unserem Fall wird mit dem Tool eine neue Domain angelegt, die entsprechen den Vorgaben angelegt wird. Diese Vorgaben finden sich am Anfang der setup.xml und müssen dort geändert werden, wenn z.B. ein anderer HTTP Port verwendet werden soll.
…
<property name=”domain.name” value=”domain1″/>
<property name=”instance.name” value=”server”/>
<property name=”adminpassfile” value=”${install.home}/passfile”/>
<property name=”admin.user” value=”admin”/>
<property name=”admin.password” value=”adminadmin”/>
<property name=”admin.port” value=”4848″/>
<property name=”instance.port” value=”8080″/>
<property name=”orb.port” value=”3700″/>
<property name=”imq.port” value=”7676″/>
<property name=”https.port” value=”8181″/>
…
Ich lasse alles auf Default und fahre mit dem “GlassFish Quick Start Guide” fort, dass unter https://glassfish.dev.java.net/downloads/quickstart/index.html zu finden ist.
Als Erstes wird hier von mir erwartet, dass ich mein “install-dir/bin/” Verzeichnis in meiner PATH Variable ergänze. Dazu ergänze ich die Zeile “export PATH=$PATH:/opt/glassfish/bin” in meiner .profile Datei. Da ich keine Lust habe mich abzumelden und mich wieder anzumelden, gebe ich folgenden Befehl ein.
. ~/.profile
Damit ist die PATH Variable nun aktuell und ich kann mit “asadmin start-domain domain1″ meinen GlassFish starten.
>asadmin start-domain domain1
Domain domain1 wird gestartet, bitte warten.
Protokoll wurde an /opt/glassfish/domains/domain1/logs/server.log umgeleitet.
Ausgabe wird umgeleitet in /opt/glassfish/domains/domain1/logs/server.log
Domäne domain1 ist bereit zum Empfangen von Clientanforderungen. Zusätzliche Dienste werden im Hintergrund gestartet.
In Domäne [domain1] wird [Sun Java System Application Server 9.1_02 (build b04-fcs)] ausgeführt; die zugehörige Konfiguration und die zugehörigen Protokolle befinden sich hier: [/opt/glassfish/domains].
Admin-Konsole ist unter [http://localhost:4848] verfügbar.
Verwenden Sie denselben Port [4848] für “asadmin”-Befehle.
Benutzerwebanwendungen sind unter folgenden URLs verfügbar:
[http://localhost:8080 https://localhost:8181 ].
Folgende web-contexts sind verfügbar:
[/web1 /__wstx-services ].
Natürlich ist localhost nur von dem lokalen Rechner zu erreichen und ich muss in meinem Browser localhost durch den Namen bzw. die IP-Adresse des Servers ersetzen. Ich gebe also im Browser http://meineip:4848/ ein und sehe nach wenigen Sekunden ein Login zu meiner Admin-Konsole. Mein Login ist admin/adminadmin. Nach dem Login komme ich auf meine Admin Konsole und kann den Server verwalten. Leider versucht der GlassFish Server im Internet ein paar Seiten aufzurufen, was im natürlich auf Grund von mangelnder Konnektivität nicht gelingt. Dieser Versuch dauert 1-2 Minuten bis er ein Timeout bekommt und man kann normal weitermachen.
Als erstes sollte ich nun also mein admin passwort ändern. In der “Sun Java System Application Server 9.1_02 Admin-Konsole” suche ich nach der Funktion leider vergebens, werde aber dann doch noch fündig.
Das Kommando asadmin enthält ein Kommando “change-admin-password” mit dem man das admin Passwort ändern kann.
> asadmin change-admin-password –user admin
Geben Sie das alte Admin-Passwort ein>adminadmin
Geben Sie das neue Admin-Passwort ein>XXXXXXXXXX
Geben Sie das neue Admin-Passwort erneut ein>XXXXXXXXXX
.asadminpass-Datei mit neuem Passwort aktualisiert.
Befehl change-admin-password wurde erfolgreich ausgeführt.
Das ist sehr schön, da man hierfür nur eine Konsole auf dem Server benötigt. Eine sehr ausführliche Anleitung der asadmin Befehle findet man unter http://docs.sun.com/app/docs/doc/819-3662/6n5s9hmt0?a=expanda. Besonders positiv fällt mir auf, dass die “Sun Java System Application Server 9.1_02 Admin-Konsole” mich nach der Änderung des Passwortes nicht zwangstrennt. Erst nach dem “Abmelden” ist eine Anmeldung nur noch mit dem neuen Passwort möglich.
Nun werde ich also das erste mal meinen ” Sun Java System Application Server 9.1_02 (build b04-fcs)” aufrufen. Im Browser gebe ich http://meineserverip:4848/ ein und tatsächlich meldet sich der Server mit der Meldung “Your Application Server is now running”.
So weit so gut. Nun werde ich also mein erstes HelloWorld auf dem GlassFish installiert. Da ich nun auf die schnelle kein eigenes HelloWord programmieren möchte, lade ich mir einfach ein Demo HelloWorld von http://glassfish.dev.java.net/downloads/quickstart/hello.war. In dem war File ist eine einfach HelloWord Web-Application enthalten. Der Inhalt der Datei ist folgender:
0 Tue Oct 18 00:32:12 CEST 2005 META-INF/
106 Tue Oct 18 00:32:10 CEST 2005 META-INF/MANIFEST.MF
0 Tue Oct 18 00:32:12 CEST 2005 WEB-INF/
0 Tue Oct 18 00:32:12 CEST 2005 WEB-INF/classes/
120 Tue Jun 01 18:46:36 CEST 2004 WEB-INF/classes/LocalStrings.properties
0 Tue Oct 18 00:32:12 CEST 2005 images/
387 Sun Nov 14 02:34:08 CET 2004 WEB-INF/sun-web.xml
438 Sun Nov 14 02:34:08 CET 2004 WEB-INF/web.xml
1305 Tue Apr 06 02:02:00 CEST 2004 images/duke.waving.gif
795 Sun Nov 14 02:34:06 CET 2004 index.jsp
674 Sun Nov 14 02:34:06 CET 2004 response.jsp
Diese war Datei (Web Application Archive) kann nun direkt in das autodeploy Verzeichnis der Domain kopiert werden. Die Applikation wird dann automatisch im GlassFish Server installiert und kann dann unter http://meineserverip:4848/hello/ aufgerufen werden. Gesagt - getan. Datei kopiert und URL im Browser aufgerufen. Alles OK. Ich sehe meinen Freund Duke. Er fragt mich sogar nach meinem Namen. Das het er schon so oft auf so unterschiedliche Art und Weise getan, dass ich vermuten muss, dass er Alzheimer hat. Denn langsam sollte er sich meinen Namen doch mal merken :-). Aber OK, ich gebe Michael ein und wie erwartet begrüßt er mich mit “Hello, Michael!”.
Zum Schluss noch schnell ein Backup machen und auf CD sichern.
Damit endet diese Anleitung zu Installation des GlassFish Servers. Änderungen, Ergänzungen, Wünsche und Kritik finden unter [email protected] immer ein offenes Ohr.
Juni 17th, 2009 at 11:15
Die Installation klappt übrigens auch ohne X11, wenn dem Installer der Schalter ‘-console’ (mit einfachem Anstrich) mitgegeben wird. Getestet für v2ur2 und v21. Allerdings gibt es hier keine Abfrage für die Autoupdate-Funktion.