2.3.10. fejezet, GlassFish használata

A GlassFish a Sun Java ApplicationServer-ének az Oracle kiadása.

Szükséges program könyvtárak:

  • mysql-connector-java-5.1.6-bin.jar (MySQL JDBC kapcsolat miatt)
  • tomcat-coyote.jar (org.apache.tomcat.util.http.fileupload.FileUploadException miatt)
  • tomcat-dbcp.jar (org.apache.tomcat.dbcp.dbcp.BasicDataSource miatt)

Ezeket másoljuk a GlassFish könyvtárába (pl.: C:\glassfish3\glassfish\lib). Indítsuk el a GlassFish szervert, és jelentkezzünk be az adminisztrátor konzolba (http://localhost:4848/asadmin/admingui/TopFrameset vigyázat, ez bejelentkezés után átirányít egy oldalra, ami nem létezik a 3.1.1-es verzió alapértelmezett beállításnál! A 3.1.2.2-ben ezt már javították).

login

A http://localhost:4848/common/index.jsf konzolon készítsük el a jdbc/demand erőforrást és a rá épülő kapcsolat konténert (/Resources/JDBC/ Resources és Connection Pools).

A Datasource Classname legyen: com.mysql.jdbc.jdbc2.optional.MysqlDataSource

Tesztelhetjük a poolt a context.xml módosításával. Szedjük ki belőle a jdbc/demand nevű resource-ot.

A javax.naming.NamingException: Lookup failed for 'java:/comp/env/jdbc/demand' kivételre a forráskódban (SystemDescriptor.getDataSource metódus, web.xml, hibernate-mysql.cfg.xml, RequestListener.RequestListener, OmegaIroda.createMQProducer) módosítsuk a névkeresést:

InitialContext ctx = new InitialContext(env);
result = (DataSource) ctx.lookup("jdbc/" + getName());

A SystemDescriptor.getDataSource() metódusnál a DataSource-hoz importáljuk a javax.sql.DataSource osztályt.

Exportáljuk Eclipse projektünket .war formába a Files/Export menüponttal, tomcat támogatás nélkül, majd telepítsük az alkalmazást:

Ha távoli gépen szeretnénk webes adminisztrátor jogokat, használnunk kell az asadmin parancsot, ami at a telepített szerver bin könyvtárában találunk. Tehát ha a glassfish3/bin/asadmin parancsot kiadjuk - miután elindítottuk a szervert a glassfish3/glassfish/bin/start parancsal -, kapunk egy parancssort a konfiguráláshoz. Itt írjuk be az alábbiakat:

enable-secure-admin

Ha erre az alábbi választ kapjuk

remote failure: At least one admin user has an empty password, which secure admin does not permit. Use the change-admin-password command or the admin console to create non-empty passwords for admin accounts.
Command enable-secure-admin failed.

akkor egy jelszót kell beállítanunk az adminisztrátornak, mivel az alapértelmezett üres. Ez helyi szerveren nem jelent problémát, mert ott engedélyezett az adminisztrációs felület. Tehát adjunk jelszót az admin felhasználónak:

change-admin-password
> Enter admin user name [default: admin]> nyomj entert (alapértelmezett felhasználó)
> Enter admin password> nyomj entert (üres jelszó)
> Enter admin password> írd be a jelszót
> Enter admin password again> erősítsd meg a jelszót

Most próbáljuk újra kiadni az enable-secure-admin parancsot.

enable-secure-admin
> Enter admin user name> admin
> Enter admin password for user "admin"> jelszó
> You must restart all running servers for the change in secure admin to take effect.
> Command enable-secure-admin executed successfully.

És ahogy az eredményben is látjuk, indítsuk újra a szervert a parancssorból (a domain1 helyébe írjuk a saját domain nevet. Alapértelmezetten a telepített szerver glassfish3/glassfish/domains/{domain1} könyvtárában található).

restart-domain domain1

Ellenőrizhetjük a beállítást az alábbi parancssal:

get secure-admin.enabled

Ne lepődjünk meg, ha SSL hitelesség elfogadására kérdez rá, nyugodtan fogadjuk el. Ez az alapértelmezetten generált SSL kulcs. Ne felejtsük el ellenőrizni, hogy az /etc/hosts fájlban a localhost neve mellett ott legyen a szerverünk neve is (pl.: debian). Ez fontos, mivel az adminisztrátor figyelő nem indul el, hanem a There is a process already using the admin port 4848 hibaüzenettel leáll a szerver indítása, holott semmien program nem használja a 4848-as portot.

Ha Eclipse Indigo-t használunk, hasznos lehet a GlassFish plug-in telepítései útmutató.