| <?xml version="1.0"?> |
| <!DOCTYPE document [ |
| <!ENTITY project SYSTEM "project.xml"> |
| ]> |
| <document url="faq.html"> |
| |
| &project; |
| <copyright> |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| </copyright> |
| <properties> |
| <title>FAQ</title> |
| <author email="hgomez@apache.org">Henri Gomez</author> |
| <date>$Date$</date> |
| </properties> |
| <body> |
| <section name="General"> |
| <p> |
| General Informations and FAQ about JK |
| </p> |
| <subsection name="Where can I get help/support for JK ?"> |
| <p> |
| The primary mechanism for support is through the JK |
| documentation included in the doc directory. |
| Documentation is also available on the Apache Tomcat web site devoted to the |
| <a href="http://tomcat.apache.org/connectors-doc/"> |
| Apache Tomcat Connectors Project</a> |
| For additional help, the best resource is the Tomcat Users Discussion list. |
| You should start by searching |
| <a href="http://mail-archives.apache.org/mod_mbox/tomcat-users/"> |
| the mail list archive</a> |
| before you post questions to the list. |
| If you are unable to locate the answer to your question in the archive, |
| you can post questions about JK to the user list for assistance. |
| Make sure that you include the version of your Webserver, |
| that you are using as well as the platform you are running on |
| and go |
| <a href="http://tomcat.apache.org/lists.html"> |
| here</a> |
| to determine how to subscribe to tomcat mailing list. |
| </p> |
| </subsection> |
| |
| <subsection name="I can't find JK anywhere. Where is it?"> |
| <p> |
| Now that JK moved to the <b>tomcat-connectors</b> repository, |
| the source and the binaries for JK can be downloaded from a mirror at the |
| <a href="http://tomcat.apache.org/download-connectors.cgi"> |
| Tomcat Connectors (mod_jk, mod_jk2) Downloads</a> page. |
| </p> |
| </subsection> |
| |
| <subsection name="What's the difference between JK and mod_jk ?"> |
| <br /> |
| <p> |
| <b>JK</b> is a project covering web-servers to Tomcat connectors, |
| whereas <b>mod_jk</b> is the <a href="../webserver_howto/apache.html">Apache module</a> developed in JK. |
| </p> |
| |
| <p> |
| <a href="../webserver_howto/iis.html">IIS webserver</a>support is implemented on JK, using a redirector |
| called <b>isapi redirector</b>. |
| </p> |
| |
| <p> |
| <a href="../webserver_howto/nes.html">Netscape/SunONE/Sun webserver</a>webserver support is implemented on JK, using a redirector |
| called <b>nsapi redirector</b>. |
| </p> |
| |
| </subsection> |
| |
| <subsection name="Where can I get more information ?"> |
| <p> |
| For <b>JK 1.2.x</b>, you should read : |
| </p> |
| |
| <ul> |
| |
| <li> |
| <a href="../generic_howto/quick.html">For the impatient</a> |
| </li> |
| |
| <li> |
| <a href="../webserver_howto/apache.html">Apache and JK</a> |
| </li> |
| |
| <li> |
| <a href="../webserver_howto/iis.html">IIS and JK</a> |
| </li> |
| |
| <li> |
| <a href="../webserver_howto/nes.html">Netscape/SunONE/Sun and JK</a> |
| </li> |
| |
| <li> |
| <a href="../generic_howto/workers.html">Workers configuration</a> |
| </li> |
| </ul> |
| |
| <p> |
| For more detailed information, have a look at the Reference Guide. |
| You could also try searching the mailing list archives for "JK" or look at the source. |
| </p> |
| </subsection> |
| |
| <subsection name="Which protocol should I use? Ajp12 or Ajp13?"> |
| <p> |
| <a href="../ajp/ajpv13a.html">Ajp13</a> is a newer protocol, it's faster, and it works better with SSL. |
| You almost certainly want to use it now that <strong>ajp12 is deprecated</strong>. |
| </p> |
| <p> |
| Also ajp13 is supported by all Apache Tomcat including 3.2.x , 3.3.x, 4.0.x, 4.1.x, 5.0.x, 5.5.x |
| and the new tomcat 6. |
| </p> |
| |
| <p> |
| Others Servlet engines like <b>jetty</b> have support for Ajp13. |
| </p> |
| </subsection> |
| |
| <subsection name="I've got a firewall between my web server and Tomcat which drops ajp13 connections after some time"> |
| <p> |
| Ajp13 uses persistant connections where the traffic could be null if there is no request to be sent to Tomcat. |
| Firewalls use to drop inactive connections and will make your web server and Tomcat think the connection is valid. |
| </p> |
| <p> |
| Starting with JK 1.2.0, a <b>socket_keepalive</b> property as been added to ajp13 settings, and you should take a look at |
| it in <a href="../generic_howto/workers.html">Workers HowTo</a> and |
| <a href="../reference/workers.html">workers.properties reference</a>. |
| If nothing else helps, you can try <b>JkOptions +DisableReuse</b>, but this will have strong performance implications. |
| </p> |
| </subsection> |
| |
| <subsection name="Under heavy load, I've got many threads in Tomcat even if my Apache Web Server handles much of the load"> |
| <p> |
| Under heavy load, Apache Web Server creates many children to handle the load, |
| which will in turn create many connections |
| to Tomcat to forward the requests they should handle. |
| Apache Web Server will normally kill the children/threads when the load decreases. |
| But if the load is still there and even if only Apache handles the requests, |
| ie static contents, the children are kept and with them all the ajp13 connections, |
| even if they are no more used. |
| </p> |
| <p> |
| To close connections after some time of inactivity you can use <b>connection_pool_timeout</b>, |
| for more informations refer to <a href="../reference/workers.html">workers.properties reference</a>. |
| </p> |
| </subsection> |
| |
| </section> |
| |
| <section name="Apache"> |
| <p> |
| Informations and FAQ about mod_jk and Apache Web Servers. |
| </p> |
| <subsection name="Whenever I restart Tomcat, Apache locks up!"> |
| <p> |
| The Ajp13 protocol keeps an open socket between Tomcat and Apache. |
| Release of mod_jk present in J-T-C handles the network failure. |
| But with very ancient releases of mod_jk, you may have to restart Apache as well. |
| </p> |
| </subsection> |
| |
| <subsection name="Why do there exist two files mod_jk.so (-eapi ad -noeapi) in download directories for Apache 1.3?"> |
| <p> |
| Many versions of Apache use a modified API, known at Extended API, developed for use with the |
| <a href="http://www.modssl.org">mod_ssl module</a>. Starting with Apache 2.0 there is no more difference. |
| </p> |
| |
| <p> |
| For example, Apache 1.3 present in certains recent Linux distributions include the |
| <b>mod_ssl</b> module. |
| </p> |
| |
| <p> |
| So if you got such 'Extended Apache', you need to use <b>mod_jk.so-eapi</b>. |
| </p> |
| |
| <p> |
| You should use <b>mod_jk.so-noeapi</b> only for 'Standard Apache' (ie without mod_ssl). |
| </p> |
| |
| <p> |
| It's wise to avoid using EAPI modules on STD API Apache or to use standard API modules on EAPI Apache. |
| Allways be sure to have the <b>mod_jk.so</b> witch match your version of Apache |
| </p> |
| </subsection> |
| |
| <subsection name="What's that message about 'garbled DSO ?'"> |
| <p> |
| It's related to Apache EAPI, the message <code>'mod_jk.so is garbled - perhaps this is not an Apache module DSO ?'</code> |
| just told you, that your're trying to install a mod_jk.so DSO module that was compiled on an Apache using EAPI, |
| like apache-mod_ssl or apache from Redhat distro 6.2/7.0 but your system use the standard apache with normal API. |
| </p> |
| </subsection> |
| |
| <subsection name="And the message about 'module might crash under EAPI!"> |
| <p> |
| Also related to EAPI, the message <code>'[warn] Loaded DSO /usr/lib/apache/mod_jk.so uses plain Apache 1.3 API, |
| this module might crash under EAPI! (please recompile it with -DEAPI)'</code>, the mod_jk.so was compiled under normal |
| Apache with standard API and you try to install the module on an Apache using EAPI. |
| </p> |
| </subsection> |
| |
| <subsection name="APXS is getting an error during the build of mod_jk, like rc=0 or rc=255. I tried all of the steps in the build section, what do I do now ?"> |
| <p> |
| APXS is a Perl script that is created when you build the Apache web server from source. |
| Chances are that if you are getting these errors and you obtained Apache as a binary distribution, |
| that APXS is not configured correctly for your system. |
| Your best bet is to get the Apache source from http://httpd.apache.org and build it yourself. |
| Use the following for a basic build (read the Apache docs for other options): |
| <screen> |
| <type>cd /usr/local/src</type><br/> |
| <type>gzip -dc apache_1.3.19.tar.gz|tar xvf -</type><br/> |
| <type>cd apache_1.3.19</type><br/> |
| <type>./configure --prefix=/usr/local/apache \</type><br/> |
| <type> --enable-module=most \</type><br/> |
| <type> --enable-shared=max</type><br/> |
| <type>make</type><br/> |
| <type>make install</type><br/> |
| </screen> |
| </p> |
| <p> |
| Note: The above steps assume that you downloaded the Apache source and placed it in your /usr/local/src directory. |
| </p> |
| </subsection> |
| |
| <subsection name="Apache 2.0 complains about incorrect module version"> |
| <p> |
| Since Apache 2.0 API still change often, the Apache 2.0 teams decide to put in headers of compiled modules the |
| Apache 2.0 version used to compile the module. This check is called Magic Module Number bump. |
| </p> |
| <p> |
| At start time Apache 2.0 check that version in modules headers and stop if it detect that a module was compiled |
| for another Apache 2.0 version. As such you should allways use modules compiled for the same Apache 2.0 version. |
| This check may be removed if the future. |
| </p> |
| </subsection> |
| |
| <subsection name="Does it work for Apache 2.2?"> |
| <p> |
| mod_jk works well with Apache 2.2. You need a binary module compiled for version 2.2 of the Apache web server. |
| A binary compiled for version 2.0 will not work. |
| </p> |
| <p> |
| Important parts of the functionality of mod_jk have been reimplemented as Apache httpd modules mod_proxy_ajp |
| and mod_proxy_balancer. These are part of the standard distributoin of Apache 2.2. The new modules do not contain |
| all features of mod_jk, but you get them automatically with every Apache 2.2. |
| </p> |
| </subsection> |
| |
| <subsection name="JNI doesn't work with Apache 1.3"> |
| <p> |
| JNI support requires a multi-threaded environment which is not the general case for Apache 1.3. |
| You should verify if Apache 1.3 has been build with thread support and if not you could add the |
| the pthreads library to your <b>httpd.conf</b> file. |
| </p> |
| |
| <source> |
| # Add pthread to Apache in httpd.conf |
| LoadModule "/usr/lib/libpthreads.so" |
| </source> |
| |
| <p> |
| Also keep in mind that JNI is suited for multi-threaded servers and you should consider upgrading |
| to Apache 2.x to support JNI. |
| </p> |
| </subsection> |
| |
| <subsection name="JNI report that JVM couldn't be started under Linux"> |
| <p> |
| Under Linux, you should set some environment variables BEFORE launching your Apache server : |
| </p> |
| |
| <screen> |
| <read>export LD_LIBRARY_PATH=$jre/bin:$jre/bin/classic:$LD_LIBRARY_PATH</read> |
| </screen> |
| |
| <p> |
| Also some Linux distributions have enabled a GLIBC feature called 'floating stacks' which may not works with kernel |
| less than 2.4.10 on SMP machines. You should disable floating stacks by exporting an environment variable : |
| </p> |
| |
| <screen> |
| <read>export LD_ASSUME_KERNEL=2.2.5</read> |
| </screen> |
| |
| <p> |
| You could have to update your service scripts, ie <b>/etc/rc.d/init.d/httpd</b>, to set these env vars |
| before your httpd server starts. |
| </p> |
| </subsection> |
| |
| <subsection name="Mixed errors when building via configure"> |
| <p> |
| configure assume you have some GNU tools already installed and configured for your system, and ad minima <b>libtool</b>. |
| </p> |
| <p> |
| Also some systems may have mixed cc and gcc setup which may make you puzzled when trying to link an Apache built with native |
| c compiler with a jk/jk2 build with gcc. |
| </p> |
| <p> |
| In case the make processing doesn't work as expected, you should use a GNU make <b>gmake</b>. |
| </p> |
| </subsection> |
| |
| </section> |
| </body> |
| </document> |