What is the difference Apache (Http Server) and Tomcat (Servlet Container)
The Apache Project
The Apache Project is a collaborative software development effort.
Its goal is to produce a robust, commercial-grade, free HTTP server.
The project is run by volunteers the Apache Group communicating and planning through the Internet.
Organizational support is provided by the Apache Software Foundation.
Home page:
http://apache.org
Foundation Myths
Long ago, when the Web was young, the most famous Web server in the World was called the NCSA server.
It was developed by Rob McCool at the National Center for Supercomputing Applications.
McCool left NCSA in 1994, and development of the public-domain NCSA server temporarily faltered.
At that time, a group of eight powerful Webmasters had developed their own extensions and bug-fixes for the NCSA server.
The founding Webmasters brought together by email pooled their updates.
Apache came into being early in 1995. It was a series of patches to the NCSA code.
A year later, Apache was the most popular Web server.
Apache and Tomcat
This lecture is mainly a how-to guide to installing the Apache server and integrating it with the current version of Tomcat.
This allows a site primarily served by Apache to seamlessly make servlet and JSP content available.
Tomcat vs. Apache
The Apache Web server
- is faster than Tomcat when it comes to static pages,
- is more configurable than Tomcat,
- is more robust than Tomcat, and
- it supports CGI scripts, Server API modules, Perl, PHP, etc.
Hence for real world sites, Apache would generally be a better choice than Tomcat, except that. . .
- In itself, Apache doesn t support Servlets or JavaServer Pages!
Integrating Apache and Tomcat
The solution, of course, is to allow the two Web servers to work together.
The Apache server will be the principal server, dealing with static documents.
Or dynamic documents generated by any of the other technologies mentioned in the previous slide.
Apache will forward requests for Servlets or JavaServer Pages to Tomcat.
The approach we describe here is what was called the out-of-process servlet container the lectures on Servlets.

