Reading the doc on the privileged attribute on the Context tag, it says "Set to true to allow this context to use container servlets, like the manager servlet." I've been unable to find any additional information on container servlets in the Servlet Spec, and searching the source code didn't lead to any insight.
Which leads me to three questions: 1) What is a container servlet? 2) How does Tomcat determine that my webapp is a container servlet? 3) Why didn't I need to set the privileged attribute in 5.0.19?
Thanks,
Jim
Jim Hopp wrote:
I've just upgraded from 5.0.19 to 5.0.24. My webapps worked fine under 5.0.19, but Tomcat is throwing the exception below under 5.0.24 when it tries to start the webapp. (The apps also start properly under 5.0.20, but fail under 5.0.21 with the same exception so it appears that a change made in 5.0.21 is causing the problem.)
My server.xml and web.xml follow the exception trace.
May 10, 2004 3:33:30 PM org.apache.catalina.core.StandardContext start
FINE: Starting tomcat.localhost./property.Context
May 10, 2004 3:33:30 PM org.apache.catalina.core.StandardContext createObjectNam
e
FINE: Registering j2eeType=WebModule,name=//localhost/property,J2EEApplication=n
one,J2EEServer=none for null
May 10, 2004 3:33:30 PM org.apache.catalina.core.StandardContext start
FINE: Configuring default Resources
May 10, 2004 3:33:30 PM org.apache.catalina.core.StandardContext start
FINE: No realm for this host directory:type=Host,host=localhost,path=/property
May 10, 2004 3:33:30 PM org.apache.catalina.core.StandardContext start
FINE: Configuring non-privileged default Loader
May 10, 2004 3:33:30 PM org.apache.catalina.core.StandardContext start
FINE: Processing standard container startup
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext setPublicId
FINE: Setting deployment descriptor public ID to '-//Sun Microsystems, Inc.//DTD
Web Application 2.3//EN'
May 10, 2004 3:33:31 PM org.apache.commons.digester.Digester endElement
SEVERE: End event threw exception
java.lang.ClassNotFoundException: org.apache.catalina.Container
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1340)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1189)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:243)
at org.apache.commons.digester.Rule.end(Rule.java:276)
at org.apache.commons.digester.Digester.endElement(Digester.java:1058)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source
)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown
Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown S
ource)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(
Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Un
known Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextCo
nfig.java:263)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:62
4)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfi
g.java:216)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
268)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478
)
at org.apache.catalina.core.StandardService.start(StandardService.java:4
76)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:229
8)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:284)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:422)
May 10, 2004 3:33:31 PM org.apache.catalina.startup.ContextConfig applicationCon
fig
SEVERE: Parse error in application web.xml
java.lang.ClassNotFoundException: org.apache.catalina.Container
at org.apache.commons.digester.Digester.createSAXException(Digester.java
:2540)
at org.apache.commons.digester.Digester.createSAXException(Digester.java
:2566)
at org.apache.commons.digester.Digester.endElement(Digester.java:1061)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source
)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown
Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown S
ource)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(
Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Un
known Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextCo
nfig.java:263)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:62
4)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfi
g.java:216)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
268)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478
)
at org.apache.catalina.core.StandardService.start(StandardService.java:4
76)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:229
8)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:284)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:422)
May 10, 2004 3:33:31 PM org.apache.catalina.startup.ContextConfig applicationCon
fig
SEVERE: Occurred at line 13 column 13
May 10, 2004 3:33:31 PM org.apache.catalina.startup.ContextConfig start
SEVERE: Marking this application unavailable due to previous error(s)
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext start
SEVERE: Error getConfigured
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext start
SEVERE: Context startup failed due to previous errors
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext stop
FINE: Stopping
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext filterStop
FINE: Stopping filters
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext listenerStop
FINE: Sending application stop events
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext stop
FINE: Processing standard container shutdown
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext resetContext
FINE: resetContext directory:j2eeType=WebModule,name=//localhost/property,J2EEAp
plication=none,J2EEServer=none null
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext stop
FINE: Stopping complete
May 10, 2004 3:33:31 PM org.apache.catalina.core.StandardContext registerJMX
FINE: Checking for directory:j2eeType=WebModule,name=//localhost/property,J2EEAp
plication=none,J2EEServer=none
Here's the web.xml: <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet> <servlet-name>directory</servlet-name> <servlet-class>nyw.dir.DirectoryServlet</servlet-class> <load-on-startup/> </servlet>
<servlet-mapping> <servlet-name>directory</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
</web-app>
Here's the server.xml: <Server port="23001" shutdown="SHUTDOWN">
<Service name="directory">
<Connector port="13001" secure="true" scheme="https" clientAuth="true" keystoreFile="c:/cvs-work/dvlp/conf/jre/java.keystore" truststoreFile="c:/cvs-work/dvlp/conf/jre/java.truststore" keystorePass="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" keystoreType="UBER"/>
<Engine name="directory" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.MemoryRealm" />
<Valve className="org.apache.catalina.valves.AccessLogValve" prefix="access." suffix=".log" timestamp="true" pattern="common" directory="c:/cvs-work/dvlp/logs/directory"/>
<Host name="localhost" appBase="webapps" workDir="c:/cvs-work/dvlp/temp/tomcat-directory" xmlValidation="false" xmlNamespaceAware="false">
<Context path="/property" docBase="c:/cvs-work/dvlp/bin/directory" reloadable="true"> <Parameter name="propertiesFile"
value="c:/cvs-work/dvlp/conf/tomcat-directory/conf/directory.properties" override="false"/> </Context>
<Context path="/manager"
privileged="true"
docBase="c:/tomcat/server/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/>
</Context>
</Host> </Engine> </Service> </Server>
I note that the manager webapp does start OK and works appears to work properly, so it seems it must be something in the my server.xml or web.xml, but I can't see what it is. I'm a little confused by the ClassNotFoundException, since (according to the Javadoc) o.a.c.Container is an interface, not a class.
My platform is WinXP. I'm running the Sun JDK 1.4.2-b28.
Any ideas on where I should look?
-Jim
--------------------------------------------------------------------- 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]
