2.2 What is the Virgo Server for Apache Tomcat?
Prev | 2. Introduction to the Virgo Server for Apache Tomcat | Next

## 2.2 What is the Virgo Server for Apache Tomcat?

The Virgo Server for Apache Tomcat, or VTS for short, is the runtime portion of the Virgo Server. It is a lightweight, modular, OSGi-based runtime that provides a complete packaged solution for developing, deploying, and managing enterprise applications. By leveraging several best-of-breed technologies and improving upon them, the VTS offers a compelling solution to develop and deploy enterprise applications.

### What Makes up the Virgo Server for Apache Tomcat?

The Virgo Server for Apache Tomcat is built on top of the following core technologies:

- Spring Framework, obviously!
- Tomcat as the web container.
- OSGi R4.3.
- Equinox as the OSGi implementation.
- Spring Dynamic Modules for OSGi for working with OSGi in a Spring application.
- SpringSource Tool Suite for developing applications.

Note, however, that the Virgo Server for Apache Tomcat isn’t just a combination of these technologies. Rather, it integrates and extends these technologies to provide many features essential for developing, deploying, and managing today’s enterprise Java applications.

The following diagram presents a high-level overview of the VTS’s architecture.

At the heart of the Virgo Server for Apache Tomcat is the Virgo Kernel or VK. The VK is an OSGi-based kernel that takes full advantage of the modularity and versioning of the OSGi platform. The VK builds on a base version of Virgo Nano or VN and extends its capabilities for provisioning and library management, as well as providing core functionality for the VTS. The VN maintains a minimal runtime footprint and startup time. It builds on top of a pure Equinox, extending it with more sophisticated diagnostics and supportability functionality. The VN supports full p2 provisioning. This feature is not included in the Virgo Nano Base that the VK is built on.

To maintain a minimal runtime footprint, OSGi bundles are installed on demand by the VN. On subsequent restarts these core bundles are warm-started thus reducing the startup time. This allows for an application to be installed into a running VTS and for its dependencies to be satisfied from an external repository. Not only does this remove the need to manually install all your application dependencies, which would be tedious, but it also keeps memory usage to a minimum.

As shown in the figure, VK runs on top of VN that extends Equinox within a standard Java Virtual Machine. Above the VK further layers contribute functionality to the VTS. Such as management and web application support.

Version 3.6.0.RELEASE of the Virgo Server for Apache Tomcat supports bundle, plan, PAR, configuration, Web Application Bundle (WAB), and WAR artifacts, which enable you to build sophisticated web applications. This includes support for standard Java EE WARs, "shared library" WARs, and "shared services" WARs, each of which will be covered in greater detail in Chapter 3, Deployment Architecture.

| Important
The Virgo Nano has a different provisioning system which isn't included in the Virgo Nano Base on which the VK and the VTS are built. Version 3.6.0.RELEASE of the Virgo Nano supports bundle, p2 feature, Web Application Bundle (WAB), and WAR artifacts, which enable you to build sophisticated web applications too, taking full advantage of p2's dependency resolution, automated download and fail-early mechanics. The Virgo Nano does NOT support plan, PAR or configuration artifacts. New features are provisioned via update sites or p2 repositories. Brief overview of p2 and it's mechanics is available on this blog. The VN's default web container implementation is Gemini Web.

Prev | Up | Next
2. Introduction to the Virgo Server for Apache Tomcat | Home | 2.3 Why the Virgo Server for Apache Tomcat?