Hello, My very basic servlet fails to initialize when trying to read its JNDI environment entry. The app context name is xbasic. The context.xml is in xbasic.war's META-INF directory and TomCat (6.0.33) correctly copies it to ${tomcat.home}/conf/Catalina/localhost/xbasic.xml on first deploy. Below are the relevant snippets. Can anyone see what I'm doing wrong or is this a bug?
BTW, I'm running this under openjdk 6. === EXCEPTION ================================================ javax.servlet.ServletException: Error instantiating servlet class org.cliftonfarm.xbasic.Controller org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:636) root cause javax.naming.NameNotFoundException: Name configName is not bound in this Context org.apache.naming.NamingContext.lookup(NamingContext.java:770) org.apache.naming.NamingContext.lookup(NamingContext.java:140) org.apache.naming.NamingContext.lookup(NamingContext.java:781) org.apache.naming.NamingContext.lookup(NamingContext.java:140) org.apache.naming.NamingContext.lookup(NamingContext.java:781) org.apache.naming.NamingContext.lookup(NamingContext.java:153) org.apache.naming.SelectorContext.lookup(SelectorContext.java:152) javax.naming.InitialContext.lookup(InitialContext.java:409) javax.naming.InitialContext.doLookup(InitialContext.java:282) org.cliftonfarm.xbasic.Controller.<init>(Controller.java:28) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ... === context.xml ================================================ <Context unpackWAR="false" privileged="false" antiResourceLocking="false" antiJARLocking="false"> <Environment name="configName" value="${catalina.base}/local/xbasic/config/master.properties" description="Full path name of the config file." type="java.lang.String"/> </Context> === web.xml ================================================ <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>Controller</servlet-name> <servlet-class>org.cliftonfarm.xbasic.Controller</servlet-class> </servlet> <servlet-mapping> <servlet-name>Controller</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <env-entry> <env-entry-name>configName</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> </env-entry> </web-app> === Servlet constructor ======================================== public class Controller extends HttpServlet { private static final long serialVersionUID = 1L; private String configName; /** * @throws NamingException * @see HttpServlet#HttpServlet() */ public Controller() throws NamingException { super(); // get & store JNDI info configName = InitialContext.doLookup("java:comp/env/configName"); // line 28 log(getClass().getName() +": Successfully initialized. configName=[" +configName +"]"); } ...