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

Antwort per Email an