Many thanks to Doug and Seven. The core problem on our Windows machines was that we neglected to put a <Resource-Link> entry in the ROOT.xml in the Documents and Settings\..... directory.
On the Linux servers (running 5.5), we needed to put a <Resource-Link> entry in the Context.xml under META-INF. And, to think we worked for several hours on such a simple problem. Thanks again, Carl ----- Original Message ----- From: "Parsons Technical Services" <[EMAIL PROTECTED]> To: "Tomcat Users List" <tomcat-user@jakarta.apache.org> Sent: Tuesday, February 15, 2005 11:16 PM Subject: Re: JNDI lookup returns NamingException > Did you put ResourceLinks in your Default context or the Apps context? > > If not, you will not be able to see the resource. > > http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/globalresources.html > > And the link that is in your server.xml shouldn't be there or anywhere. See > above link. > > Doug > > > ----- Original Message ----- > From: "Carl" <[EMAIL PROTECTED]> > To: "Tomcat User Group" <tomcat-user@jakarta.apache.org> > Sent: Tuesday, February 15, 2005 4:41 PM > Subject: JNDI lookup returns NamingException > > > > For various reasons, I need to put a Hashtable as a resource in the Tomcat > > Context. I have modified the server.xml as follows (note the resource > > entry > > of "DBHashtable"): > > > > <Server port="8005" shutdown="SHUTDOWN" debug="0"> > > <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" > > debug="0"/> > > <Listener > > className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" > > debug="0"/> > > > > <!-- Global JNDI resources --> > > <GlobalNamingResources> > > > > <!-- Test entry for demonstration purposes --> > > <Environment name="simpleValue" type="java.lang.Integer" value="30"/> > > > > <!-- Editable user database that can also be used by > > UserDatabaseRealm to authenticate users --> > > <Resource name="UserDatabase" auth="Container" > > type="org.apache.catalina.UserDatabase" > > description="User database that can be updated and saved"> > > </Resource> > > <Resource name="DBHashtable" auth="Container" type="java.util.Hashtable"/> > > <ResourceParams name="UserDatabase"> > > <parameter> > > <name>factory</name> > > <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> > > </parameter> > > <parameter> > > <name>pathname</name> > > <value>conf/tomcat-users.xml</value> > > </parameter> > > </ResourceParams> > > <ResourceParams name="DBHashtable"> > > <parameter> > > <name>factory</name> > > <value>com.tsr.factory.HashtableFactory</value> > > </parameter> > > </ResourceParams> > > > > </GlobalNamingResources> > > > > <ResourceLink name="linkToGlobal" global="simpleValue" > > type="java.lang.Integer"/> > > > > <!-- Define the Tomcat Stand-Alone Service --> > > <Service name="Catalina"> > > > > <!-- Define a non-SSL Coyote HTTP/1.1 Connector on the port specified > > during installation --> > > <Connector > > port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" > > enableLookups="false" redirectPort="8443" acceptCount="100" > > debug="0" connectionTimeout="20000" > > disableUploadTimeout="true" /> > > <Connector port="8009" > > enableLookups="false" redirectPort="8443" debug="0" > > protocol="AJP/1.3" /> > > <!-- Define the top level container in our container hierarchy --> > > <Engine name="Catalina" defaultHost="localhost" debug="0"> > > > > <!-- Global logger unless overridden at lower levels --> > > <Logger className="org.apache.catalina.logger.FileLogger" > > prefix="catalina_log." suffix=".txt" > > timestamp="true"/> > > > > <Realm className="org.apache.catalina.realm.UserDatabaseRealm" > > debug="0" resourceName="UserDatabase"/> > > > > <Host name="localhost" debug="0" appBase="webapps" > > unpackWARs="true" autoDeploy="true" > > xmlValidation="false" xmlNamespaceAware="false"> > > > > <Logger className="org.apache.catalina.logger.FileLogger" > > directory="logs" prefix="localhost_log." suffix=".txt" > > timestamp="true"/> > > > > </Host> > > > > </Engine> > > > > </Service> > > > > </Server> > > > > > > My application accesses this resource (well, tries to) using the following > > code: > > > > try { > > Context ctx = new InitialContext(); > > if(ctx == null ){ > > System.out.println("Boom - No Context"); > > throw new NamingException("No Context - No DataBase Exists"); > > } > > > > Context envCtx = (Context)ctx.lookup("java:comp/env"); > > Object ud = (Object)envCtx.lookup("DBHashtable"); > > }catch (NamingException ne){ > > ne.printStackTrace(); > > // throw new SQLException("Datasource Not Found"); > > } > > > > It fails of the line "Object ud = (Object)envCtx.lookup("DBHashtable");" > > with the following error: > > > > javax.naming.NamingException: Cannot create resource instance > > at > > org.apache.naming.factory.ResourceEnvFactory.getObjectInstance(ResourceEnvFa > > ctory.java:99) > > at > > javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301) > > at org.apache.naming.NamingContext.lookup(NamingContext.java:791) > > at org.apache.naming.NamingContext.lookup(NamingContext.java:151) > > at LoginServlet.doPost(LoginServlet.java:37) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application > > FilterChain.java:237) > > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh > > ain.java:157) > > at com.tsr.filters.RequestFilter.doFilter(RequestFilter.java:78) > > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application > > FilterChain.java:186) > > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh > > ain.java:157) > > at > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja > > va:214) > > at > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex > > t.java:104) > > at > > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > > at > > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext > > Valve.java:198) > > at > > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja > > va:152) > > at > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex > > t.java:104) > > at > > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > > at > > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137 > > ) > > at > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex > > t.java:104) > > at > > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117 > > ) > > at > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex > > t.java:102) > > at > > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > > at > > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java > > :109) > > at > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex > > t.java:104) > > at > > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) > > at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) > > at > > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) > > at > > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne > > ction(Http11Protocol.java:705) > > at > > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) > > at > > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav > > a:683) > > at java.lang.Thread.run(Thread.java:534) > > > > > > I know the factory is OK because I put a println in it and it seems to > > work > > (it only creates a Hashtable.) > > > > Does anyone have an idea of what I have done wrong? > > > > Thanks, > > > > Carl Kabbe > > > > > > > > > > -- > > No virus found in this outgoing message. > > Checked by AVG Anti-Virus. > > Version: 7.0.300 / Virus Database: 265.8.8 - Release Date: 2/14/2005 > > > > > > --------------------------------------------------------------------- > > 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] > > > > > -- > No virus found in this incoming message. > Checked by AVG Anti-Virus. > Version: 7.0.300 / Virus Database: 265.8.8 - Release Date: 2/14/2005 > > -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 265.8.8 - Release Date: 2/14/2005 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]