Hi, The documentation says;
Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource) envCtx.lookup("jdbc/EmployeeDB"); However, we use; try { Context ctx = new InitialContext(); dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/yourdb"); } catch (NamingException nE) { // log somewhere } catch (NullPointerException npE) { // log somewhere } Does that work for you? Allistair > -----Original Message----- > From: Sean Rowe [mailto:[EMAIL PROTECTED] > Sent: 23 August 2005 16:29 > To: Tomcat Users List > Subject: Re: jndi question > > > Brian, thank you for replying. I was afraid my topic was > dead. If you > could look at my first post, I listed all the files that you have > suggested I take a look at. I have done everything you have > suggested, > but am still getting errors. The error I am getting now is > > javax.naming.NameNotFoundException: Name java:comp is not > bound in this > Context > > I can't find anything on the net or in any books I've looked at that > explains this. As far as I can tell, java:comp should just > be there. > Any ideas? Thanks again. > > Sean > > Brian Cook wrote: > > > > > Yes you can use JNDI with out using JSTL. But the only way to > > configure it is to define the JNDI resources in the web.xml and > > context.xml files. Technically you should be able to use the > > globally defined JNDI resources in server.xml, and I have seen > > configuration set ups doing it when googling. But could never get > > them to work. > > > > This highlights another area of seemingly unneeded complication in > > Java/Unix development. Using JNDI for data sources which > was supposed > > to help you save time requires that you redundantly define the JNDI > > resource in at lest 2 if not 3 places. > > > > The admin tool which was also supposed to help save time > defines the > > JNDI resources in server.xml which does not really seem to > be all that > > helpful. I am sure there is likely a reason for this but I am > > ignorant of it. The admin tool is also supposed to let you define > > JNDI resources per context but it errors out when ever I > have tried it. > > > > My experience with the Tomcat Admin and Manager tools is > that they are > > worthless. Of the few steps they try to help with more > often that not > > they just return errors when you need to use it. I removed > them both > > and have gone back to doing set ups manually and there has not been > > much of a time difference doing it this way. > > > > Any way for JNDI to work you will have to add the > definition for it in > > both web.xml and context.xml in the <<Tomcat > > Folder>>/conf/Catalina/localhost/ folder. This seems counter > > productive since it makes your app less portable having the > data base > > configuration details inside the context and by extent the WAR file > > but it is what you have to do to get it to work right now. > > > > I feel your pain I know it is frustrating spending hours debugging > > just the DB connection but todate that is the reality of > Java web app > > development. It is why I fear we will all be .Net > developers some day. > > > > > > Example : > > > http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-resources > -howto.html > > > > <CODE> > > > > Context initCtx = new InitialContext(); > > Context envCtx = (Context) initCtx.lookup("java:comp/env"); > > DataSource ds = (DataSource) > > envCtx.lookup("jdbc/EmployeeDB"); > > > > Connection conn = ds.getConnection(); > > ... use this connection to access the database ... > > conn.close(); > > > > </CODE> > > > > > > > > > > > > <WEB.XML> > > > > <resource-ref> > > <description> > > Resource reference to a factory for java.sql.Connection > > instances that may be used for talking to a particular > > database that is configured in the server.xml file. > > </description> > > <res-ref-name> > > jdbc/EmployeeDB > > </res-ref-name> > > <res-type> > > javax.sql.DataSource > > </res-type> > > <res-auth> > > Container > > </res-auth> > > </resource-ref> > > > > </WEB.XML> > > > > > > > > > > <CONTEXT FILE> > > > > <Context> > > > > <Resource name="jdbc/EmployeeDB" > > auth="Container" > > type="javax.sql.DataSource" > > username="dbusername" > > password="dbpassword" > > driverClassName="org.hsql.jdbcDriver" > > url="jdbc:HypersonicSQL:database" > > maxActive="8" > > maxIdle="4"/> > > > > </Context> > > > > </CONTEXT FILE> > > > > > > > > > > > > > > Sean Rowe wrote: > > > >> Dirk, I'm sorry I didn't see the difference on the page > you sent me > >> to. However, if there is a way I can do this without > having to use > >> jstl, I would really like to know. I was hoping to put > the code in a > >> class somewhere that my servlets could use. > >> > >> thanks, > >> sean > >> > >> Dirk Weigenand wrote: > >> > >>> Sean, > >>> > >>> > >>> > >>>> --- Ursprüngliche Nachricht --- > >>>> Von: Sean Rowe <[EMAIL PROTECTED]> > >>>> An: Tomcat Users List <tomcat-user@jakarta.apache.org> > >>>> Betreff: Re: jndi question > >>>> Datum: Mon, 22 Aug 2005 09:24:10 -0500 > >>>> > >>>> Thanks for responding Dirk. I've practically memorized the > >>>> documentation on the link you sent: > >>>> > >>>> // Obtain our environment naming context > >>>> Context initCtx = new InitialContext(); > >>>> Context envCtx = (Context) initCtx.lookup("java:comp/env"); > >>>> > >>>> // Look up our data source > >>>> DataSource ds = (DataSource) > >>>> envCtx.lookup("jdbc/EmployeeDB"); > >>>> > >>>> // Allocate and use a connection from the pool > >>>> Connection conn = ds.getConnection(); > >>>> ... use this connection to access the database ... > >>>> conn.close(); > >>>> > >>>> Whenever I try this, here's what I get (which led me to > trying it > >>>> the way > >>>> I posted): > >>>> > >>>> javax.naming.NameNotFoundException: Name java:comp is > not bound in > >>>> this > >>>> Context > >>>> > >>>> > >>> > >>> > >>> > >>> No. Did you look at > >>> > http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasourc e-examples-howto.html? >>> >>> >>> I recommend putting the context definition in its own content.xml. On >>> redeploying my application tomcat wouldn't find the driver class >>> anymore. >>> >>> Mind you not the class itself but the definition of what class to load. >>> >>> This problem was solved by putting the context into context.xml. >>> >>> regards >>> Dirk >>> >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > >------------------------------------------------------------------------ > >--------------------------------------------------------------------- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <FONT SIZE=1 FACE="VERDANA,ARIAL" COLOR=BLUE> ------------------------------------------------------- QAS Ltd. Registered in England: No 2582055 Registered in Australia: No 082 851 474 ------------------------------------------------------- </FONT> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]