Hi,

I posted questions to the "users" mailing list several times, but 
unfortunately the answers to solve my problem was not there. Therefore 
i'll try the real guru's in the dev mailing list now.

The problem is that I can't get JSP pages to be accessed via Apache. 
When I request a JSP page I only get the JSP source back (instead of the 
generated HTML).

I'm using:
Linux Kernel 2.4.6
Apache version: 1.3.14
Tomcat version: 3.2.3
Mod_jk version:  tomcat-mod-3.2.2-1.i386.rpm

The mod_jk.log reports
[jk_uri_worker_map.c (345)]: Into jk_uri_worker_map_t::map_uri_to_worker
[jk_uri_worker_map.c (407)]: jk_uri_worker_map_t::map_uri_to_worker, 
Found a match ajp13

So Apache seems to be configure correct. However, requests never seems 
to reach Tomcat:

When I do a telnet to port 8009 or 8007 I do get a response so tomcat 
seems to be listening on these ports. Requesting a page on port 8080 
(Tomcat direct without using apache) works fine.

I did increase the debug levels in mod_jk.conf and server.xml, but that 
did not give me more information. Both files are attached to this mail.
The console in which Tomcat is running only reports information when a 
request to port 8080 is done. For me this indicates that requests via 
Apache never reach Tomcat.

jasper.log reports:
2001-09-01 18:05:24 - Parent class loader is: AdaptiveClassLoader(  )
2001-09-01 18:05:24 - Scratch dir for the JSP engine is: 
/opt/jakarta-tomcat-3.2.3/work/localhost_8080%2Fexamples
2001-09-01 18:05:24 - IMPORTANT: Do not modify the generated servlets
2001-09-01 18:05:24 - Parent class loader is: AdaptiveClassLoader(  )
2001-09-01 18:05:24 - Parent class loader is: AdaptiveClassLoader(  )
2001-09-01 18:05:24 - Parent class loader is: AdaptiveClassLoader(  )

Only when a request to port 8080 is done more information is logged into 
jasper.log.

servlet.log reports:
2001-09-01 18:05:24 - path="/examples" :jsp: init
2001-09-01 18:05:24 - path="/admin" :jsp: init
2001-09-01 18:05:24 - path="" :jsp: init
2001-09-01 18:05:24 - path="/test" :jsp: init
2001-09-01 18:07:31 - path="/examples" :jsp: init

What else can I check to find the problem? Any help is appreciated!

Regards,

Gero Vermaas
<?xml version="1.0" encoding="ISO-8859-1"?>

