The Virgo Web Server supports two OSGi-oriented ways of packaging applications: the PAR format and application bundles (including web bundles). The VWS also supports three distinct WAR deployment and packaging formats: standard Java EE WAR, Shared Libraries WAR, Shared Services WAR.
The VWS also supports plans as a way to describe an application. This method is similar to a PAR in that it encapsulates all the artifacts of an application as a single unit, but differs in that a plan simply lists the bundles in an XML file rather than packaging all the bundles in a single JAR file. The use of plans offers additional benefits to using PARs; for this reason, we recommend their use. For details, see Creating Plans.
An OSGi application is packaged as a JAR file, with extension .par. A PAR artifact offers several benefits:
Class.forName() (or equivalent).
A PAR includes one or more application bundles and its manifest specifies the following manifest headers:
Table 4.1. PAR file headers
| Header | Description |
|---|---|
Application-SymbolicName | Identifier for the application which, in combination with Application-Version, uniquely identifies an application |
Application-Name | Human readable name of the application |
Application-Version | Version of the application |
Application-Description | Short description of the application |
The following code shows an example MANIFEST.MF in a PAR file:
Application-SymbolicName: com.example.shop Application-Version: 1.0 Application-Name: Online Shop Application-Description: Example.com’s Online Shopping Application
As discussed earlier, Web Modules are no longer supported in VWS. Instead, we recommend that you use Shared Service WARs or Web Application Bundles that are compliant with the OSGi Web Applications specification.
To move from a Web Module to a Web Container-compliant Web Bundle you need to follow these four steps:
Module-Type manifest headerWeb-DispatcherServletUrlPatterns header with the corresponding
servlet entries in web.xmlWeb-FilterMappings header with the corresponding filter
entries in web.xmlMODULE-INF to the root of the WAR
To remove a Web-DispatcherServletUrlPatterns header such as
Web-DispatcherServletUrlPatterns: *.htm, start by declaring
a DispatcherServlet in web.xml:
<servlet>
<servlet-name>dispatcher.myapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
For every mapping in the DispatcherServletUrlPatterns header, create the
corresponding servlet-mapping:
<servlet-mapping>
<servlet-name>dispatcher.myapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
To remove a Web-FilterMappings header such as
Web-FilterMappings: myfilter;url-patterns:="*.htm", start by declaring
DelegatingFilterProxy in web.xml for each filter listed:
<filter> <filter-name>myfilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter>
For every mapping listed for the filter create the
corresponding filter-mapping:
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>