Page 1 of 1

Datenbankverbindung per JNDI Lookup

PostPosted: Sun Oct 24, 2010 5:38 pm
by iferle
Ich würde gerne meine Datenbankverbindung im Application-Server konfigurieren und diese Verbindung per JNDI-Lookup finden und benutzen. Geht das mit dem JVx-Framework?

Re: Datenbankverbindung per JNDI Lookup

PostPosted: Mon Oct 25, 2010 10:17 am
by Support@SIB
Objekte via JNDI finden und verwenden ist problemlos möglich, da Sie im Lifecycle Objekt beliebigen Java Code ausführen können.

Die DBStorage nutzt ein DBAccess Objekt für den Datenbankzugriff, und nicht die Connection direkt. Falls Sie eine java.sql.Connection konfigurieren möchten, dann ist es im Moment (JVx 0.8) nicht möglich daß ein DBAccess Objekt mit einer bestehenden Connection erstellt wird!

Falls Sie ev. gemeint haben, ob ein DBAccess Objekt automatisch via JNDI initialisiert werden kann, dann ist die Antwort - Nein. In DBAccess ist keine direkte JNDI Unterstützung implementiert.

Falls Sie die DB Konfiguration nicht im Source Code durchführen wollen und z.B. aus der Applikationskonfiguration laden wollen, dann bietet sich der SessionContext an:

Applikationskonfiguration - config.xml
Code: Select all
<application>
  <securitymanager>
    <class>com.sibvisions.rad.server.security.DBSecurityManager</class>
    <database>
      <url>URL</url>
      <username>USER</username>
      <password>PWD</password>
    </database>
  </securitymanager>
</application>

Lifecycle Objekt - Session.java
Code: Select all
IConfiguration cfgSession = SessionContext.getCurrentSessionConfig();

DBAccess dba = DBAccess.getDBAccess(
                     cfgSession.getProperty("/application/securitymanager/database/url"));
dba.setUsername(cfgSession.getProperty("/application/securitymanager/database/username"));
dba.setPassword(cfgSession.getProperty("/application/securitymanager/database/password"));
dba.open();


Wir empfehlen diese Variante, da dadurch die Konfiguration auch mit der Applikation deployed werden kann. Im Fall von JNDI müsste auch der Applikationsserver konfiguriert werden.

Re: Datenbankverbindung per JNDI Lookup

PostPosted: Mon Oct 25, 2010 11:35 am
by Development@SIB
Mit JVx 0.9 kann durch den Aufruf:

Code: Select all
DBAccess.getDBAccess(java.sql.Connection);

eine Instanz von DBAccess erstellt werden, die mit einer vorkonfigurierten Connection funktioniert (siehe Support System).

Die Methoden

Code: Select all
<DBAccess>.open();
<DBAccess>.close();

haben in diesem Fall keine Auswirkung und können vernachlässigt werden!