Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Virgo/Community/Migrating from 2.1.0 to 3.0.0

DRAFT

XML Schemas

The plan schema has moved to Eclipse.org, ...

Virgo Startup

This is related to the result of bug 333474. Virgo now has dynamic startup - its base bundles do not require ordering anymore. This enables possible usage of other OSGi launchers.

Declarative Service support

This is related to the result of bug 333474. Virgo now supports Declarative services out-of-the-box, both in kernel and the user region.

Virgo Directory Layout

Bug 324991 affects this.

Reserved keywords in JSPs

As bug 346066, EL 2.2 is now stricter about the use of Java reserved words as variable names in JSPs. e.g. import.

User Region

The following notes relate to the effects of bug 330776.

Rather than the user region being a nested OSGi framework, it is now a collection of bundles in the same OSGi framework as the kernel with isolation controlled by config/org.eclipse.virgo.kernel.userregion.properties. There is a single system bundle which resides in the kernel region. There is now no surrogate bundle (which used to have bundle id 1) to act as a kind of proxy for the kernel in the user region; instead user region bundles wire directly to kernel bundles for packages and services.

Framework properties are now specified only in lib/org.eclipse.virgo.kernel.launch.properties (this is subject to change) and must include org.osgi.framework.bsnversion=multiple for correct functioning of the user region.

There is now one OSGi console which can be enabled using the osgi.console framework property. This console can see all the bundles in the framework, although the vsh subcommand is limited to the user region bundles.

Web

  • Virgo previously added additional Manifest headers to web application to make them easier to develop. This support is being dropped as it didn't appear in the specification for 'Web Application Containers' (RFC66). The major effect this will have is that you must now include:
    • a Bundle-Classpath header for classes in 'WEB-INF/classes', if needed.
    • package imports for anything the web bundle needs from the System bundle.
  • The Module-Type header is no longer used to identify a bundle as a WAB, the presence of a Web-Contextpath header now does this, as per the specification.
  • The version of the javax.portlet.* packages has changed from 2.0.0 to 2.0.0.v20110525.
  • The version of the javax.servlet.* packages has changed from 2.5.0 to 3.0.0.v201103241009.
  • The javax.servlet.* packages are now provided by a bundle with bundle symbolic name javax.servlet rather than com.springsource.javax.servlet.

Require-Bundle

The upgrade of Equinox to 3.7 made the processing of Require-Bundle stricter (see bug 343050). Matching attributes are now honoured. Previously matching attributes other than bundle-version were ignored.

So, for instance, the following header:

Require-Bundle: org.foo;version="[1,1.1)"

would often "work" because the version matching attribute was ignored. With Equinox 3.7 this will now cause a resolution failure. The fix is to use the correct attribute:

Require-Bundle: org.foo;bundle-version="[1,1.1)"

Back to the top