Apache Tomcat
Encyclopedia
Apache Tomcat is an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 web server
Web server
Web server can refer to either the hardware or the software that helps to deliver content that can be accessed through the Internet....

 and servlet container developed by the Apache Software Foundation
Apache Software Foundation
The Apache Software Foundation is a non-profit corporation to support Apache software projects, including the Apache HTTP Server. The ASF was formed from the Apache Group and incorporated in Delaware, U.S., in June 1999.The Apache Software Foundation is a decentralized community of developers...

 (ASF). Tomcat implements the Java Servlet
Java Servlet
A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers...

 and the JavaServer Pages
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...

 (JSP) specifications from Oracle Corporation
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...

, and provides a "pure Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

" HTTP
Hypertext Transfer Protocol
The Hypertext Transfer Protocol is a networking protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web....

 web server
Web server
Web server can refer to either the hardware or the software that helps to deliver content that can be accessed through the Internet....

 environment for Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 code to run.

Tomcat should not be confused with the Apache web server
Apache HTTP Server
The Apache HTTP Server, commonly referred to as Apache , is web server software notable for playing a key role in the initial growth of the World Wide Web. In 2009 it became the first web server software to surpass the 100 million website milestone...

, which is a C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 implementation of an HTTP web server; these two web servers are not bundled together, although they are frequently used together as part of a server application stack
Solution stack
In computing, a solution stack is a set of software subsystems or components needed to deliver a fully functional solution, e.g. a product or service....

. Apache Tomcat includes tools for configuration and management, but can also be configured by editing XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

 configuration files.

Components

Tomcat version 4.x was released with Catalina ( servlet container), Coyote (an HTTP connector) and Jasper (a JSP engine).

Catalina

Catalina is a Tomcat's servlet container
Web container
Web container is the component of a web server that interacts with the servlets. A web container is responsible for managing the lifecycle of servlets, mapping a URL to a particular servlet and ensuring that the URL requester has the correct access rights...

. Catalina implements Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

' specifications for servlet
Java Servlet
A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers...

 and JavaServer Pages
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...

 (JSP). In Tomcat, a Realm
Realm
A realm is a dominion of a monarch or other sovereign ruler.The Old French word reaume, modern French royaume, was the word first adopted in English; the fixed modern spelling does not appear until the beginning of the 17th century...

 element represents a "database" of usernames, passwords, and roles (similar to Unix groups) assigned to those users. Different implementations of Realm allow Catalina to be integrated into environments where such authentication information is already being created and maintained, and then utilize that information to implement Container Managed Security as described in the Servlet Specification...

Coyote

Coyote is Tomcat's HTTP Connector component that supports the HTTP 1.1 protocol for the web server or application container. Coyote listens for incoming connections on a specific TCP
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...

 port on the server and forwards the request to the Tomcat Engine to process the request and send back a response to the requesting client.

Jasper

Jasper is Tomcat's JSP Engine. Tomcat 5.x uses Jasper 2, which is an implementation of the Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

's JavaServer Pages
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...

 2.0 specification. Jasper parses JSP files to compile them into Java code as servlets (that can be handled by Catalina). At runtime, Jasper detects changes to JSP files and recompiles them.

Jasper 2

From Jasper to Jasper 2, important features were added:
  • JSP Tag library pooling - Each tag markup in JSP file is handled by a tag handler class. Tag handler class objects can be pooled and reused in the whole JSP servlet.
  • Background JSP compilation - While recompiling modified JSP Java code, the older version is still available for server requests. The older JSP servlet is deleted once the new JSP servlet has finished being recompiled.
  • Recompile JSP when included page changes - Pages can be inserted and included into a JSP at runtime. The JSP will not only be recompiled with JSP file changes but also with included page changes.
  • JDT Java compiler - Jasper 2 can use the Eclipse JDT (Java Development Tools) Java compiler instead of Ant
    Apache Ant
    Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....

     and javac
    Javac
    javac is the primary Java compiler, included in the Java Development Kit from Oracle Corporation.The compiler accepts source code conforming to the Java language specification and produces bytecode conforming to the Java Virtual Machine Specification .javac is itself written in Java...

    .

Features

Tomcat 7.x implements the Servlet 3.0 and JSP 2.2 specifications. It requires Java version 1.6, although previous versions have run on Java 1.1 through 1.5. Versions 5 through 6 saw improvements in garbage collection
Garbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...

, JSP parsing, performance and scalability. Native wrappers, known as "Tomcat Native", are available for Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 and Unix for platform integration.