<Server>
    <!-- Debug low-level events in XmlMapper startup 
    <xmlmapper:debug level="1" />
    -->
    
    <!-- 

    Logging:

         Logging in Tomcat is quite flexible; we can either have a log
         file per module (example: ContextManager) or we can have one
         for Servlets and one for Jasper, or we can just have one
         tomcat.log for both Servlet and Jasper.  Right now there are
         three standard log streams, "tc_log", "servlet_log", and
         "JASPER_LOG".  

	 Path: 

	 The file to which to output this log, relative to
	 TOMCAT_HOME.  If you omit a "path" value, then stderr or
	 stdout will be used.

	 Verbosity: 

	 Threshold for which types of messages are displayed in the
	 log.  Levels are inclusive; that is, "WARNING" level displays
	 any log message marked as warning, error, or fatal.  Default
	 level is WARNING.

	 verbosityLevel values can be: 
	    FATAL
	    ERROR
	    WARNING 
            INFORMATION
            DEBUG

	 Timestamps:

	 By default, logs print a timestamp in the form "yyyy-MM-dd
	 hh:mm:ss" in front of each message.  To disable timestamps
	 completely, set 'timestamp="no"'. To use the raw
	 msec-since-epoch, which is more efficient, set
	 'timestampFormat="msec"'.  If you want a custom format, you
	 can use 'timestampFormat="hh:mm:ss"' following the syntax of
	 java.text.SimpleDateFormat (see Javadoc API).  For a
	 production environment, we recommend turning timestamps off,
	 or setting the format to "msec".

	 Custom Output:

	 "Custom" means "normal looking".  "Non-custom" means
	 "surrounded with funny xml tags".  In preparation for
	 possibly disposing of "custom" altogether, now the default is
	 'custom="yes"' (i.e. no tags)

	 Per-component Debugging:

	 Some components accept a "debug" attribute.  This further
	 enhances log output.  If you set the "debug" level for a
	 component, it may output extra debugging information.
    -->

    <!-- if you don't want messages on screen, add the attribute
            path="logs/tomcat.log" 
	 to the Logger element below
    -->
    <Logger name="tc_log" 
            verbosityLevel = "DEBUG" 
    />

    <Logger name="servlet_log" 
            path="logs/servlet.log"
            verbosityLevel = "DEBUG"
    />

    <Logger name="JASPER_LOG" 
	    path="logs/jasper.log"
            verbosityLevel = "DEBUG" />

    <!-- You can add a "home" attribute to represent the "base" for 
         all relative paths. If none is set, the TOMCAT_HOME property
         will be used, and if not set "." will be used.
         webapps/, work/ and logs/ will be relative to this ( unless 
         set explicitely to absolute paths ).

         You can also specify a "randomClass" attribute, which determines 
         a subclass of java.util.Random will be used for generating session IDs.
         By default this is "java.security.SecureRandom". 
         Specifying "java.util.Random" will speed up Tomcat startup, 
         but it will cause sessions to be less secure.

         You can specify the "showDebugInfo" attribute to control whether
         debugging information is displayed in Tomcat's default responses.
         This debugging information includes:
             1. Stack traces for exceptions
             2. Request URI's that cause status codes >= 400
         The default is "true", so you must specify "false" to prevent
         the debug information from appearing.  Since the debugging
         information reveals internal details about what Tomcat is serving,
         set showDebugInfo="false" if you wish increased security.
      -->
    <ContextManager debug="99" workDir="work" showDebugInfo="true" >

      <!-- ==================== Interceptors ==================== -->

        <!-- 
         ContextInterceptor className="org.apache.tomcat.context.LogEvents" 
         -->
        
        <ContextInterceptor className="org.apache.tomcat.context.AutoSetup" />

        <ContextInterceptor 
            className="org.apache.tomcat.context.WebXmlReader" />

        <!-- Uncomment out if you have JDK1.2 and want to use policy 
        <ContextInterceptor 
            className="org.apache.tomcat.context.PolicyInterceptor" />
        -->

        <ContextInterceptor 
            className="org.apache.tomcat.context.LoaderInterceptor" />
        <ContextInterceptor 
            className="org.apache.tomcat.context.DefaultCMSetter" />
        <ContextInterceptor 
            className="org.apache.tomcat.context.WorkDirInterceptor" />

        <!-- Request processing -->
        <!-- Session interceptor will extract the session id from cookies and 
             deal with URL rewriting ( by fixing the URL ).  If you wish to
             suppress the use of cookies for session identifiers, change the
             "noCookies" attribute to "true"
          -->
        <RequestInterceptor 
            className="org.apache.tomcat.request.SessionInterceptor"
            noCookies="false" />

        <!-- Find the container ( context and prefix/extension map ) 
             for a request.
          -->
        <RequestInterceptor 
            className="org.apache.tomcat.request.SimpleMapper1" 
            debug="99" />

        <!-- Non-standard invoker, for backward compat. ( /servlet/* )
             You can modify the prefix that is matched by adjusting the
             "prefix" parameter below.  Be sure your modified pattern
             starts and ends with a slash.

             NOTE:  This prefix applies to *all* web applications that
             are running in this instance of Tomcat.
          -->
        <RequestInterceptor 
            className="org.apache.tomcat.request.InvokerInterceptor" 
            debug="99" prefix="/servlet/" />

        <!-- "default" handler - static files and dirs.  Set the
             "suppress" property to "true" to suppress directory listings
             when no welcome file is present.

             NOTE:  This setting applies to *all* web applications that
             are running in this instance of Tomcat.
          -->
        <RequestInterceptor 
            className="org.apache.tomcat.request.StaticInterceptor" 
            debug="99" suppress="false" />

        <!-- Plug a session manager. You can plug in more advanced session
             modules.
          -->
        <RequestInterceptor 
            className="org.apache.tomcat.session.StandardSessionInterceptor" />

        <!-- Check if the request requires an authenticated role.
          -->
        <RequestInterceptor 
            className="org.apache.tomcat.request.AccessInterceptor" 
            debug="99" />

        <!-- Check permissions using the simple xml file. You can 
             plug more advanced authentication modules.
          -->
        <RequestInterceptor 
            className="org.apache.tomcat.request.SimpleRealm" 
            debug="99" />

       <!-- UnComment the following and comment out the
            above to get a JDBC realm.
            Other options for driverName: 
              driverName="oracle.jdbc.driver.OracleDriver"
              connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
              connectionName="scott"
              connectionPassword="tiger"

              driverName="org.gjt.mm.mysql.Driver"
              connectionURL="jdbc:mysql://localhost/authority"
              connectionName="test"
              connectionPassword="test"

            "connectionName" and "connectionPassword" are optional.
        -->
        <!--
        <RequestInterceptor 
            className="org.apache.tomcat.request.JDBCRealm" 
            debug="99" 
	    driverName="sun.jdbc.odbc.JdbcOdbcDriver" 
	    connectionURL="jdbc:odbc:TOMCAT" 
	    userTable="users" 
            userNameCol="user_name" 
            userCredCol="user_pass" 
	    userRoleTable="user_roles" 
            roleNameCol="role_name" />
        -->

        <!-- Loaded last since JSP's that load-on-startup use request handling -->
        <ContextInterceptor 
            className="org.apache.tomcat.context.LoadOnStartupInterceptor" />

      <!-- ==================== Connectors ==================== -->

        <!-- Normal HTTP -->
        <Connector className="org.apache.tomcat.service.PoolTcpConnector">
            <Parameter name="handler" 
                value="org.apache.tomcat.service.http.HttpConnectionHandler"/>
            <Parameter name="port" 
                value="8080"/>
        </Connector>

        <!--
            Uncomment this for SSL support. 
            You _need_ to set up a server certificate if you want this
            to work, and you need JSSE.
            1. Add JSSE jars to CLASSPATH 
            2. Edit java.home/jre/lib/security/java.security
               Add:
               security.provider.2=com.sun.net.ssl.internal.ssl.Provider
            3. Do: keytool -genkey -alias tomcat -keyalg RSA
               RSA is essential to work with Netscape and IIS.
               Use "changeit" as password. ( or add keypass attribute )
               You don't need to sign the certificate.
 
            You can set parameter keystore and keypass if you want 
            to change the default ( user.home/.keystore with changeit )
         -->
        <!--
        <Connector className="org.apache.tomcat.service.PoolTcpConnector">
            <Parameter name="handler" 
                value="org.apache.tomcat.service.http.HttpConnectionHandler"/>
            <Parameter name="port" 
                value="8443"/>
            <Parameter name="socketFactory" 
                value="org.apache.tomcat.net.SSLSocketFactory" />
        </Connector>
        -->

        <!-- Apache AJP12 support. This is also used to shut down tomcat.
          -->
        <Connector className="org.apache.tomcat.service.PoolTcpConnector">
            <Parameter name="handler" 
       value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>
            <Parameter name="port" value="8007"/>
        </Connector>

        <!-- Apache AJP13 support. This is also used to shut down tomcat.
          -->
        <Connector className="org.apache.tomcat.service.PoolTcpConnector">
            <Parameter name="handler" 
       value="org.apache.tomcat.service.connector.Ajp13ConnectionHandler"/>
            <Parameter name="port" value="8009"/>
        </Connector>


        <!-- ==================== Special webapps ==================== -->
        <!-- You don't need this if you place your app in webapps/
             and use defaults. 
             For security you'll also need to edit tomcat.policy

             Defaults are: debug=0, reloadable=true, trusted=false
             (trusted allows you to access tomcat internal objects 
             with FacadeManager ), crossContext=true (allows you to
             access other contexts via ServletContext.getContext())
 
             If security manager is enabled, you'll have read perms.
             in the webapps dir and read/write in the workdir.
         -->

        <Context path="/examples" 
                 docBase="webapps/examples" 
                 crossContext="false"
                 debug="99" 
                 reloadable="true" > 
        </Context>

        <!-- Admin context will use tomcat.core to add/remove/get info about
             the webapplications and tomcat internals. 
             By default it is not trusted - i.e. it is not allowed access to 
             tomcat internals, only informations that are available to all 
             servlets are visible.

             If you change this to true, make sure you set a password.
          -->
        <Context path="/admin" 
                 docBase="webapps/admin" 
                 crossContext="true"
                 debug="99" 
                 reloadable="true" 
                 trusted="false" > 
        </Context>

        <!-- Virtual host example - 
             In "127.0.0.1" virtual host we'll reverse "/" and 
             "/examples"
             (XXX need a better example )
             (use  "http://127.0.0.1/examples"; )
        <Host name="127.0.0.1" >
           <Context path="" 
                    docBase="webapps/examples" />
           <Context path="/examples" 
                    docBase="webapps/ROOT" />
        </Host>
         -->

    </ContextManager>
</Server>
###################################################################
# Auto generated configuration. Dated: Mon Jul 24 18:56:51 CEST 2000
###################################################################

JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile /var/log/httpd/mod_jk.log

#
# Log level to be used by mod_jk
#
JkLogLevel debug 

###################################################################
#                     SSL configuration                           #
# 
# By default mod_jk is configured to collect SSL information from
# the apache environment and send it to the Tomcat workers. The
# problem is that there are many SSL solutions for Apache and as
# a result the environment variable names may change.
#
# The following (commented out) JK related SSL configureation
# can be used to customize mod_jk's SSL behaviour.
# 
# Should mod_jk send SSL information to Tomact (default is On)
# JkExtractSSL Off
# 
# What is the indicator for SSL (default is HTTPS)
# JkHTTPSIndicator HTTPS
# 
# What is the indicator for SSL session (default is SSL_SESSION_ID)
# JkSESSIONIndicator SSL_SESSION_ID
# 
# What is the indicator for client SSL cipher suit (default is SSL_CIPHER)
# JkCIPHERIndicator SSL_CIPHER
# 
# What is the indicator for the client SSL certificated (default is SSL_CLIENT_CERT)
# JkCERTSIndicator SSL_CLIENT_CERT
# 
#                                                                 #
###################################################################

#
# Root context mounts for Tomcat
#
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13

#########################################################
# Auto configuration for the /examples context starts.
#########################################################

#
# The following line makes apache aware of the location of the /examples context
#
Alias /examples "/opt/jakarta-tomcat-3.2.3/webapps/examples"
<Directory "/opt/jakarta-tomcat-3.2.3/webapps/examples">
    Options Indexes FollowSymLinks
</Directory>

#
# The following line mounts all JSP files and the /servlet/ uri to tomcat
#
JkMount /examples/servlet/* ajp13
JkMount /examples/*.jsp ajp13

#
# The following line prohibits users from directly access WEB-INF
#
<Location "/examples/WEB-INF/">
    AllowOverride None
    deny from all
</Location>

#######################################################
# Auto configuration for the /examples context ends.
#######################################################

#########################################################
# Auto configuration for the /admin context starts.
#########################################################

#
# The following line makes apache aware of the location of the /admin context
#
Alias /admin "/opt/jakarta-tomcat-3.2.3/webapps/admin"
<Directory "/opt/jakarta-tomcat-3.2.3/webapps/admin">
    Options Indexes FollowSymLinks
</Directory>

#
# The following line mounts all JSP files and the /servlet/ uri to tomcat
#
JkMount /admin/servlet/* ajp13
JkMount /admin/*.jsp ajp13

#
# The following line prohibits users from directly access WEB-INF
#
<Location "/admin/WEB-INF/">
    AllowOverride None
    deny from all
</Location>

#######################################################
# Auto configuration for the /admin context ends.
#######################################################

#########################################################
# Auto configuration for the /test context starts.
#########################################################

#
# The following line makes apache aware of the location of the /test context
#
Alias /test "/opt/jakarta-tomcat-3.2.3/webapps/test"
<Directory "/opt/jakarta-tomcat-3.2.3/webapps/test">
    Options Indexes FollowSymLinks
</Directory>

#
# The following line mounts all JSP files and the /servlet/ uri to tomcat
#
JkMount /test/servlet/* ajp13
JkMount /test/*.jsp ajp13

#
# The following line prohibits users from directly access WEB-INF
#
<Location "/test/WEB-INF/">
    AllowOverride None
    deny from all
</Location>

#######################################################
# Auto configuration for the /test context ends.
#######################################################

Reply via email to