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>
Am Dienstag, den 07.11.2006, 19:24 +0100 schrieb Markus Schönhaber:
> Patrick Schulz wrote:
>
> > Der Servlet 2.4 Spezifikation zu Folge werden im web.xml
> > Deployment-Descriptor externe Resourcen über <resource-ref> deklariert.
> > Darin enthalten ist eine Definition namens <res-auth>, deren genauer
> > Sinn sich mir nicht direkt erschließt.
> >
> > Die Spezifikation schreibt dazu:
> > "The res-auth specifies whether the deployment component code signs on
> > programmatically to the resource manager, or whether the container will
> > sign on to the resource manager on behalf of the deployment component.
> > In the latter case, the container uses the information supplied by the
> > deployer."
> >
> > Die möglichen Werte für diese Definition sind "Container" und
> > "Application".
> >
> > Kann mir jemand erklären wie das genau zu verstehen ist oder es Anhand
> > eines Beispiels verdeutlichen?
>
> Meinem Verständnis nach geht es um folgendes: Mit <resource-ref> refernzierst
> Du ja eine externe Ressource via JNDI. Wenn diese Ressource nun bspw. eine
> SQL-Datenbank darstellt, mußt Du Dich im Zweifel erst anmelden, bevor Du
> tatsächlich auf die Daten zugreifen kannst. <res-auth> legt nun fest, wer für
> die Anmeldung zuständig ist, der Code Deiner WebApp selbst ("Application")
> oder der Servlet-Container ("Container"). In letzterem Falle muß natürlich
> der Container die zur Anmeldung nötigen Credentials kennen, d. h. Du mußt sie
> ihm auf irgendeine (Container-spezifische) Weise mitgeteilt haben.
>
> Selbst habe ich allerdings <resource-ref> noch nie verwendet, sondern immer
> das Tomcat-spezifische <Resource>. Das hat den Vorteil, daß der Tomcat gleich
> einen Connection-Pool aufbaut.
> Der Code, um den JNDI-Lookup zu machen und sich dann bspw. die
> javax.sql.Connction zu holen, ist in beiden Varianten i. w. identisch.
>
> Gruß
> mks
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org