Virgo from EclipseRT is a completely module-based Java application server that is designed to run enterprise Java applications and Spring-powered applications with a high degree of flexibility and reliability. It offers a simple yet comprehensive platform to develop, deploy, and service enterprise Java applications.

The Virgo kernel supports the core concepts of Virgo and is not biased towards the web server, thus enabling other types of server to be created. The kernel can also be used stand-alone as a rich OSGi application platform. A server runtime can easily be constructed by deploying suitable bundles on top of the kernel.

Virgo features:

  • admin console - deploy and manage artifacts, examine diagnostic dumps, and examine bundle wiring, either in the live system or from a resolution failure
  • Equinox console extension - manage Virgo and deployed artifacts
  • plans - define the artifacts that comprise an application, optionally making the application atomic to tie the artifact lifecycles together, and scoped to isolate the application from other applications
  • provisioning - automatically supply the dependencies of an application including bundles, plans, plan archives (PARs), and configurations, from both local and remote repositories
  • web container - supports vanilla WAR files, with all their dependencies in WEB-INF/lib, and Web Application Bundles, that import their dependencies via OSGi manifest metadata, via the reference implementation of the OSGi Web Container specification, based on embedded Apache Tomcat and configured using the standard Tomcat server.xml
  • user region - isolates the kernel from user-installed applications and enables admins to focus on application artifacts and their dependencies without seeing those of the kernel as well
  • Spring - Virgo packages Spring, but can easily be configured to use a different version of Spring
  • hot deployment - deploy artifacts to Virgo by copying them into the pickup directory, either in archive or exploded form, as an alternative to deploying via the admin console
  • legacy library support - enables third party libraries which were not designed for OSGi to function correctly, once they have been converted into OSGi bundles and deployed, through advanced support for thread context class loading, load time weaving, class path scanning, and implicit package use
  • advanced resolution failure diagnostics - resolution failures are analysed and reported in meaningful terms, a dump is taken for offline analysis using the admin console, and the set of bundles being deployed is not committed to the runtime, preserving a cleanly resolved state
  • logging - via embedded LogBack, configured in config/serviceability.xml, with a rich set of appenders available out of the box
  • automatic thread stack dump on deadlock


Follow: Glyn Normington
Follow: Christopher Frost