2.2 What is the Virgo Web Server?
Prev | 2. Introduction to the Virgo Web Server | Next

## 2.2 What is the Virgo Web Server?

The Virgo Web Server, or VWS for short, is the runtime portion of the Virgo Runtime Environment. 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 VWS offers a compelling solution to develop and deploy enterprise applications.

### What makes up the Virgo Web Server?

The Virgo Web Server is built on top of the following core technologies:

- Spring Framework, obviously!
- Tomcat as the web container.
- OSGi R4.2.
- 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 Web Server 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 VWS’s architecture.

At the heart of the Virgo Web Server 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 Equinox and extends its capabilities for provisioning and library management, as well as providing core functionality for the VWS.

To maintain a minimal runtime footprint, OSGi bundles are installed on demand by the VK provisioning subsystem. This allows for an application to be installed into a running VWS 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 Equinox within a standard Java Virtual Machine. Above the VK is a layer of subsystems which contribute functionality to the VWS. Subsystems are configured to run for various profiles and typically provide additional services to the basic OSGi container such as serviceability, management, and personality-specific deployment.

In the Virgo Web Server, applications are modular and each module has a personality that describes what kind of module it is: web, batch, web service, etc. The VWS deploys modules of each personality in a personality-specific manner. For example, web modules are configured in Tomcat with web context. Each module in the application can be updated independently of the other modules whilst retaining the identity of being part of the larger application. Whatever kind of application you are building, the programming model remains standard Spring and Spring DM.

Version 2.1.0.RC1-incubation of the Virgo Web Server supports the bundle, web, and WAR personalities, which enable you to build sophisticated web applications. The WAR personality 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. Future releases will include support for more personalities such as batch, web services, etc.

Prev | Up | Next
2. Introduction to the Virgo Web Server | Home | 2.3 Why the Virgo Web Server?