Hi
First of all: sory for the rather lengthy post, but I think
it is better to provide all info that I think is relevant
at once.
Now for my problem: I'm installing a Web server machine
and I've encountered a rather weird problem: I can access
the "standard" Tomcat examples through Apache (using
mod_jk2), but when I try to access my own web app, it
fails (No Context configured to process this request) when
passing through Apache. If I access it directly (using a
temporary HttpConnector I defined in the server.xml), all
is fine (that is to say: I can access my JSP pages).
I thing I've got an error in my mod_jk2 config. I've tried
Googeling and searching the Tomcat docs and the archives of
this list, but after trying several hints I've found on the
Net, I still can't access my web app :(
The details:
Hardware/Software versions
==========================
- Sun Solaris 5.9 on SPARC (64 bit)
- J2SDK 1.4.1 (pre-installed on the machine)
- Custom compiled Apache 2.0.49 (using GCC 3.3.2)
- GCC 3.3.2
- Custom compiled OpenSSL 0.9.7d (with GCC 3.3.2)
- Tomcat 4.1.30 (binary release)
- Custom compiled mod_jk2 2.0.4 (with GCC 3.3.2)
All custom compiled software *is* 64-bit
Installation and configuration
==============================
I've installed Tomcat 4 and Apache 2. I then compiled
mod_jk2 and OpenSSL 0.9.7d created self-signed SSL
certificates for Apache.
I defined an Alias to the Tomcat example directory in my
Apache httpd.conf configuration file and I load mod_jk2:
----- 8< ----- httpd.conf fragment ----- 8< -----
Alias /examples "/path/to/tomcat/webapps/examples"
<Directory "/path/to/tomcat/webapps/examples">
Options Indexes Multiviews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Location "/examples/WEB-INF/">
AllowOverride None
Deny from all
</Location>
<IfModule !mod_jk2.c>
LoadModule jk2_module mod_jk2.so
</IfModule>
----- >8 ----- httpd.conf fragment ----- >8 -----
and I created a workers2.properties:
----- 8< ----- workers2.properties ----- 8< -----
[channel.socket:localhost:8009]
debug=0
port=8009
host=127.0.0.1
tomcatId=localhost:8009
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
[uri:/examples/*.jsp]
worker=ajp13:localhost:8009
----- >8 ----- workers2.properties ----- >8 -----
I started up Apache and Tomcat (the latter using
/path/to/tomcat/bin/startup.sh). In the browser, I now
have access to https://xxx.xxx.xxx.xxx/examples/ and
everything works fine.
I've then installed my web app under a separate directory
/path/to/application. The web app uses a separate Tomcat
instance and is started with a script like:
----- 8< ----- Tomcat instance startup script ----- 8< -----
export CATALINA_HOME=/path/to/tomcat
export CATALINA_BASE=/path/to/application
export JAVA_HOME=/usr/j2se
export PATH=${PATH}:${JAVA_HOME}/bin/sparcv9
export CLASSPATH=${CATALINA_BASE/webapps/name/jsp/WEB-INF/classes
case "$1" in
start | reload) $CATALINA_HOME/bin/startup.sh ;;
stop) $CATALINA_HOME/bin/shutdown.sh ;;
esac
----- >8 ----- Tomcat instance startup script ----- >8 -----
The current server.xml defines two Connectors: an HttpConnector
for direct acces on port 8180, and the JK2 connector, using port
8109:
----- 8< ----- server.xml fragment ----- 8< -----
<!-- mod_jk2 on port 8109 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8109" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
<!-- Define an HttpConnector on port 8180 -->
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8180" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="60000"/>
----- >8 ----- server.xml fragment ----- >8 -----
And the context definition is
----- 8< ----- server.xml fragment ----- 8< -----
<Context path="/B2C" docBase="name/jsp" debug="0"
reloadable="false" crossContext="true">
</Context>
----- >8 ----- server.xml fragment ----- >8 -----
I've defined the following Alias for Apache:
----- 8< ----- httpd.conf fragment ----- 8< -----
Alias /B2C "/path/to/application/webapps/name/jsp"
<Directory "/path/to/application/webapps/name/jsp">
Options -Indexes
</Directory>
<Location "/B2C/WEB-INF/">
AllowOverride None
Deny from all
</Location>
----- >8 ----- httpd.conf fragment ----- >8 -----
and I've added the following lines to the workers2.properties:
----- 8< ----- workers2.properties fragment ----- 8< -----
[channel.socket:localhost:8109]
debug=0
port=8109
host=127.0.0.1
tomcatId=localhost:8109
[ajp13:localhost:8109]
channel=channel.socket:localhost:8109
[uri:/B2C/*.jsp]
worker=ajp13:localhost:8109
----- >8 ----- workers2.properties fragment ----- >8 -----
The /path/to/application/conf/jk2.properties file specifies
----- 8< ----- jk2.properties ----- 8< -----
channelSocket.port=8109
----- >8 ----- jk2.properties ----- >8 -----
When I now start up the Tomcat instance for my application (using
the script defined above) and I restart Apache, I can still access
the Tomcat examples and I can access directly my application (on
HTTP using port 8180). However, if I pass via mod_jk2, I get a
"No context configured" error. What did I do wrong ? I suspect an
error in my mod_jk2 config, since I can access the application
on port 8180.
Note that a similar setup, using mod_jk, *does* work for several
of our projects already !
TIA
Sven
--
Sven Bovin, adjunct Projectleider
Callata� & Wouters Financial Software
P. De Dekenstraat 14
B-1040 Brussel
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]