Deployment

Experienced users can build and install Tomcat manually from source code after installing such dependencies as the Java Development Kit
Java Development Kit
The Java Development Kit is an Oracle Corporation product aimed at Java developers. Since the introduction of Java, it has been by far the most widely used Java SDK. On 17 November 2006, Sun announced that it would be released under the GNU General Public License , thus making it free software...

 and the Apache Ant
Apache Ant
Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....

 build tool.

Depending on the usage requirements, Tomcat may either be deployed as a standalone pure-Java web server or as a component in a more complex configuration in which it serves as a back-end which handles requests passed to it from a general purpose web server such as Apache
Apache HTTP Server
The Apache HTTP Server, commonly referred to as Apache , is web server software notable for playing a key role in the initial growth of the World Wide Web. In 2009 it became the first web server software to surpass the 100 million website milestone...

, using a connector such as mod jk
Mod jk
mod_jk is the connector used to connect the Tomcat servlet container with web servers such as Apache, Netscape, iPlanet, SunOne and even IIS using the AJP protocol.In a nutshell, a web server is waiting for client HTTP requests...

 supplied by the Apache Tomcat team, or mod proxy
Mod proxy
mod_proxy is an optional module for the Apache HTTP Server .This module implements a proxy/gateway/cache for Apache. It implements proxying capability for or AJP13 , FTP, CONNECT , HTTP/0.9, HTTP/1.0, and HTTP/1.1...

 an optional module for the Apache HTTP Server supplied by the Apache HTTP Server team.

History

Tomcat started off as a servlet reference implementation by James Duncan Davidson
James Duncan Davidson
James Duncan Davidson is an American photographer and former software developer. While a software engineer at Sun Microsystems , Davidson created Tomcat, a Java‐based webserver application and the Ant Java‐based build tool.He was raised in Oklahoma and Texas, and is currently self‐employed as both...

, a software architect at Sun Microsystems. He later helped make the project open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 and played a key role in its donation by Sun to the Apache Software Foundation. The Apache Ant
Apache Ant
Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....

 software build automation tool was developed as a side-effect of the creation of Tomcat as an open source project.

Davidson had initially hoped that the project would become open sourced and, since many open source projects had O'Reilly
O'Reilly Media
O'Reilly Media is an American media company established by Tim O'Reilly that publishes books and Web sites and produces conferences on computer technology topics...

 books associated with them featuring an animal on the cover, he wanted to name the project after an animal. He came up with Tomcat
Tomcat
Tomcat may refer to:* A male cat, known as a tom or tommiecat* Tomcats , a 2001 comedy film* Apache Tomcat, an open-source Java Servlet Container developed by the Apache Software Foundation* Beretta Tomcat, a small .32 caliber pistol...

since he reasoned the animal represented something that could fend for itself. Although the tomcat was already in use for another O'Reilly title, his wish to see an animal cover eventually came true when O'Reilly published their Tomcat book with a snow leopard
Snow Leopard
The snow leopard is a moderately large cat native to the mountain ranges of South Asia and Central Asia...

 on the cover.

Releases

Apache Tomcat versions
Version Release Date Description
3.0.x. (initial release) 1999 Merger of donated Sun Java Web Server code and ASF and Implements Servlet 2.2 and JSP 1.1 specifications.
3.3.2 2004-03-09 Latest 3.x release.
4.1.31 2004-10-11
4.1.36 2008-03-24
4.1.39 2008-12-03
4.1.40 2009-06-25 Latest 4.x release.
5.0.0 2002-10-09
5.0.23
5.0.24 2004-05-09
5.0.28 2004-08-28
5.0.30 2004-08-30 Latest 5.0.x release
5.5.0 2004-08-31
5.5.1 2004-09-07
5.5.4 2004-11-10
5.5.7 2005-01-30
5.5.9 2005-04-11
5.5.12 2005-10-09
5.5.15 2006-01-21
5.5.16 2006-03-16
5.5.17 2006-04-28
5.5.20 2006-09-01
5.5.23 2007-03
5.5.25 2007-09
5.5.26 2008-02
5.5.27 2008-09-08
5.5.28 2009-09-04
5.5.30 2010-07-09
5.5.31 2010-09-16
5.5.32 2011-02-01
5.5.33 2011-02-10
5.5.34 2011-09-22 Latest 5.5.x release
6.0.0 2006-12-01
6.0.10 2007-03-01
6.0.13 2007-05-15
6.0.14 2007-08-13
6.0.16 2008-02-07
6.0.18 2008-07-31
6.0.20 2009-06-03
6.0.24 2010-01-21
6.0.26 2010-03-11
6.0.28 2010-07-09
6.0.29 2010-07-22
6.0.30 2011-01-13
6.0.32 2011-02-03
6.0.33 2011-08-18 Latest 6.x release.
7.0.0 beta 2010-06-29 First Apache Tomcat release to support the Servlet 3.0
Java Servlet
A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers...