The Adapter
For Apache to communicate with Tomcat, and forward requests as necessary, it needs some extra software an adapter.
An adapter will be implemented as an Apache module.
An Apache module is a piece of code that can be optionally linked in to (or left out of) the main server code.
Non-standard, plug-in, modules will typically be shared-object libraries (DLLs under Windows).
These live in a directory called /usr/local/apache/libexec.
Apache modules generally have names of the form mod_XXXX
For example, mod_perl.
There are two Tomcat adapter modules in common use: mod_jserv and mod_jk.
mod_jk
mod_jk is a new Tomcat-Apache plug-in that handles communication between Tomcat and Apache.
It replaces the older mod_jserv.
For more information, see the file doc/mod_jk-howto.html in the Tomcat release, which is also online at
jakarta.apache.org/tomcat/jakarta-tomcat/src/doc/mod_jk-howto.html
For now the only way to obtain the mod_jk library for Linux seems to be to build it yourself. The sources are included in the source release of Tomcat.
Obtaining mod_jk for Linux
Go to jakarta.apache.org and follow the Source Code link.
Get the release build of Tomcat (currently 3.2). At the time of writing, the relevant file is
jakarta-tomcat-3.2-src.tar.gz
Unpack the distribution:
gunzip -c jakarta-tomcat-3.2-src.tar.gz | tar xvf -
You can do this anywhere, e.g. in /tmp.
I do not particularly recommend you try to rebuild the Tomcat server itself from this release: it is much easier just to download the compiled, binary version of the server, as described in the lectures on Servlets.
Building mod_jk
Go to the directory
jakarta-tomcat-3.2-src/src/native/apache1.3
If necessary, edit the definition of the macro APXS in Makefile.linux so that it refers to the apxs command in the Apache release, probably /usr/local/apache/bin/apxs.
Build the library:
make -f Makefile.linux
Install the plug-in in the Apache libexec/ directory, e.g.:
cp mod_jk.so /usr/local/apache/libexec
Updating the Apache Configuration
In the first instance (until you need to do something clever) this is very easy, because whenever the Tomcat server is run, it generates a self-describing include file.
This file contains a series of Apache configuration-file commands.
The include file is in
jakarta-tomcat-X.X/conf/mod_jk.conf-auto
In my case I added the line
include /home/users/dbc/jakarta-tomcat-3.2/conf/mod_jk.conf-auto
to the end of the file /usr/local/apache/conf/httpd.conf.
Fragment of the File mod_jk.conf-auto
#########################################################
# Auto configuration for the /dbc context starts.
#########################################################
# The following line makes apache aware of the location of the /dbc context
Alias /dbc "/home/users/dbc/jakarta-tomcat-3.2/webapps/dbc"
<Directory "/home/users/dbc/jakarta-tomcat-3.2/webapps/dbc">
Options Indexes FollowSymLinks
</Directory>
# The following line mounts all JSP files and the /servlet/ uri to tomcat
JkMount /dbc/servlet/* ajp12
JkMount /dbc/*.jsp ajp12
# The following line prohibits users from directly accessing WEB-INF
<Location "/dbc/WEB-INF/">
AllowOverride None
deny from all
</Location>
# The following line prohibits users from directly accessing META-INF
<Location "/dbc/META-INF/">
AllowOverride None
deny from all
</Location>
Remarks
Recall these are commands that Tomcat generates to configure Apache.
As the first comments indicates, these commands relate to the servlet context called dbc/.
The Alias command causes Apache to generally look in the Tomcat document directory for URLs with paths that start /dbc.
This is needed for static documents in the Tomcat directory.
The first JkMount command causes URLs with paths that match the pattern /dbc/servlet/* to be redirected to the AJP module (hence the Tomcat server).
The second JkMount command causes URLs with paths that match the pattern /dbc/*.jsp to be similarly redirected Tomcat server.
Configuring Workers
In Tomcat 3.2, the generated include file, jakarta-tomcat-X.X/conf/mod_jk.conf-auto has a reference to the file workers.properties in the same directory. You will probably have to manually edit this file.
Enclosed comments are fairly self-explanatory. If necessary change the Java home directory and the path-component separator (to / rather than \ for Linux).
You may also need to choose one or the other of ajp12 and ajp13, and comment out references to the other.
I went with ajp12. ajp13 is supposed to be an improved protocol, but I know and love ajp12.
Set the port number for your AJP connector, as specified in server.xml.
See jakarta-tomcat-X.X/doc/Tomcat-Workers-HowTo.html.
Start the Apache Server. . .
In principle, we are done. Restart the Apache server.
With the default configuration, URLs with paths in Tomcat servlet contexts that start /servlet or end with .jsp are redirected to Tomcat.
Note Apache will directly serve static .html pages, even if they are in the Tomcat document directory.
Because Apache (unlike Tomcat) runs as user nobody by default, such files now need to be world readable.
(Apparently) things continue to work across multiple restarts of Tomcat, even without restarting Apache.
We note however that, according to the FAQ, this is not the case with AJP13. . .
What is the difference Apache (Http Server) and Tomcat (Servlet Container)的更多相关文章
- Apache Http Server和Tomcat 之区别
转自:Apache Http Server和Tomcat 之区别 Apache官方网站:http://www.apache.org/Tomcat官方网站:http://tomcat.apache.or ...
- [转]Apache HTTP Server 与 Tomcat 的三种连接方式介绍
首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接.事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端 ...
- 转自IBM:Apache HTTP Server 与 Tomcat 的三种连接方式介绍
http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html 整合 Apache Http Server ...
- Apache HTTP Server与Tomcat整合学习记录
Apache HTTP Server与Tomcat整合 个人环境:Windows10,JDK8,Tomcat8.5,Apache2.4,JK模块1.2.4 前言 其实网上有很多教程,但问题是得每次 ...
- Windows 下 Apache HTTP Server 与 Tomcat 的整合
整合准备: 1.Apache HTTP Server(下文用Apache简称) 2.Tomcat 7或8 3.mod_jk.so (tomcat-connectors)-这个文件是用来链接http s ...
- Apache http server和tomcat的区别
Apache官方网站:http://www.apache.org/Tomcat官方网站:http://tomcat.apache.org/ 1. Apache是web服务器,Tomcat是应用(jav ...
- apache http server 和tomcat的区别 以及nginx
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器. 要明白他们之间的区别,我们首先需要明白HTTP协议.HTML页面.JSP.Servlet之 ...
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍(转)
首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接.事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端 ...
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
本文转载自IBM developer 首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接.事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装 ...
随机推荐
- Disney English
项目大体流程是做几个页面的模板,然后后台用html改成phtml 但是后期连模板都要改掉,很多都无法考虑到复用 css很混乱,js已经忘记了
- Java GC系列(3):垃圾回收器种类
本文由 ImportNew - 好好先生 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 在这篇教程中我们将学习几种现有的垃圾回收器.在 ...
- 368. Largest Divisible Subset -- 找出一个数组使得数组内的数能够两两整除
Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...
- 再不用担心DataRow类型转换和空值了(使用扩展方法解决高频问题)
在使用DataRow读取数据时,通常会遇到数据可能为Null, 但是又需要转换为如int等其它类型的数据,因此就通常会写这样的代码: if (dr[name] != DBNull.Value & ...
- Idea添加Jetty时提示JMX module is not included
添加自己的jetty时提示下图 此时,我们应该编辑jetty根目录下 start.ini 添加 "--module=jmx" 此时就可以成功添加了 原因:因为在9.07的时候默认情 ...
- Struts2 实现文件上传和下载
实现上传功能 Struts2实际上是使用的commons fileupload 组件,所以记得导包哦. 1.首先你应该有一个上传页面 <!-- file的name属性与action中的File类 ...
- Nginx 引入线程池,提升 9 倍性能
转载:http://blog.csdn.net/wuliusir/article/details/50760357 众所周知,NGINX 采用异步.事件驱动的方式处理连接.意味着无需对每个请求创建专门 ...
- JDE函数--获取当前登录人的描述
业务描述:当前登录人ID为数字,中文姓名保存在描述1字段中 方式: 根据系统变量获取用户的地址号,根据TableIO获取用户描述1.如下图所示: 由于使用AN8时,变量类型不一致,所以使用函数将cha ...
- PDF 补丁丁 0.4.1.688 测试版发布(请务必用其替换 682 测试版)
修复了测试版682 损坏书签.读取字符宽度表出错的问题.请下载了旧测试版的网友马上换用新的测试版.
- bzoj 2730: [HNOI2012]矿场搭建
#include<cstdio> #include<cstring> #include<iostream> #define M 508 using namespac ...