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