Try java:/comp instead.  If that doesn't help, then we'll need more info:

- OS:
- where you got tomcat from  (tomcat.apache.org or third party repackage)
- Details of your setup like what's in tomcat's common/lib folder?
- Config (relevant parts of server.xml, the webapp's context.xml and
WEB-INF/web.xml)
- The code used to access JNDI if available:

Links to any docs you used to get you to this point would also be great
just in case they are providing bad advice.

--David

Mikolaj Rydzewski wrote:
> Hello everybody,
>
> I have faced interesting issue recently. Here are details:
> I had to implement custom log4j appender that logs particular messages
> to database (JDBCAppender was not enough). So I did, using JNDI based
> datasources, not a difficult task. Of course I updated server.xml,
> context.xml and web.xml with datasource definition, etc.
>
> Unfortunately every time I deployed application there was "Name
> java:comp is not bound in this Context" error  in logfile (see
> stacktrace at end of email).
> It's strange, isn't it? "java:comp" is a standard Java root for all
> JNDI based resources. So I don't understand how does it happen that it
> is not bound.
>
> My appender implementation tries to lookup datasource in JNDI just
> after all properties has been set (recommended way -
> http://tinyurl.com/dg4fxa). Then I moved JNDI lookup code to method
> that actully performs logging. And it started to work!
>
> So, to summarize. My custom log4j code was not able to lookup JNDI
> resources during deployment process. But it was able to during normal
> webapplication usage.
>
> Is it expected behaviour? It looks like Tomcat (5.5.26 on Sun's JDK
> 1.5 in my case) fills JNDI context information after webapplication
> deployment.
>
> On other hand, I wonder how does it keep separate copies of JNDI
> catalog per webapplication.
>
>
> javax.naming.NameNotFoundException: Name java:comp is not bound in
> this Context
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
>        at javax.naming.InitialContext.lookup(InitialContext.java:351)
>        at
> mypackage.DataSourceAppender.activateOptions(DataSourceAppender.java:34)
>        at
> org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:256)
>        at
> org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:220)
>
>        at
> org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:150)
>
>        at
> org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:163)
>
>        at
> org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:425)
>
>        at
> org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:345)
>
>        at
> org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:827)
>        at
> org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:712)
>
>        at
> org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:618)
>
>        at
> org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:470)
>
>        at org.apache.log4j.LogManager.<clinit>(LogManager.java:122)
>        at org.apache.log4j.Logger.getLogger(Logger.java:104)
>        at
> org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:289)
>
>        at
> org.apache.commons.logging.impl.Log4JLogger.<init>(Log4JLogger.java:109)
>        at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>        at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>
>        at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>
>        at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
>        at
> org.apache.commons.logging.impl.LogFactoryImpl.createLogFromClass(LogFactoryImpl.java:1116)
>
>        at
> org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:914)
>
>        at
> org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:604)
>
>        at
> org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:336)
>
>        at
> org.apache.commons.logging.LogFactory.getLog(LogFactory.java:704)
>        at
> org.apache.catalina.core.ContainerBase.getLogger(ContainerBase.java:381)
>        at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4119)
>        at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
>
>        at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
>        at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
>        at
> org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
>
>        at
> org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
>
>        at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
>        at
> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>        at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>
>        at
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
>
>        at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
>        at
> org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
>        at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
>        at
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>        at
> org.apache.catalina.core.StandardService.start(StandardService.java:448)
>        at
> org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
>        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
>        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
>
>
>
>


-- 
David Smith
Programmer/Analyst
College of Agriculture and Life Sciences
Cornell University
B32 Morrison Hall
Ithaca, NY 14853
Phone: (607) 255-4334


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to