During this talk, Christopher presented the audience Virgo, part of the RT umbrella of the Eclipse Foundation
The virgo packages
- Equinox,
- then Virgo Kernel,
- then Virgo Tomcat Server or Virgo Jetty Server
The Gemini project
- blueprint : DI
- Web : support for WABs and WARs
- JPA : persistence in OSGi
- DBAccess : modular JDBC drivers
- Management : JMX management (start /stop)
- JNDI : JNDI naming in OSGi
Demo :
How to extend virgo to get your own custom server
- Download virgo kernel and unzip it (and configure your osgi console port)
- starts it, it looks for new applications to install; you can open an osgi console through telnet
- add equinox.http to the ext repo, and the same for equinox servlet API bundle (2.5)
- Configure http port , in properties, define : org.osgi.service.http.port=5555 for example
- add the HttpService to the initial artifacts (a configuration similar to a config.ini osgi.bundles list)
- start it, check everything is ok in the osgi console
- You can then deploy a jar (osgi bundle) containing a servlet, configured using Spring (osgi:reference on osgi.http service); just copying it to the virgo kernel : it just works
In the works :
- P2 integration
- integration with Gemini projects
- better tooling from libra project
Talking to Christopher and Glynn, I also learned that : (I’m totally a virgo n00b)
- Virgo is like having Equinox + Spring OSGi + Jetty; BUT it also provides a unified mechanism system, using logback (and so slf4j logging APIs)
- Virgo also solved problems such as Emphatic loading mechanism : take hibernate for example, a bundle using it would normally not be able to see the other bundles providing Hibernate based classes; that’s why they came up with this idea of dynamic bundle creation at runtime, that solves this visibility problem (check Glynn blog entry to know more about this problem)
- Not P2 enabled : Virgo just recently joined the Eclipse world, and since uses its own dependency and update mechanism; P2 support is high on the priority list
http://www.eclipsecon.org/2011/sessions/?page=sessions&id=2086