, JSP 2.2
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...

, and EL 2.2
Expression Language
Expression Language is a scripting language which allows access to Java components through JSP. Since JSP 2.0, it has been used inside JSP tags to separate Java code from JSP, and to allow easier access to Java components ....

 specifications.
7.0.4 beta 2010-10-21
7.0.5 beta 2010-12-01
7.0.6 2011-01-14
7.0.8 2011-02-05
7.0.10 2011-03-07
7.0.11 2011-03-11
7.0.12 2011-04-06
7.0.14 2011-05-12
7.0.16 2011-06-17
7.0.19 2011-07-19
7.0.20 2011-08-11 Fourth stable version.
7.0.21 2011-09-01
7.0.22 2011-10-01 Current stable version.

Communities

Apache software is built in a community process, with both user and developer mailing lists. The developer list is where discussion on building and testing the next release takes place, while the user list is where users can discuss their problems with the developers and other users.

A number of free Apache Tomcat resources and communities have developed in 2010 including Tomcatexpert.com, a SpringSource
SpringSource
SpringSource is a division of VMware that provides a suite of software products that accelerate the entire enterprise Java application life cycle of build, run, and manage. SpringSource employs open source leaders who created and drive innovation for Spring, a programming model for enterprise Java...

 sponsored community for developers and operators who are running Apache Tomcat in large-scale production environments, and MuleSoft's Apache Tomcat Resource Center, where you can find instructional guides on installing, updating, configuring, monitoring, troubleshooting and securing various versions of Tomcat.

Apache TomEE

Apache TomEE is the Java Enterprise Edition of Apache Tomcat (Tomcat + Java EE = TomEE) that combines several Java enterprise projects including Apache OpenEJB
Apache OpenEJB
OpenEJB is an open source, embeddable and lightweight EJB Container System and EJB Server, released under the Apache 2.0 License. OpenEJB has been integrated with Java EE application servers such as Geronimo, and WebObjects.-History:...

, Apache OpenWebBeans, Apache OpenJPA
Apache OpenJPA
OpenJPA is an open source implementation of the Java Persistence API specification. It is an object-relational mapping solution for the Java language, which simplifies storing objects in databases. It is open source software distributed under the Apache 2.0 Licence.- History :Kodo, a Java Data...

, Apache MyFaces
Apache MyFaces
Apache MyFaces is an Apache Software Foundation project that creates and maintains an open-source JavaServer Faces implementation, along with several libraries of JSF components that can be deployed on the core implementation...

 and others. In October 2011, the project obtained certification by Oracle Corporation
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...

 as a compatible implementation of the Java EE 6 Web Profile.

See also

  • Apache Geronimo, an application server that can use Tomcat as its web container
  • Resin Server
    Resin Server
    Resin is a software product, a web server and Java application server from Caucho Technology. Resin is provided in two versions, Resin Professional and Resin Open Source ....

     Application Server from Caucho Technology
  • Comparison of web servers
    Comparison of web server software
    -Overview:-Features:- Operating system support :...

  • JBoss
    JBoss
    JBoss Application Server is an open-source Java EE-based application server. An important distinction for this class of software is that it not only implements a server that runs on Java, but it actually implements the Java EE part of Java...

     Application Server
  • Jetty (web server)
    Jetty (web server)
    Jetty is a pure Java-based HTTP client/server, WebSocket client/server and servlet container developed as a free and open source project as part of the Eclipse Foundation...

  • JOnAS
    JOnAS
    JOnAS is an open-source implementation of the Java EE application server specification, developed and hosted by the ObjectWeb consortium ....

    , application server that can use Tomcat as its web container
  • OpenEJB, can be added to Tomcat to turn it into a JavaEE server
  • SpringSource tc Server, a commercially-supported enterprise Tomcat server from SpringSource
    SpringSource
    SpringSource is a division of VMware that provides a suite of software products that accelerate the entire enterprise Java application life cycle of build, run, and manage. SpringSource employs open source leaders who created and drive innovation for Spring, a programming model for enterprise Java...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK