tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Allistair Crossley" <Allistair.Cross...@QAS.com>
Subject RE: jndi question
Date Tue, 23 Aug 2005 15:35:08 GMT
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:ichabooka@gmail.com]
> 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 <ichabooka@gmail.com>
> >>>> 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: tomcat-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
>>
>
>
>------------------------------------------------------------------------
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org



<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: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Mime
View raw message