Rıdvan Ağar wrote:
> Ich würde diese Erklärung von Markus mit einem Beispiel bestätigen:
> <resource-ref>
> <description>Creator generated DataSource Reference</description>
> <res-ref-name>jdbc/meine_db_verbindung</res-ref-name>
> <res-type>javax.sql.DataSource</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>
>
> Referenz jdbc/meine_db_verbindung wird vom Container
> -in o.g. Fall SJSAS 8.2 verwaltet. Ich habe diese Verbindung im Server
> eingerichtet (host,db,user,pwd usw) und meine Applikation sucht sich
> diese Verbindung über den Namen jdbc/meine_db_verbindung:
>
> <code_schnipp>
> InitialContext ctx=null;
> DataSource ds=null;
>
> try{
> ctx = new InitialContext();
> ds = (DataSource) ctx.lookup(dsn);
> } catch(NamingException nw) {
> try{
> ds = (DataSource)
> ctx.lookup("java:comp/env/jdbc_meine_db_verbindung");
> } catch (NamingException e){
> e.printStackTrace();
> }
> }
> </code-schnapp>
Hm, mir fällt gerade auf, daß wir beide es geschickt vermieden haben, den für
die Praxis vielleicht interessantesten Aspekt zu erwähnen, nämlich welchen
Einfluß der Wert von <res-auth> konkret auf den zu schreibenden Code hat.
Damit man tatsächlich mit der Datenbank arbeiten kann, benötigt es ja noch
eine java.sql.Connection. In Deinem Beispiel (<res-auth>Container</res-auth>,
Host, DB, User, Paßwort im Container konfiguriert) würde also noch etwas wie
java.sql.Connection conn = ds.getConnection();
gebraucht.
Im Falle von <res-auth>Application</res-auth> wäre stattdessen etwa
java.sql.Connection conn = ds.getConnection("<username>", "<password>");
erforderlich.
Mein langes Geschreibsel und Dein Beispielcode lassen sich im Prinzip so
zusammenfassen:
Der Wert von <res-auth> legt fest, wo sich Benutzername und Paßwort für die
Datenbank befinden - in der Konfiguration des Containers oder direkt im Code
der WebApp (also mehr oder weniger direkt im Aufruf von
javax.sql.DataSource#getConnection) selbst.
Sehr interessante Frage übrigens, Patrick! Wieder was gelernt.
Gruß
mks
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org