[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Tomcat4 manager application



I am using Tomcat4 and I experienced a problem similar to Guy Geens' (http://www.mail-archive.com/debian-java@lists.debian.org/msg01356.html), but the problem comes only accessing to Tomcat trough Apache (using mod_webapp).
I used Tomcat 4.0.3 and I had no problem.
Now, with Tomcat4.1.12, I have this strange behaviour:
 
- using the manager application through the Coyote HTTP/1.1 Connector on port 8080 I have no problem;
- using the manager application through Apache web server, using the WarpConnector on port 8008 (using mod_webapp), after giving the user and password to autenticate myself on the manager context, I get this exception:
 
HTTP Status 500 - Internal Server Error
 
--------------------------------------------------------------------------------
 
type Exception report
 
message Internal Server Error
 
description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.
 
exception
 
javax.servlet.ServletException: Error allocating a servlet instance
 at org.apache.catalina.core.StandardWrapper.allocate(Unknown Source)
 at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
 at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
 at org.apache.catalina.core.StandardContextValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
 at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
 at org.apache.catalina.core.StandardContext.invoke(Unknown Source)
 at org.apache.catalina.core.StandardHostValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.valves.ErrorReportValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
 at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
 at org.apache.catalina.core.StandardEngineValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
 at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
 at org.apache.catalina.connector.warp.WarpRequestHandler.handle(Unknown Source)
 at org.apache.catalina.connector.warp.WarpConnection.run(Unknown Source)
 at java.lang.Thread.run(Thread.java:484)
 

root cause
 
java.lang.SecurityException: Servlet of class org.apache.catalina.servlets.ManagerServlet is privileged and cannot be loaded by this web application
 at org.apache.catalina.core.StandardWrapper.loadServlet(Unknown Source)
 at org.apache.catalina.core.StandardWrapper.allocate(Unknown Source)
 at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
 at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
 at org.apache.catalina.core.StandardContextValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
 at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
 at org.apache.catalina.core.StandardContext.invoke(Unknown Source)
 at org.apache.catalina.core.StandardHostValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.valves.ErrorReportValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
 at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
 at org.apache.catalina.core.StandardEngineValve.invoke(Unknown Source)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Unknown Source)
 at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
 at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
 at org.apache.catalina.connector.warp.WarpRequestHandler.handle(Unknown Source)
 at org.apache.catalina.connector.warp.WarpConnection.run(Unknown Source)
 at java.lang.Thread.run(Thread.java:484)
 
--------------------------------------------------------------------------------
 
Apache Tomcat
 

All other non-restricted applications work correctly (jsp and servlets). I did not make particular changes on the original configuration files of Tomcat.
 
At the end of the file httpd.conf I added this lines:
 
WebAppConnection        conn            warp    localhost:8008
WebAppDeploy            ../server/webapps/manager         conn    /manager/
WebAppDeploy            marcotest       conn    /marcotest/
WebAppInfo              /webapp-info
 

I tried to:
- move the manager directory from <TOMCAT_HOME>/server/webapps/manager to <TOMCAT_HOME>/webapps/manager, inserting in httpd.conf aline like this:
WebAppDeploy            manager         conn    /manager/
- move the configuration of the context from file <TOMCAT_HOME>/webapps/manager.xml into the <TOMCAT_HOME>/conf/server.xml file (inside the <Host> tag)
- all combinations of the two.
 
I also tried to add restrictions to another web application and that works!! This is the example:
In server.xml:
        <!-- Tomcat MARCOTEST Context -->
        <Context path="/marcotest" docBase="marcotest" debug="0"
                 reloadable="true" crossContext="false">
          <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="marcotest." suffix=".log"
                     timestamp="true"/>
        </Context>
 
In web.xml of marcotest application:
  <!-- Define a Security Constraint on this Application -->
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Entire Application</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <!-- NOTE:  This role is not present in the default users file -->
       <role-name>manager</role-name>
    </auth-constraint>
  </security-constraint>
 
  <!-- Define the Login Configuration for this Application -->
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Marcotest Application</realm-name>
  </login-config>
 
  <!-- Security roles referenced by this web application -->
  <security-role>
    <description>
      The role that is required to log in to the Marcotest Application
    </description>
    <role-name>manager</role-name>
  </security-role>
 

I am not able to understand!
In production I want to activate only the WarpConnector, so I want to use the manager application via Apache.
 
Thank you,
Bye.
 
Marco.
 
 

Reply to: