Configuring Tomcat5 and Apache2 with Virtual Hosts using mod_jk - Page 2

Installing and configuring mod_jk

In order to make the connection between Tomcat and Apache, we will need to download and install mod_jk connector. You will find that the Apache documentation recommends that you install the packaged version of mod_jk if it is available for your particular Linux distribution. Many outdated resources recommend installing the mod_jk2 connector, but I have found that it has been deprecated and although mod_jk was developed before mod_jk2, it is still fully supported and is very stable.

Mike Millson gave some good reasoning behind using mod_jk for connecting Tomcat to Apache for Red Hat here: Integrating Tomcat and Apache on Red Hat Linux.

Here is what he had to say:

"At this point, Apache and Tomcat should be working separately in standalone mode. You can run Tomcat in standalone mode as an alternative to Apache. In fact, in some cases, it is said that Tomcat standalone is faster than serving static content from Apache and dynamic content from Tomcat. However, there are the following compelling reasons to use Apache as the front end:

1. You can use Apache to buffer slow connections. Tomcat uses, which uses a thread for each request, so Tomcat can run out of connections as the number of slow requests grows. This could be an issue if your application supports a large number of dial-up users.

2. You can use a connector such as mod_jk to load balance amongst several Tomcat instances.

3. You can take advantage of Apache features such as cgi and PHP.

4. You can take advantage of Apache modules such as mod_rewrite, mod_headers, and mod_expire.

5. You can isolate virtual hosts in their own Tomcat instances.

The increased functionality obtained by using Apache on the front end can outweigh the effort required to install and configure a connector."

At the time of this writing there were no mod_jk packages available from so we will need to build the package from source which will assure it is compiled for you particular installation anyways. I consider this the safer route although it requires more work.

  1. I chose to download the current source from the Apache archives: Download the jakarta-tomcat-connectors-1.2.15-src.tar.gz file to your /usr/src/ directory.

  1. Change to the /usr/src directory.

cd /usr/src

  1. Next, extract the contents to create the /usr/src/jakarta-tomcat-connectors-1.2.15-src directory.

tar xvzf jakarta-tomcat-connectors-1.2.15-src.tar.gz

  1. Change to the /usr/src/jakarta-tomcat-connectors-1.2.15-src/jk/native directory.

cd jakarta-tomcat-connectors-1.2.15-src/jk/native

  1. Now you are ready to create the custom configure file for your system. Execute the following:


This will create a configure file in the /usr/src/jakarta-tomcat-connectors-1.2.15-src/jk/native directory.

  1. Execute the following command in order to configure mod_jk for your system.

Important note: You will need to have apxs2 (APache eXtension tool) installed and configured with Apache. If you do not have it, as was my case, you can download and install the apache2-threaded-dev package (which replaced the former apache-dev package) from At the time of this writing, the Debian package archive at was down and they referred me to their temporary site until they resolved their issues I found the apache2-threaded-dev package and was able to install it successfully.

Be sure to include the correct location apxs2 on your system in the path of the command.

./configure --with-apxs=/usr/bin/apxs2

  1. Now build the mod_jk with the following:


  1. Finally, if you were successful with the previous commands, copy the newly created to your Apache2 modules directory. My modules were located at /usr/lib/apache2/modules.

cd apache-2.0

cp /usr/src/jakarta-tomcat-connectors-1.2.15-src/jk/native/apache-2.0/ /usr/lib/apache2/modules

You now are ready to move to the next stage which is to begin configuring Apache and Tomcat. You can find more information about the mod_jk connector at

Share this page:

8 Comment(s)

Add comment


From: Anonymous at: 2006-02-14 08:26:06

In step 6, the command should be

./configure --with-apxs=/usr/bin/apxs2

but not ./configure --with-apxs2=/usr/bin/apxs2

I've tried using the second one and ended in some very needless confusion down the road: "./configure" wasn't finished successfully with the the second one and complained that the "webserver" (parameter) is missing. But that should not be the case because we are configuring for a shared library, not a static one.

From: ctroyp at: 2006-02-24 21:02:30

Thanks for catching that.


From: Anonymous at: 2006-03-06 11:42:46

if you're on a RPM based distribution it is probably wise to stick to using RPMs, provides RPMs for all things java.

From: Anonymous at: 2006-03-30 19:22:14

Please Note that by default Ubuntu does not come with a C++ compiler (At least Hoary 5.04). It may be necessary to get it so that the ./ command doesn't bomb. you can get that using the command: sudo aptitude install build-essential

From: Anonymous at: 2006-05-08 15:38:18

Your tutorial is really good, but on a debian (ubuntu) with jdk1.5 and apache2 you only need to do:

$ apt-get install libapache2-mod-jk2

And then enable the mod_jk module with 2 symbolic links on /etc/apache2/mod-enable

Thanks a lot for your work.

From: Anonymous at: 2006-07-18 12:41:16

mod_jk and mod_jk2 are two different connectors! As sarge only offers the deprecated mod_jk2 through the official repositories, you either have use or build mod_jk from the source.

From: at: 2007-09-19 10:49:21

I checked out the repository, and the version available now via the apt-get command is version JK NOT version jk2, so a simple

apt-get install libapache2-mod-jk

seems to work for me.

The version of debian under Ubuntu 7.04 is apparently debian 4.0 

From: Lalit Negi at: 2012-01-25 15:16:23


 I tried following all steps , on step 6 i got stuck , it always gives below error :

could not find /usr/bin/apxs2

configure: error: You must specify a valid --with-apxs path


I tried with other location of the apxs2 files like : 

/home/lnegi/SETUPS/apache2-threaded-dev_2.2.21-5_i386/usr/bin/apxs2 but get the same error everytime.


Kindly help.