Glassfish telepítés:
A telepítése viszonylag jól le van írva a Glassfish letöltési oldalán, én csak néhány plusz dolgot mondanék, néhány kisebb beállítást érdemes még elkövetni szerintem, mielőtt az ember telepíti a szervert. Ezeket a dolgokat a kicsomagolás után, az ant futtatás előtt érdemes megtenni:
1. Lehetőség van rá, hogy ne az alap JDK-val települjön a szerver. Ez nekem azért volt fontos, mert a fő munkahelyi projektem miatt a JAVA_HOME egy 1.5-ös JDK-ra van állítva, viszont én az 1.6-os JDK-t akartam használni. Ehhez nem kell mást tenni, mint a setup.xmlben (vagy a setup-cluster.xmlben, ha azt használjuk) a következő sort lecseréljük:
<property name="local.java.home" value="${java.home}${suffix}"/>
a megfelelő könyvtárra, pl.:
<property name="local.java.home" value="d:\Jdk1606\bin\${suffix}"/>
2. Érdemes a fenti fájlban lecserélni az alapértelmezéseket a nekünk megfelelőre, hogy már egy nekünk tetsző domain jöjjön létre, ne kelljen vele külön bíbelődni:
<property name="domain.name" value="domain1"/>
<property name="instance.name" value="server"/>
<property name="admin.user" value="admin"/>
<property name="admin.password" value="adminadmin"/>
Ezek az adatok a domain neve, az instance neve, a domain adminisztrátor és a jelszava.
Netbeans és a Firebird:
A Firebird szervert java alól a JayBird jdbc driverrel lehet elérni. A driver csomagból a következő fájlokra van szükségünk:
jaybird-full-2.1.6.jar
lib\log4j-core.jar
lib\mini-j2ee.jar
Ezeket a fájlokat elhelyezzük egy könyvtárba és máris lehet telepíteni az új jdbc drivert. Ezt ugyebár az NB Services ablakában a Databases/Drivers alatt tehetjük meg, csak be kell állítani az új drivernek a fenti három fájlt, a Driver classnak pedig meg kell adni a következőt: org.firebirdsql.jdbc.FBDriver., ha ezt megtettük, a NetBeans már képes elérni a szervert, fel lehet venni a Connectiont. (A Connection URL-je a következőképpen néz ki: jdbc:firebirdsql:<szerver>:<port>:<adatbázis elérése>. Ha az alapértelmezett portot használjuk, akkor az elhagyható. Egy példa: jdbc:firebirdsql:localhost:d:\JavaProject\Database\JavaProject.FDB)
Glassfish és a Firebird:
Ez már keményebb dió, mert több probléma is van vele.
Az első, hogy a GF és a JB nem ugyanúgy nevezi el a tulajdonságokat, amiket használ (AZ adatbázis útvonala JB-nél database tulajdonságban van, GF-nél a databaseName tulajdonságban.), ezért egy egyedi osztályt kell használni a GF-ben.
Nekem a következő beállítások jöttek be:
DataSourceClassName: org.firebirdsql.pool.sun.AppServerConnectionPoolDataSource
ResourceType: javax.sql.ConnectionPoolDataSource
Properties:
userName: SQL felhasználó
password: Jelszava
databaseName: <szerver>:<port>:<elérési út>
pl.: localhost:d:\JavaProject\Database\JavaProject.FDB
encoding: Használt encoding. Nem kötelező, de mivel magyarok
vagyunk, érdemes beállítani: WIN1250.
Persze nem kötelező ezt kézzel megtenni, ha már csináltunk egy enterprise projektet (egy Enterprise Applicationt vagy egy EJB modult), ott felvehetünk egy xml fájlt, amelyben leírhatjuk az adatforrás minden tulajdonságát, így amikor futtatjuk a projektet, akkor automatikusan létrejön az adatforrás a GF szerveren.
A létrehozandó fájl a New File/GlassFish/JDBC Datasource menüponttal hozható létre, a neve sun_resource.xml, és itt van egy példa arra, hogy hogyan is kellene kinéznie.
A második probléma, hogy a GF folyton meghív két eljárást a JayBirdben, ami nincs implementálva, teljesen üres, csak egy kivételdobást tartalmaz. Ez nem okoz gondot a működésben, de teleszemeteli a szerver logot, mert minden alkalommal, amikor a JayBirdhöz fordul a GF beleíródik a logba, hogy kivétel történt.
Ennek kivédésére le kell tölteni a JayBird megfelelő forráskódját és a megfelelő jdbc könyvtár alatt az FBConnection.java fájlban módosítani kell a következőket:
public Properties getClientInfo() throws SQLException {
// TODO: implement this java.sql.PreparedStatement method
//throw new SQLException("not yet implemented");
return new Properties();
}
public String getClientInfo(String name) throws SQLException {
// TODO: implement this java.sql.PreparedStatement method
//throw new SQLException("not yet implemented");
return name;
}
public void setClientInfo(Properties properties) throws SQLClientInfoException {
// TODO: implement this java.sql.PreparedStatement method
//throw new SQLClientInfoException();
}
public void setClientInfo(String name, String value) throws SQLClientInfoException {
// TODO: implement this java.sql.PreparedStatement method
//throw new SQLClientInfoException();
}
Mint látható, nem tettem mést, mint kikommenteztem a kivételdobást és megírtam, hogy elfogadható értékkel térjen vissza a függvény. Ezután a kódot be kell fordítani és kész is a hibátlan jdbc driverünk, ami nem szemeteli tele a logot.
Én megcsináltam a változtatásokat, így ha valaki ugyanazt használja, mint én, vagyis JDK1.6-ot és Jdbc4.0-t, az letöltheti innen a befordított projektet.
Kb. ennyibe kerül az FB, GF és NB összelövése, hogy együtt tudjanak működni, ha minden igaz, így már lehet kezdeni a projekt tényleges készítését.