DerbyDB in einem Glassfish Server

Achtung: Dieses Dokument ist in Arbeit und ist daher unvollständig bzw. fehlerhaft.

Konfiguration:

Glassfish 3.1 mit seiner integrierten DerbyDB (JavaDB); Ubuntu 10.10.

Ziel:

Eine JavaEE-Applikation soll mittels Netbeans 6.9 auf diesem Glassfish deployed werden. Allerdings muss auf der DerbyDB ein eigenes Schema erstellt werden, da das Standard-Schema APP nicht verwendet wird, sondern ein eigenes Schema (und auch eine eigene Datenbank).

Vorgangsweise

Variante 1: Mit einem externen Tool auf die DB zugreifen

Will man von außen auf den DerbyDB-Server zugreifen, so ist das nicht ohne weiteres möglich, da – aus Sicherheitsgründen – derby nur local auf den Port 1527 lauscht. Die kann man mit folgendem Shell-Kommando überprüfen:

netstat -a -n | grep 1527

(Mit dem Parameter p wird auch der dazu gehörende Prozess angezeigt.)

Ausgabe:

tcp6 0 0 127.0.0.1:1527 :::* LISTEN

Daher kann man nicht mit Tools wie Netbeans oder Aqua Data Studio von außen auf die Datenbank zugreifen.

Abhilfe:

asadmin start-database --dbhost 0.0.0.0 --dbhome /home/leo/db

Weiters ist es sinnvoll ein eigenes db-Verzeichnis anzulegen (dbhome). Nun ist ein Zugriff mit externen Tools möglich. Anschließend muss der DB-Server wieder gestoppt werden.

asadmin stop-database

Diese Variante ist sicher einfacher, als eine db manuell am Server anzulegen (Variante 2). Um die Datenbank nach dem Zugriff mit wieder vor Fremdzugriff zu schützen, soll sie im Produktivbetrieb nur auf localhost lauschen.

asadmin start-database --dbhost localhost --dbhome /home/leo/db

Variante 2: Das neue Schema direkt am Server mit ij anlegen

Mit SSH eine Shell öffnen.

Zuerst in der .bashrc die Umgebungsvariable DERBY_Home und den Pfad setzen:


export DERBY_HOME=~/glassfishv3/javadb
export PATH=$PATH:$DERBY_HOME/bin

Neu einloggen, damit der Pfad gesetzt wird.

Nun muss man den Datenbankserver starten

startNetworkServer

Dabei ist zu beachten, dass dieser Prozess nun im Vordergrund läuft. Mann kann ihn mit Strg-z pausieren und mit bg im Hintergrund laufen lassen.

Das Tool ‘ij’ starten, die Datenbank “beispiele” anlegen und ein Schema “sda”


ij

ij> connect 'jdbc:derby:beispiele;create=true;user=sda;password=greoj' as medb;
ij> create schema sodura;

Nun kann man sich die Schemas ansehen.

ij> show schemas;
TABLE_SCHEM
------------------------------
APP
NULLID
SDA
SQLJ
SYS
SYSCAT
SYSCS_DIAG
SYSCS_UTIL
SYSFUN
SYSIBM
SYSPROC
SYSSTAT

12 rows selected

Das Schema könnte auch wieder gelöscht werden mit:

drop schema sda restrict;

Es muss allerdings darauf geachtet werden, dass das zu löschende Schema leer ist.

Nicht vergessen, dass man nun die DB wieder herunter fährt, da sich Glassfish selbst um das Starten und Beenden seiner DB kümmert. Man führt in der Shell folgendes Script aus:

stopNetworkServer

Nun muss man noch die jdbc-Connection und den Connection-Pool in Glassfish konfigurieren, um die App hochzuladen zu können und mittels JPA die notwendigen Tabellen erstellen zu lassen.

Links:

http://www.vogella.de/articles/ApacheDerby/article.html

http://glassfish.java.net/docs/#allinone

About these ads
This entry was posted in glassfish. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s