<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Virgo User Guide</title><link rel="stylesheet" href="css/stylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><!--Begin Google Analytics code--><script type="text/javascript">
			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
			document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script><script type="text/javascript">
			var pageTracker = _gat._getTracker("UA-2728886-3");
			pageTracker._setDomainName("none");
			pageTracker._setAllowLinker(true);
			pageTracker._trackPageview();
		</script><!--End Google Analytics code--></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="d0e1"></a>Virgo User Guide</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Rob</span> <span class="surname">Harrop</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paul</span> <span class="surname">Kuzan</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Sam</span> <span class="surname">Brannen</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paul</span> <span class="surname">Harris</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Christopher</span> <span class="surname">Frost</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ben</span> <span class="surname">Hale</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Glyn</span> <span class="surname">Normington</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Juliet</span> <span class="surname">Shackell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Steve</span> <span class="surname">Powell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Violeta</span> <span class="surname">Georgieva</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Hristo</span> <span class="surname">Iliev</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Borislav</span> <span class="surname">Kapukaranov</span></h3></div></div></div><div><div class="mediaobject" align="right"><img src="images/virgo-logo-small.png" align="right"></div></div><div><span class="productname">Virgo<br></span></div><div><p class="releaseinfo">3.6.4.RELEASE</p></div></div><div><div><div class="legalnotice"><a name="d0e77"></a><p>
				Copyright &copy; 2009, 2011 VMware Inc. and others
			</p><p>
				Contributors:
				</p><div class="itemizedlist"><ul type="disc"><li><p>
						VMware Inc. - initial contribution and subsequent updates
					</p></li><li><p>
						Violeta Georgieva, SAP AG - Apache Tomcat configuration
					</p></li><li><p>
						Hristo Iliev, SAP AG - Setting jmx.properties permissions
					</p></li><li><p>
						Borislav Kapukaranov, SAP AG - Configuring framework extensions and fragments on system bundle; Added Virgo Nano references and tips
					</p></li></ul></div><p>
			</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#introduction">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e102">1.1. A Note for Virgo Kernel Users</a></span></dt><dt><span class="section"><a href="#d0e107">1.2. A Note for Virgo Jetty Server Users</a></span></dt><dt><span class="section"><a href="#d0e112">1.3. A Note for Virgo Nano Users</a></span></dt></dl></dd><dt><span class="chapter"><a href="#concepts">2. Concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#concepts.modular">2.1. Modular Runtimes and Applications</a></span></dt><dt><span class="section"><a href="#concepts.osgi">2.2. OSGi Concepts</a></span></dt><dt><span class="section"><a href="#concepts.springdm">2.3. Spring DM and Blueprint Concepts</a></span></dt><dt><span class="section"><a href="#concepts.virgo">2.4. Virgo Concepts</a></span></dt><dt><span class="section"><a href="#concepts.p2">2.5. p2 Concepts</a></span></dt></dl></dd><dt><span class="chapter"><a href="#using-the-p2-director">3. Using the p2 director</a></span></dt><dd><dl><dt><span class="section"><a href="#prereqs">3.1. Prerequisites</a></span></dt><dt><span class="section"><a href="#using-director">3.2. Installing with the p2 director from Eclipse</a></span></dt></dl></dd><dt><span class="chapter"><a href="#installation">4. Installing Virgo Server for Apache Tomcat</a></span></dt><dd><dl><dt><span class="section"><a href="#installation-prereqs">4.1. Prerequisites</a></span></dt><dt><span class="section"><a href="#installation-zip">4.2. Installing from the ZIP Download</a></span></dt><dt><span class="section"><a href="#installation-updatesite">4.3. Installing from an update site</a></span></dt><dt><span class="section"><a href="#installation-post">4.4. Post-installation steps</a></span></dt></dl></dd><dt><span class="chapter"><a href="#kernel-installation">5. Installing Virgo Kernel</a></span></dt><dd><dl><dt><span class="section"><a href="#kernel-installation-prereqs">5.1. Prerequisites</a></span></dt><dt><span class="section"><a href="#kernel-installation-zip">5.2. Installing from the ZIP Download</a></span></dt><dt><span class="section"><a href="#kernel-installation-updatesite">5.3. Installing from an update site</a></span></dt><dt><span class="section"><a href="#kernel-installation-post">5.4. Post-installation steps</a></span></dt></dl></dd><dt><span class="chapter"><a href="#nano-installation">6. Installing Virgo Nano</a></span></dt><dd><dl><dt><span class="section"><a href="#nano-installation-prereqs">6.1. Prerequisites</a></span></dt><dt><span class="section"><a href="#nano-installation-zip">6.2. Installing from the ZIP Download</a></span></dt><dt><span class="section"><a href="#nano-installation-updatesite">6.3. Installing from an update site</a></span></dt><dt><span class="section"><a href="#nano-installation-post">6.4. Post-installation steps</a></span></dt></dl></dd><dt><span class="chapter"><a href="#starting-stopping">7. Starting and Stopping VTS</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e1429">7.1. Starting Virgo Server for Apache Tomcat</a></span></dt><dt><span class="section"><a href="#d0e1481">7.2. Starting in Clean Mode</a></span></dt><dt><span class="section"><a href="#d0e1515">7.3. Starting in Debug Mode</a></span></dt><dt><span class="section"><a href="#d0e1594">7.4. Starting with JMX Access Modifications</a></span></dt><dt><span class="section"><a href="#starting-stopping-configuration-directory">7.5. Starting with a Custom Configuration Directory</a></span></dt><dt><span class="section"><a href="#d0e1883">7.6. Stopping Virgo Server for Apache Tomcat</a></span></dt><dt><span class="section"><a href="#cleaning-without-starting">7.7. Cleaning  Virgo Server for Apache Tomcat without Starting it</a></span></dt><dt><span class="section"><a href="#equinox-launcher">7.8. Using Equinox Launcher</a></span></dt></dl></dd><dt><span class="chapter"><a href="#admin-shell">8. Equinox Console</a></span></dt><dd><dl><dt><span class="section"><a href="#admin-shell-enable">8.1. Enabling the Equinox Console</a></span></dt><dt><span class="section"><a href="#admin-shell-using-vsh">8.2. Using Virgo Shell Commands</a></span></dt><dt><span class="section"><a href="#admin-shell-vsh-command-reference">8.3. Virgo Shell Command Reference</a></span></dt><dt><span class="section"><a href="#p2-commands">8.4. Using the p2 for extending your Virgo installation</a></span></dt></dl></dd><dt><span class="chapter"><a href="#admin-console">9. The Admin Console</a></span></dt><dd><dl><dt><span class="section"><a href="#admin-console-login">9.1. Invoking the Admin Console</a></span></dt><dt><span class="section"><a href="#admin-console-tasks">9.2. Typical Admin Console Use Cases</a></span></dt></dl></dd><dt><span class="chapter"><a href="#repository">10. The Provisioning Repository</a></span></dt><dd><dl><dt><span class="section"><a href="#repository-introduction">10.1. Overview of the Provisioning Repository</a></span></dt><dt><span class="section"><a href="#repository-brits">10.2. Downloading Bundles from the SpringSource Enterprise Bundle Repository</a></span></dt><dt><span class="section"><a href="#repository-configuration">10.3. Configuring the Repository</a></span></dt></dl></dd><dt><span class="chapter"><a href="#serviceability">11. Serviceability and Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="#serviceability-info-log">11.1. Event Logging</a></span></dt><dt><span class="section"><a href="#serviceability-info-trace">11.2. (Trace) Logging</a></span></dt><dt><span class="section"><a href="#serviceability-info-dump">11.3. Service Dumps</a></span></dt></dl></dd><dt><span class="chapter"><a href="#deployment">12. Working with Applications</a></span></dt><dd><dl><dt><span class="section"><a href="#deployment-deploying">12.1. Deploying Artifacts</a></span></dt><dt><span class="section"><a href="#deployment-undeploy">12.2. Undeploying Artifacts</a></span></dt></dl></dd><dt><span class="chapter"><a href="#configuring">13. Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="#configuring-osgi-framework">13.1. Configuring the OSGi Framework</a></span></dt><dt><span class="section"><a href="#configuring-framework-extensions">13.2. Configuring Framework Extensions and Fragments on the System Bundle</a></span></dt><dt><span class="section"><a href="#configuring-serviceability">13.3. Configuring Serviceability and Diagnostics</a></span></dt><dt><span class="section"><a href="#configuring-provisioning-repository">13.4. Configuring the Local Provisioning Repository</a></span></dt><dt><span class="section"><a href="#configuring-hosted-repo">13.5. Configuring a Hosted Repository</a></span></dt><dt><span class="section"><a href="#configuring-kernel">13.6. Configuring the Kernel and User Region</a></span></dt><dt><span class="section"><a href="#configuring-tomcat">13.7. Configuring the Embedded Tomcat Servlet Container</a></span></dt><dt><span class="section"><a href="#configuring-web">13.8. Configuring the Web Integration Layer</a></span></dt><dt><span class="section"><a href="#configuring-jetty">13.9. Configuring the Embedded Jetty Servlet Container</a></span></dt></dl></dd><dt><span class="appendix"><a href="#log-codes">A. Event log codes</a></span></dt><dd><dl><dt><span class="section"><a href="#event-log-codes-format">A.1. Format of the event log codes</a></span></dt></dl></dd><dt><span class="appendix"><a href="#known-issues">B. Known Issues</a></span></dt><dd><dl><dt><span class="section"><a href="#known-issues-firewall-timeout">B.1. Timeout During Startup Due to Firewall Settings</a></span></dt><dt><span class="section"><a href="#known-issues-startup-timeout">B.2. Timeout During Startup Due to Insufficient Resources</a></span></dt><dt><span class="section"><a href="#known-issues-perm-gen-sun-vm">B.3. OutOfMemoryError: PermGen Space Running on Sun JVM</a></span></dt><dt><span class="section"><a href="#alternate-serviceability-work">B.4. Alternate serviceability and work Directories</a></span></dt><dt><span class="section"><a href="#windows-deletion">B.5. Problem Deleting Installation Directory under Windows</a></span></dt><dt><span class="section"><a href="#long-work-paths">B.6. Long Work Directory Paths under Windows</a></span></dt><dt><span class="section"><a href="#known-issues-jetty-restrictions">B.7. Virgo Jetty Server Restrictions</a></span></dt><dt><span class="section"><a href="#known-issues-shutdown-logs-shell">B.8. Shutdown Log Messages in Telnet Shell</a></span></dt></dl></dd><dt><span class="appendix"><a href="#furtherreading">C. 
		Further Reading
	</a></span></dt></dl></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="introduction"></a>1.&nbsp;Introduction</h2></div></div></div><p>
		This User Guide covers the Virgo Server for Apache Tomcat (VTS), the Virgo Jetty Server
		(VJS) and the Virgo Kernel (VK), although it emphasises the
		VTS since that is likely to apply to more users.
	</p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e102"></a>1.1&nbsp;A Note for Virgo Kernel Users</h2></div></div></div><p>
			Virgo Kernel users can be reassured that the majority of the information
			in this Guide is directly applicable to the Virgo Kernel and they can simply ignore the web-related sections.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e107"></a>1.2&nbsp;A Note for Virgo Jetty Server Users</h2></div></div></div><p>
			Virgo Jetty Server users can be reassured that the majority of the information
			in this Guide is directly applicable to the Virgo Jetty Server and they can simply ignore the Virgo Server for Apache Tomcat specific sections.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e112"></a>1.3&nbsp;A Note for Virgo Nano Users</h2></div></div></div><p>
			Virgo Nano is a bit different than VK and VTS.
			It is the smallest Virgo offering and takes performance to its limits, almost instantly booting up.
			Virgo Nano users will find a number of sections in this guide useful but sections that refer to
			<span class="emphasis"><em>plans, PARs and configuration deployment, regions, application scoping and libraries support</em></span>
			are NOT relevant for Virgo Nano or VN and should be ignored.
			This Virgo distribution relies on p2 for its provisioning, therefore is bound to p2 concepts such as <span class="emphasis"><em>p2 features and update sites</em></span>.
			Note also that Virgo Nano includes Gemini.Web as its default web container implementation and uses its default configuration.
		</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="concepts"></a>2.&nbsp;Concepts</h2></div></div></div><p>This chapter introduces some basic concepts that will help you to use Virgo.</p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="concepts.modular"></a>2.1&nbsp;Modular Runtimes and Applications</h2></div></div></div><p>
	Virgo Server for Apache Tomcat, Virgo Jetty Server, Virgo Kernel and Virgo Nano are Java runtimes each composed of
	a collection of modules and supporting applications which are also composed of a
	collection of modules.
	Modules can be shared between applications and multiple versions of modules
	can co-exist.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="concepts.osgi"></a>2.2&nbsp;OSGi Concepts</h2></div></div></div><p>Modules in Virgo are represented using a standard Java
module system known as <span class="emphasis"><em>OSGi</em></span>.
Modules in OSGi are known as <span class="emphasis"><em>bundles</em></span>.
Bundles consist of programs and resources organised by Java package together
with metadata which declares imported and exported packages.
A bundle <span class="emphasis"><em>exports</em></span> a package to make the corresponding programs and resources
available for use by other bundles.
A bundle <span class="emphasis"><em>imports</em></span> a package to use the corresponding programs and resources of
another bundle.</p><p>
	Representing a program as a collection of bundles makes it easier for the
	programmer to manage it and modify it and for teams of programmers to divide
	responsibilities between themselves.
	A bundle is similar to a Java class in this respect. Design principles similar to those for
	organising data and programs into classes can be applied
	to organising applications into bundles.
</p><p>
	An industry consortium known as the
	<span class="emphasis"><em>OSGi Alliance</em></span> develops OSGi
	specifications, reference implementations, and compliance tests.
	Virgo is built on the Equinox OSGi framework which is also
	the reference implementation for the OSGi framework specification.
</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e161"></a>Bundles</h3></div></div></div><p>
Each bundle is stored in a file which conforms to the JAR file format and
can contain Java classes, a manifest (in <code class="literal">META-INF/MANIFEST.MF</code>),
and further resource files.</p><p>The OSGi framework enables bundles to be installed and run.</p><p>OSGi identifies bundles &#8220;<span class="quote">by name</span>&#8221; and &#8220;<span class="quote">by identifier</span>&#8221; (id).</p><p>The <span class="emphasis"><em>symbolic name</em></span> and 
<span class="emphasis"><em>version</em></span> of a bundle are attributes of the bundle which identify the bundle.
A bundle declares its <span class="emphasis"><em>symbolic name</em></span> and <span class="emphasis"><em>version</em></span>
in its manifest (a file called <code class="literal">MANIFEST.MF</code>) like this:
</p><pre class="programlisting">Bundle-SymbolicName: org.foo.bundle
Bundle-Version: 1.2.3.BUILD-2009-06-04
</pre><p>
</p><p>Additionally, the OSGi framework
assigns a distinct number, known as a <span class="emphasis"><em>bundle id</em></span>, to each bundle
as it is installed. Bundles may be referred to &#8220;<span class="quote">by identifier</span>&#8221; using this number.
The OSGi framework itself resides in a
bundle with bundle id <code class="literal">0</code>.</p><p>The
dependencies between bundles are expressed statically in terms of packages and
dynamically in terms of services. A package is familiar to Java programmers.
For example, a Java program may depend on a class <code class="literal">org.foo.X</code>, 
from package <code class="literal">org.foo</code>, and a bundle
containing that program
would either need to contain <code class="literal">org.foo.X</code> or depend on the
package <code class="literal">org.foo</code>.
Package dependencies are specified in the bundle manifest, for example:
</p><pre class="programlisting">Import-Package: org.foo
</pre><p>
</p><p>A bundle which provides a package for use by other bundles <span class="emphasis"><em>must</em></span>
export the package in its manifest. For example:
</p><pre class="programlisting">Export-Package: org.foo
</pre><p>
</p><p>The OSGi framework ensures that a given bundle&#8217;s package dependencies
can be <span class="emphasis"><em>satisfied</em></span> before the bundle runs. This process is known as
<span class="emphasis"><em>resolution</em></span>.</p><p>After a bundle is resolved, its classes and resources are available for
loading.
In OSGi, bundles and their packages do not appear on the application classpath.
Instead, each bundle has a class loader which loads its own classes and loads classes belonging to each of its
imported packages by deferring to the bundle class loader that exports the package.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e246"></a>Life Cycle</h3></div></div></div><p>The OSGi framework manages the <span class="emphasis"><em>life cycle</em></span> of each bundle. A bundle is
first of all <span class="emphasis"><em>install</em></span>ed and will be in the INSTALLED state.
If a request is made to <span class="emphasis"><em>start</em></span> the bundle, the OSGi framework <span class="emphasis"><em>resolve</em></span>s the bundle
and, if resolution was successful, will subsequently move the bundle to the ACTIVE state.
If a request is made to <span class="emphasis"><em>stop</em></span> the bundle, the OSGi framework will move the
bundle back to the RESOLVED state. A request may then be made to <span class="emphasis"><em>uninstall</em></span>
the bundle.</p><p>While the bundle is INSTALLED, ACTIVE or RESOLVED, it may be <span class="emphasis"><em>updated</em></span> to pick up
some changes. These changes are not detected by bundles which were depending
on the bundle before it was updated.
A &#8220;<span class="quote">refresh packages</span>&#8221; operation may be performed to ripple the
changes out to those bundles. (See <a class="xref" href="#concepts.services" title="Services">Services concepts</a>.)</p><p>The life cycle of a bundle can be summarised by a state transition diagram.
This diagram shows some more of the intermediate states of a bundle not described in the overview above:
</p><div class="figure"><a name="d0e281"></a><p class="title"><b>Figure&nbsp;2.1.&nbsp;Bundle life cycle</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/concepts/bundle-lifecycle.png" align="middle" alt="Bundle life cycle"></div></div></div><p><br class="figure-break"></p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="concepts.services"></a>Services</h3></div></div></div><p>Bundles may publish Java objects, known as <span class="emphasis"><em>services</em></span>, 
to a registry managed by the OSGi framework. Other bundles running in
the same OSGi framework can then find and use those services. Services
are typically instances of some shared Java interface. A bundle which
provides a service need not then export the package containing the
<span class="emphasis"><em>implementation</em></span>
class of the service.
</p><p>For example, a bundle could export a package containing the interface
<code class="literal">org.bar.SomeInterface</code>, thus:

</p><pre class="programlisting">Export-Package: org.bar
</pre><p>
</p><p>&#8230;implement the interface with a class <code class="literal">SomeImpl</code>:

</p><pre class="programlisting">package org.bar.impl;

class SomeImpl implements SomeInterface {
	&#8230;
}
</pre><p>
</p><p>&#8230;create an instance of <code class="literal">SomeImpl</code> and 
then publish this instance (as an instance of the interface <code class="literal">SomeInterface</code>).
</p><p>An OSGi framework publishes a number of standard services. For example, the 
<span class="emphasis"><em>Package Admin</em></span> service provides the &#8220;<span class="quote">refresh packages</span>&#8221; life cycle operation
mentioned above.</p><p>OSGi provides an <em class="glossterm">API</em> which can be used to publish and find services,
but it is much simpler to use Spring DM or Blueprint to accomplish this. (See <a class="xref" href="#concepts.springdm" title="2.3&nbsp;Spring DM and Blueprint Concepts">Spring DM concepts</a>.)</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e341"></a>Versioning</h3></div></div></div><p>
	OSGi allows different versions of bundles, packages, and several
	other entities, to co-exist in the same framework
	and provides some mechanisms for managing these versions.
</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e346"></a>Version Numbers</h4></div></div></div><p>An OSGi <span class="emphasis"><em>version number</em></span> consists of up to three numeric components, 
or exactly three
numeric components followed by a string component. These components are
separated by a period (&#8220;<span class="quote"><code class="literal">.</code></span>&#8221;) and
are called the <span class="emphasis"><em>major</em></span>, <span class="emphasis"><em>minor</em></span>, <span class="emphasis"><em>micro</em></span>,
and <span class="emphasis"><em>qualifier</em></span> components, respectively.
</p><p>For example, the version <code class="literal">2.4.1.ga</code> has major component <code class="literal">2</code>, minor component
<code class="literal">4</code>, micro component <code class="literal">1</code>,
and a qualifier component <code class="literal">ga</code>. (There are restrictions on the characters that can appear in
a qualifier. For example: letters, digits, underscores and hyphens are allowed; periods and commas are not.)</p><p>Trailing components may be omitted along with their period (<code class="literal">.</code>). So, for example, the version
numbers <code class="literal">2</code>, <code class="literal">2.0</code>, and <code class="literal">2.0.0</code>
all denote the same version. This example demonstrates that <code class="literal">0</code> is assumed if a numeric component is omitted, 
and the empty string is assumed for an omitted qualifier.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e404"></a>Version Ranges</h4></div></div></div><p>Dependencies on bundles and packages have an associated <span class="emphasis"><em>version range</em></span>
which is specified using an interval notation: a square bracket
&#8220;<span class="quote"><code class="literal">[</code></span>&#8221; or &#8220;<span class="quote"><code class="literal">]</code></span>&#8221; denotes
an <span class="emphasis"><em>inclusive</em></span> end of the range and a round bracket
&#8220;<span class="quote"><code class="literal">(</code></span>&#8221; or &#8220;<span class="quote"><code class="literal">)</code></span>&#8221; denotes
an <span class="emphasis"><em>exclusive</em></span> end of the range. Where one end of the range is to be included and the other excluded, it is permitted to
pair a round bracket with a square bracket.
The examples below make this clear.</p><p>If a single version number is used where a version <span class="emphasis"><em>range</em></span> is
required this does <span class="emphasis"><em>not</em></span> indicate a single version, but the range <span class="emphasis"><em>starting</em></span> from that version and 
including all higher versions.</p><p>There are three common cases:

</p><div class="itemizedlist"><ul type="disc"><li><p>A &#8220;<span class="quote">strict</span>&#8221; version range, such as <code class="literal">[1.2,1.2]</code>, which
denotes that version and only that version.</p></li><li><p>A &#8220;<span class="quote">half-open</span>&#8221; range, such as
<code class="literal">[1.2,2)</code>, which has an inclusive lower limit
and an exclusive upper limit, denoting version <code class="literal">1.2.0</code> and any version after this, up 
to, <span class="emphasis"><em>but not including</em></span>, version <code class="literal">2.0.0</code>.
</p></li><li><p>An &#8220;<span class="quote">unbounded</span>&#8221; version range, such as <code class="literal">1.2</code>, which
denotes version <code class="literal">1.2</code> and <span class="emphasis"><em>all</em></span> later versions.</p></li></ul></div><p>

</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e491"></a>Versioning Policies</h4></div></div></div><p>A <span class="emphasis"><em>versioning policy</em></span> is a way of using version numbers to indicate compatible
and incompatible changes.
OSGi does not mandate a particular versioning policy.
Instead, a specific versioning policy may be implemented using version ranges.</p><p>Strict and half-open version ranges are most useful in representing versioning
policies.
Unbounded version ranges can lead to problems as they (unrealistically) assume that
compatibility will be preserved indefinitely.</p><p>For example, a conservative versioning policy might assume that any change, other than
in the qualifier component of a version, implies an incompatible
change to the object.
Such a policy would employ version ranges such as <code class="literal">[1.2.1.beta,1.2.2)</code>
which accept any version from <code class="literal">1.2.1.beta</code> (inclusive) up to but not including
<code class="literal">1.2.2</code> (exclusive).
</p><p>Alternatively, a relaxed versioning policy might assume that only changes in the major component of
a version denote an incompatible change.
Such a policy would employ version ranges such as <code class="literal">[1.2,2)</code> to capture this.</p><p>
	The OSGi Alliance has published a <a class="ulink" href="http://www.osgi.org/wiki/uploads/Links/SemanticVersioning.pdf" target="_top">Semantic
	Versioning white paper</a> which provides some recommendations and guidance on versioning policies.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e523"></a>Bundle Version</h4></div></div></div><p>Each bundle has a version.
The bundle&#8217;s version may be specified in the manifest using a
<code class="literal">Bundle-Version</code> header:

</p><div class="informalexample"><pre class="programlisting">Bundle-Version: 1.4.3.BUILD-20090302
</pre></div><p>
If not specified the bundle version is assumed to be <code class="literal">0</code>.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e539"></a>Package Version</h4></div></div></div><p>Each exported package has a version.
The exported package&#8217;s version may be specified on the Export-Package manifest header. For example

</p><div class="informalexample"><pre class="programlisting">Export-Package: org.foo;version="2.9",org.bar;version="1"
</pre></div><p>

exports two packages: <code class="literal">org.foo</code>, at version <code class="literal">2.9.0</code> and 
<code class="literal">org.bar</code>, at version <code class="literal">1.0.0</code>.
</p><p>If the version attribute is omitted, the version is assumed to be <code class="literal">0</code>.</p><p>Each package <span class="emphasis"><em>import</em></span> has a version <span class="emphasis"><em>range</em></span>.
The package import version range may be specified on the <code class="literal">Import-Package</code> manifest header.
If interval notation is used, the version range must be enclosed in double quotes, for example:
</p><div class="informalexample"><pre class="programlisting">Import-Package: org.foo;version="[2,3)",org.bar;version="[1,1]"</pre></div><p>
seeks to import a package <code class="literal">org.foo</code> in the range <code class="literal">[2.0.0,3.0.0)</code> and a package
<code class="literal">org.bar</code> with the (exact) version <code class="literal">1.0.0</code>.
</p><p>If a version range is not specified on an import, the range <code class="literal">0</code> is assumed, meaning that 
any version of this package would satisfy the import.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e598"></a>Bundle Manifest Version</h4></div></div></div><p>Bundle manifests have a version which is <code class="literal">1</code> by default,
indicating OSGi Release 3 semantics.
Virgo is based on OSGi Release 4 and therefore expects bundle manifests to be
at version <code class="literal">2</code>, indicating OSGi Release 4 semantics.
The bundle manifest&#8217;s version should be specified on the Bundle-ManifestVersion manifest header, exactly as follows:
</p><div class="informalexample"><pre class="programlisting">Bundle-ManifestVersion: 2
</pre></div><p>
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e614"></a>Manifest Version</h4></div></div></div><p>Manifests themselves also have a version which <span class="emphasis"><em>must</em></span> be specified as <code class="literal">1.0</code>.
This is not an OSGi definition but part of the 
(<a class="ulink" href="http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html" target="_top">JAR file specification</a>).

</p><div class="informalexample"><pre class="programlisting">Manifest-Version: 1.0
</pre></div><p>

</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="concepts.springdm"></a>2.3&nbsp;Spring DM and Blueprint Concepts</h2></div></div></div><p>Spring DM is a project which enables <span class="emphasis"><em>services</em></span> to be published and consumed
using descriptions written in XML.</p><p>The XML descriptions reside in files with extension <code class="literal">.xml</code> in the
bundle&#8217;s <code class="literal">META-INF/spring</code> sub-directory.</p><p>
	To publish a service, an <code class="literal">&lt;osgi:service&gt;</code> tag is used, specifying the
	implementation class of the service and the interface class to be used.
	Spring DM constructs an instance of the implementation class and 
	publishes that instance in the OSGi service registry under the interface when the bundle is started.
</p><p>To consume a service, an <code class="literal">&lt;osgi:reference&gt;</code> tag is used and the
service may be passed into other Spring beans using Spring&#8217;s dependency
injection facilities.</p><p>Spring DM automatically creates proxies for OSGi services so that the actual service
object may come and go at runtime.
If a service disappears, any proxies to the service will wait for the service to re-appear.
This effect is known as <span class="emphasis"><em>damping</em></span>.</p><p>When a bundle is started, Spring DM builds the application contexts
specified by the XML descriptions, creates proxies for the specified services, and publishes
the specified services to the OSGi service registry.</p><p>When a bundle is stopped, Spring DM retracts any services it published on behalf of the bundle
and closes the bundle&#8217;s application contexts.
Virgo turns off damping of a service proxy while the proxy&#8217;s application context
is being closed.</p><p>Spring DM was contributed to Eclipse as the <span class="emphasis"><em>Gemini Blueprint</em></span> project.
Virgo has Gemini Blueprint built-in.</p><p>Gemini Blueprint supports both Spring DM and Blueprint programming models.
Blueprint, known formally as the "OSGi Blueprint Container", provides some of the basic facilities of Spring DM,
including all those just mentioned, but in an OSGi standard form.
See <a class="xref" href="#furtherreading" title="Appendix&nbsp;C.&nbsp; Further Reading">Appendix&nbsp;C, <i>
		Further Reading
	</i></a> for the Blueprint specification.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="concepts.virgo"></a>2.4&nbsp;Virgo Concepts</h2></div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
This section is not relevant for Virgo Nano.
</td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="concepts.repositories"></a>The Provisioning Repository</h3></div></div></div>

The Virgo provisioning repository contains artifacts and metadata indexed by the artifact type, name, and version. There are three kinds of repository: <span class="emphasis"><em>external</em></span>, <span class="emphasis"><em>watched</em></span>, and <span class="emphasis"><em>remote</em></span>. Repositories are passive in the sense that changes to repository content do not cause artifacts to be deployed into Virgo, refreshed, or undeployed.

<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e697"></a>Artifact Types</h4></div></div></div>

In addition to the standard OSGi bundle, artifact types in Virgo include configuration (properties file), PAR, plan, and library.
PARs, plans, and libraries are discussed in <a class="xref" href="#concepts.grouping" title="Grouping Bundles">Grouping Bundles</a>. 

</div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e703"></a>External Repositories</h4></div></div></div><p>
	External repositories are created by scanning a directory which contains artifacts, possibly in nested directories. The repository configuration specifies a pattern which 
	says which files should be treated as artifacts. After the repository is created, changes to the directory do not affect the repository content. 
</p><p>
	Virgo's default repository configuration, in <code class="literal">configuration/org.eclipse.virgo.repository.properties</code>, specifies an external repository created from the 
	<code class="literal">repository/ext</code> directory.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e716"></a>Watched Repositories</h4></div></div></div><p>
	Watched repositories are created by scanning a directory which contains artifacts but no nested directories. All files in the directory are treated as artifacts.
	The directory is re-scanned periodically and the interval between re-scans is specified in the repository configuration.
	The directory is also re-scanned when an artifact is deployed into Virgo.
	Changes detected by re-scanning are reflected in the repository content. Note that changing the content of a watched repository does not cause artifacts to be deployed 	
	into Virgo, refreshed, or undeployed. 
</p><p>
	Virgo's default repository configuration specifies a watched repository based on the contents of the <code class="literal">repository/usr</code> directory. 
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e726"></a>Remote Repositories</h4></div></div></div><p>
	A remote repository refers to a repository hosted by a Virgo instance sometimes known as a <span class="emphasis"><em>repository server</em></span>.
	The hosted repository is configured using the file <code class="literal">configuration/org.eclipse.virgo.apps.repository.properties</code> and may be either an external or a watched 	
	repository.
</p><p>
	The remote repository is accessed by a Virgo instance sometimes known as a <span class="emphasis"><em>repository client</em></span>.
	The repository client is normally a different instance of Virgo to the instance hosting the repository, but it can be the same instance (which is handy for 	
	testing). The remote repository periodically downloads its index from the hosted repository. The period between downloads may be configured in the repository 	
	configuration. The remote repository also caches artifacts which have secure hashes associated with them in the hosted repository. Only bundles currently have secure 	
	hashes associated with them. The secure hash is used to determine when a cached artifact is stale and needs to be freshly downloaded.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e742"></a>Repository Chains</h4></div></div></div><p>
	The Virgo repository is configured as a <span class="emphasis"><em>chain</em></span> of external, watched, and remote repositories.
	The chain is a list which is searched in the configured order.
	The effect of this search order is that an artifact with a given type, name, and version which appears in more than one repository in the chain is only accessed from the 	
	first repository in the chain in which it appears. Abstractly, the repository chain behaves as a single repository, but its content may mutate in quite a different way to 
	the content of an individual external, watched, or remote repository.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="concepts.grouping"></a>Grouping Bundles</h4></div></div></div><p>Virgo provides a way of grouping together a collection
of OSGi bundles and other artifacts which comprise a single application.
These artifacts are placed in a JAR file with extension &#8220;<span class="quote"><code class="literal">.par</code></span>&#8221;. This is called a PAR file.</p><p>All the bundles in a PAR file are resolved together and so mutual dependencies are permitted.</p><p>At runtime a PAR file provides a <span class="emphasis"><em>scope</em></span> in the sense that bundles
inside the PAR file may depend on packages and services outside the PAR file,
but bundles outside the PAR file may not depend on packages and services
provided by the PAR file.</p><p>Virgo also provides the plan artifact as another way of grouping bundles and other artifacts into an application.
A <span class="emphasis"><em>plan</em></span> is a file (in XML format) listing a collection of artifacts.
The artifacts referred to by a plan reside in the Virgo provisioning repository.
</p><p>
	In addition to PARs and plans, which are used for deploying groups of artifacts, Virgo provides libraries as a way of grouping together a collection
	of bundles that	can then be imported into an application using the Virgo-specific <code class="literal">Import-Library</code> manifes header.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="kernel.user.region"></a>Kernel and User Region</h4></div></div></div><p>Conceptually, VTS can be divided into two separate subsystems, one of which actually encompases the other:</p><div class="itemizedlist"><ul type="disc"><li>The <span class="emphasis"><em>kernel</em></span>, which is the heart of VTS.  It makes up most of VTS, except for the part that supports Web applications.  In other words, the kernel provides full OSGi modular support for your applications, as long as they are not Web-based. 
			<p>See <a class="link" href="#kernel-overview" title="The Virgo Kernel">The Virgo Kernel</a> for additional information.</p></li><li>The <span class="emphasis"><em>user region</em></span> is the subsystem that manages user applications. It deliberately isolates the kernel from both your applications and those of the VTS itself, such as the Admin Console, which protects the kernel from interference by applications. 
			<p>See <a class="link" href="#user-region-overview" title="The User Region">The User Region</a> for additional information.</p></li></ul></div><p>When you download and install Virgo Server for Apache Tomcat you get both the kernel and web server support (configured in the user region).  You can also <a class="ulink" href="http://www.eclipse.org/virgo/download/" target="_top">download and use the kernel</a> on its own if you do not plan on deploying Web applications or using the
		web-based Admin Console and you'll get the kernel and a minimal user region (with no web support).</p><p>The following graphic shows how the kernel and user region make up VTS:</p><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="885"><tr style="height: 805px"><td><img src="images/kernel-user-region.png" width="885"></td></tr></table><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="kernel-overview"></a>The Virgo Kernel</h5></div></div></div><p>
		The Virgo Kernel encapsulates almost all of VTS except for the deployment of Web applications.  In sum, the kernel provides the following VTS features:
		</p><div class="itemizedlist"><ul type="disc"><li><p>
			Deployment of non-Web artifacts, such as OSGi bundles, PARs, plans,
			and configuration artifacts.
			</p></li><li><p>
			Local and hosted repositories
			</p></li><li><p>
			Scoping
			</p></li><li><p>
			Hot deployment
			</p></li><li><p>
			User region
			</p></li><li><p>
			Auto-provisioning
			</p></li><li><p>
			System and application tracing and dump support
			</p></li><li><p>
			Spring beans and Spring DM support
			</p></li></ul></div><p>See <a class="link" href="#configuring" title="13.&nbsp;Configuration">Configuring VTS</a> for details about configuring the kernel to better suit your environment. </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="user-region-overview"></a>The User Region</h5></div></div></div><p>
			The user region isolates the kernel from deployed applications,
			including both your own user applications and the user-oriented
			VTS applications such as the Admin Console. This means
			that the kernel is mostly invisible to applications and to application
			management. This is because most of the kernel bundles are not
			installed in the user region (apart from a few needed for region
			management). The necessary function to support the kernel runs in the
			OSGi framework, but the user region applications cannot see it, except
			for the services that are normally offered.
		</p><p>This isolation has many benefits. For example, it is not necessary for the kernel and user applications to use the same version of the Spring Framework. In fact the kernel installs only those parts of the Spring Framework that it needs.  If you update the kernel, it is far less likely that you will also need to upgrade or adjust the applications to accomodate a new version of the kernel. The kernel implementation is therefore much more stable and resilient and applications are much more likely to survive kernel upgrades between releases.  </p><p>When you install VTS, the kernel creates a single user region.
			The kernel and the user region are configured independently of each other; see <a class="link" href="#configuring" title="13.&nbsp;Configuration">Configuring VTS</a> for details. 		
		</p><p>Finally, the isolation provided by the user region together with scoped applications and plans solve common dependency problems that occur when using OSGi. </p></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="concepts.p2"></a>2.5&nbsp;p2 Concepts</h2></div></div></div><p>
	At EclipseCon 2011 there was a great introductory presentation on p2. It gives a nice overview of the whole provisioning system.
	You can find it recorded <a class="ulink" href="http://fosslc.org/drupal/content/gentle-introduction-p2" target="_top">here(video).</a> 
</p><p>
	<a class="ulink" href="http://bkapukaranov.wordpress.com/2011/07/12/rt-meets-p2/" target="_top">This blog post</a> 
	provides some background on why p2 was created as well as a brief overview of what p2 repositories 
	are and how this relates to a runtime.
</p><p>
	This <a class="ulink" href="http://www.slideshare.net/PascalRapicault/understanding-and-extending-p2-for-fun-and-profit" target="_top">presentation(slides only)</a> 
	sheds light on more advanced p2 features and turns our attention to its extension points. 
</p><p>
	Finally, the <a class="ulink" href="http://wiki.eclipse.org/Equinox/p2" target="_top">p2 wiki</a> 
	also provides both getting started guides as well as information on more advanced features. 
</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="using-the-p2-director"></a>3.&nbsp;Using the p2 director</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="prereqs"></a>3.1&nbsp;Prerequisites</h2></div></div></div><p>
			The Virgo Server for Apache Tomcat, or VTS for short, requires Java SE 6 or later to be installed. Java is available from
			<a class="ulink" href="http://www.java.com/" target="_top">http://www.java.com/</a> and elsewhere.
		</p><p>
			Since you're going to use the p2 director you'll need to get it. The easiest way is to download Eclipse from <a class="ulink" href="http://www.eclipse.org/downloads/" target="_top">here</a>. 
			It has built-in p2 director and other p2 applications. 
		</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important: Setting the Target Platform"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.gif"></td><th align="left">Setting the Target Platform</th></tr><tr><td align="left" valign="top"></td></tr></table></div><p>Before using the director make sure you have a proper target platform set. Otherwise you may not see the director application. Here's how to do that:</p><p>Go to Eclipse's Preferences-&gt;Plug-in Development-&gt;Target Platform. Below is shown how the view looks like when a default target platform is set.</p><p>	 
			<img src="images/target-platform-view.png">
		</p><p>If for some reason you don't have any target platform set or it's not the default one you must set the default target platform from the image above.</p><p>If the default target platform is missing then add a new one via the <span class="emphasis"><em>Add...</em></span> button and select the <span class="emphasis"><em>Default</em></span> radio button as shown below:</p><p>	 
			<img src="images/default-target-create.png">
		</p><p>You can now click <span class="emphasis"><em>Next</em></span> and then <span class="emphasis"><em>Finish</em></span>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="using-director"></a>3.2&nbsp;Installing with the p2 director from Eclipse</h2></div></div></div><p>
				This section covers briefly using the p2 director for installing.
				A helpful page is the p2 director's <a class="ulink" href="http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/p2_director.html" target="_top">documentation at help.eclipse.org</a>. 
				There you can find more information on the different supported arguments.
			</p><p>
				Here's how to use the GUI version of the director built-in Eclipse.
			</p><p>
				1. Go to the <span class="emphasis"><em>Run</em></span> context menu and select <span class="emphasis"><em>Run Configurations</em></span>
			</p><p>
				2. Create a new one and choose the director application as shown below, then switch to the <span class="emphasis"><em>Arguments</em></span> tab
			</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.gif"></td><th align="left">Important</th></tr><tr><td align="left" valign="top">In the image below the "Location:" text box's value is managed by your IDE, don't type anything in there.</td></tr></table></div><p>	 
				<img src="images/run_configuration.png">
			</p><p>
				In the <span class="emphasis"><em>Program Arguments</em></span> section append the director arguments. Here's an example I used:
				</p><pre class="screen">-repository http://download.eclipse.org/virgo/updatesite/3.6.4.RELEASE
-installIU nano.product
-tag InitialState
-destination <span class="bold"><strong>/Users/&lt;youruser&gt;/install/virgo</strong></span>
-profile VirgoProfile
-roaming
-p2.os ${target.os}
-p2.ws ${target.ws}
-p2.arch ${target.arch}
				</pre><p>
				</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.gif"></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p>The <span class="emphasis"><em>-repository</em></span> argument accepts any valid p2 repository.</p><p>The <span class="emphasis"><em>-destination</em></span> argument accepts any valid absolute location. It defines the location where your Virgo installation will be provisioned. 
					If the directory does not exist, it will be created by the director.</p></td></tr></table></div><p>
				These arguments produce a Virgo Nano installation. For the <span class="emphasis"><em>p2.*</em></span> arguments use the same properties from the example above. Eclipse will substitute them later with real values. 
			</p><p>
				The passed value for <span class="emphasis"><em>-installIU</em></span> determines which Virgo product is going to be installed. Here's a list of all Virgo product install IUs:
				</p><p><span class="emphasis"><em>nano.product</em></span> - Virgo Nano</p><p>
				</p><p><span class="emphasis"><em>nano-full.product</em></span> - Virgo Nano Full (VN + p2 + GW)</p><p>
				</p><p><span class="emphasis"><em>kernel.product</em></span> - Virgo Kernel</p><p>
				</p><p><span class="emphasis"><em>tomcat-server.product</em></span> - Virgo Server for Apache Tomcat</p><p>
				</p><p><span class="emphasis"><em>jetty-server.product</em></span> - Virgo Jetty Server</p><p>
			</p><p>	 
				<img src="images/director_args.png">
			</p><p>
				3. Finally, run the created configuration. You should see the following output in Eclipse's Console
			</p><p>	 
				<img src="images/director_result.png">
			</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="installation"></a>4.&nbsp;Installing Virgo Server for Apache Tomcat</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="installation-prereqs"></a>4.1&nbsp;Prerequisites</h2></div></div></div><p>
			The Virgo Server for Apache Tomcat, or VTS for short, requires Java SE 6 or later to be installed. Java is available from
			<a class="ulink" href="http://www.java.com/" target="_top">http://www.java.com/</a> and elsewhere.
		</p><p>
			In case you are installing via a p2 director you'll need to get it. The easiest way is to download Eclipse from <a class="ulink" href="http://www.eclipse.org/downloads/" target="_top">here</a>.
			It has built-in p2 director and other p2 applications.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="installation-zip"></a>4.2&nbsp;Installing from the ZIP Download</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1048"></a>Downloading the ZIP file</h3></div></div></div><p>
				Virgo Server for Apache Tomcat is distributed as a ZIP file. This can be downloaded from
				<a class="ulink" href="http://www.eclipse.org/virgo/download/" target="_top">here</a>.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="installation-zip-installing"></a>Installing</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="installation-zip-installing-linux"></a>Linux</h4></div></div></div><p>
					To install Virgo Server for Apache Tomcat on Linux, unzip the distribution package to the desired installation directory.
					For example, to install into <code class="literal">/opt</code>:
				</p><pre class="screen">prompt$ unzip virgo-web-server-3.6.4.RELEASE.zip -d /opt</pre><p>
					This creates a directory called <code class="literal">virgo-web-server-3.6.4.RELEASE</code> under <code class="literal">/opt</code>.
				</p><p>
					Virgo Server for Apache Tomcat requires write access to the installation directory, in this case <code class="literal">/opt/virgo-web-server-3.6.4.RELEASE</code>.
					Typically this means it must be run as the user that installed it, or the installation directory&#8217;s ownership must be changed.
				</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="installation-zip-installing-win"></a>Microsoft Windows</h4></div></div></div><p>
					To install the Virgo Server for Apache Tomcat on Windows, unzip the distribution package to the desired installation directory.
					You should use a zip application such as 7zip, not the built-in folder decompression.  Note that both Windows and
					Java have some issues with long file names and file paths, so we recommend installing to the root directory of
					your chosen drive.
				</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="installation-updatesite"></a>4.3&nbsp;Installing from an update site</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1090"></a>The repository location</h3></div></div></div><p>
				Virgo has a single p2 repository that contains all Virgo distributions. The repository for version 3.6.4.RELEASE can be found <a class="ulink" href="http://download.eclipse.org/virgo/updatesite/3.6.4.RELEASE" target="_top">here</a>.
				There is a repository for each released version.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1098"></a>Using the p2 director</h3></div></div></div><p>
				As shown in <a class="xref" href="#using-director" title="3.2&nbsp;Installing with the p2 director from Eclipse">Section&nbsp;3.2, &#8220;Installing with the p2 director from Eclipse&#8221;</a> you can easily install VTS in a desired destination.
				The only director argument that needs to be adjusted is <span class="emphasis"><em>-installIU</em></span>.
			</p><p>
				For VTS the right value is <span class="emphasis"><em>tomcat-server.product</em></span>.
			</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="installation-post"></a>4.4&nbsp;Post-installation steps</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="installation-post-env"></a>Set environment variable variables</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="installation-post-env-java"></a>JAVA_HOME</h4></div></div></div><p>
					Virgo Server for Apache Tomcat uses the <code class="literal">JAVA_HOME</code> environment variable to locate the <code class="literal">java</code>
					executable. Configure this environment variable to point to the home directory of the Java 6 installation on your computer.
				</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="installation-post-env-server"></a>SERVER_HOME</h4></div></div></div><p>
					As a convenience it is recommended that you create an environment variable that points
					to the Virgo Server for Apache Tomcat installation directory. Note that the Virgo Server for Apache Tomcat does not require that
					such an environment variable has been set. This variable may have any name of your
					choosing. The Virgo Server for Apache Tomcat&#8217;s documentation assumes that the variable is named
					<code class="literal">SERVER_HOME</code>.
				</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="installation-post-env-server-linux"></a>Linux</h4></div></div></div><p>
					Edit the <code class="literal">.profile</code> file in your home directory to
					add the <code class="literal">SERVER_HOME</code> and <code class="literal">JAVA_HOME</code> environment variables. For
					example, if you installed into <code class="literal">/opt</code>:
				</p><pre class="screen">export SERVER_HOME=/opt/virgo-web-server-3.6.4.RELEASE/
export JAVA_HOME=/user/java/jdk1.6.0_17
export PATH=$JAVA_HOME/bin:$PATH</pre><p>
				To verify the setting of <code class="literal">JAVA_HOME</code>, issue the command <code class="literal">$JAVA_HOME/bin/java -version</code> from a new terminal window
				and ensure that the command completes successfully and reports
				a Java version <code class="literal">1.6.</code><span class="emphasis"><em>x</em></span> (denoting Java 6) or greater.
				</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="installation-post-env-server-win"></a>Microsoft Windows</h4></div></div></div><p>
					This section shows how to add <code class="literal">SERVER_HOME</code> as a system variable on Windows.  Follow the same procedure to add or update the <code class="literal">JAVA_HOME</code> environment variable.
				</p><p>
					From the Start menu, open the Control Panel and double-click on &#8216;System&#8217;.
				</p><p>
					<img src="images/system-props.png">
				</p><p>
					Click the &#8216;Advanced&#8217; tab and select &#8216;Environment Variables&#8217;. Next,
					click the &#8216;New&#8217; button in the &#8216;System Variables&#8217; section.
				</p><p>
					<img src="images/env-variables.png">
				</p><p>
					This will display the &#8216;New System Variable&#8217; window.  Enter
					<code class="literal">SERVER_HOME</code> as the &#8216;Variable name&#8217; and
					the installation directory as the &#8216;Variable value&#8217;. Click OK.
				</p><p>
					<img src="images/system-variable.png">
				</p><p>
					To verify the setting of <code class="literal">JAVA_HOME</code>, issue the command <code class="literal">"%JAVA_HOME%"\bin\java -version</code> from
					a new command prompt and ensure that the command completes successfully and reports
					a Java version <code class="literal">1.6.</code><span class="emphasis"><em>x</em></span> (denoting Java 6) or greater.
				</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="installation-post-env-server-win-troubleshooting"></a>Microsoft Windows - Troubleshooting Security Permissions</h3></div></div></div><p>
				When starting Virgo Server for Apache Tomcat on some variants of Windows you might encounter a problem with file permissions.
				The error looks like this.
			</p><pre class="screen">WARNING: jmxPermissions.vbs did not update the permissions of C:\virgo\configuration\org.eclipse.virgo.kernel.jmxremote.access.properties. Check the file has the correct permissions.</pre><p>
				If VTS starts correctly (see <a class="xref" href="#starting-stopping" title="7.&nbsp;Starting and Stopping Virgo Server for Apache Tomcat">Starting and Stopping Virgo Server for Apache Tomcat</a>) you can skip this section and carry on. However to secure your
				installation you have to set correct permissions. To do so, go to the &#8216;configuration&#8217; directory of the installation
				in Windows Explorer.
			</p><p>
				<img src="images/install-windows-1-FileListing.png">
			</p><p>
				Right click on the &#8216;org.eclipse.virgo.kernel.jmxremote.access.properties&#8217; file and view its properties,
				then select the &#8216;Security&#8217; tab. Remove all groups and users from the list and select &#8216;Apply&#8217;.
			</p><p>
				<img src="images/install-windows-2-SecuritySettings.png">
			</p><p>
				Within the security page select the &#8216;Advanced&#8217; options. On the &#8216;Owner&#8217; tab, choose the owner
				that you are trying to run the VTS as and select &#8216;Apply&#8217;.
			</p><p>
				<img src="images/install-windows-3-AdvanceSettingsOwner.png">
			</p><p>
				Once this is done select &#8216;OK&#8217; to return to the &#8216;Security&#8217; tab
				and now add the owner to the list of groups and users that have permission to access the file.
			</p><p>
				<img src="images/install-windows-4-AllSetReadAndExecute.png">
			</p><p>
				Once all these steps are complete you can proceed to start the VTS.
			</p><pre class="screen">C:\dev\virgo-web-server-3.6.4.RELEASE&gt;bin\startup.bat
[2009-12-08 13:09:09.545] startup-tracker              &lt;KE0001I&gt; Kernel starting.</pre></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="kernel-installation"></a>5.&nbsp;Installing Virgo Kernel</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="kernel-installation-prereqs"></a>5.1&nbsp;Prerequisites</h2></div></div></div><p>
			The Virgo Kernel, or VK for short, requires Java SE 6 or later to be installed. Java is available from
			<a class="ulink" href="http://www.java.com/" target="_top">http://www.java.com/</a> and elsewhere.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="kernel-installation-zip"></a>5.2&nbsp;Installing from the ZIP Download</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1266"></a>Downloading the ZIP file</h3></div></div></div><p>
				Virgo Kernel is distributed as a ZIP file. This can be downloaded from
				<a class="ulink" href="http://www.eclipse.org/virgo/download/" target="_top">here</a>.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="kernel-installation-zip-installing"></a>Installing</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="kernel-installation-zip-installing-linux"></a>Linux</h4></div></div></div><p>
					To install the Virgo Kernel on Linux, unzip the distribution package to the desired installation directory.
					For example, to install into <code class="literal">/opt</code>:
				</p><pre class="screen">prompt$ unzip virgo-kernel-3.6.4.RELEASE.zip -d /opt</pre><p>
					This creates a directory called <code class="literal">virgo-kernel-3.6.4.RELEASE</code> under <code class="literal">/opt</code>.
				</p><p>
					Virgo Kernel requires write access to the installation directory, in this case <code class="literal">/opt/virgo-kernel-3.6.4.RELEASE</code>.
					Typically this means it must be run as the user that installed it, or the installation directory&#8217;s ownership must be changed.
				</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="kernel-installation-zip-installing-win"></a>Microsoft Windows</h4></div></div></div><p>
					To install the Virgo Kernel on Windows, unzip the distribution package to the desired installation directory.
					You should use a zip application such as 7zip, not the built-in folder decompression.  Note that both Windows and
					Java have some issues with long file names and file paths, so we recommend installing to the root directory of
					your chosen drive.
				</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="kernel-installation-updatesite"></a>5.3&nbsp;Installing from an update site</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1308"></a>The repository location</h3></div></div></div><p>
				Virgo has a single p2 repository that contains all Virgo distributions. The repository for version 3.6.4.RELEASE can be found <a class="ulink" href="http://download.eclipse.org/virgo/updatesite/3.6.4.RELEASE" target="_top">here</a>.
				There is a repository for each released version.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1316"></a>Using the p2 director</h3></div></div></div><p>
				As shown in <a class="xref" href="#using-director" title="3.2&nbsp;Installing with the p2 director from Eclipse">Section&nbsp;3.2, &#8220;Installing with the p2 director from Eclipse&#8221;</a> you can easily install VK in a desired destination.
				The only director argument that needs to be adjusted is <span class="emphasis"><em>-installIU</em></span>.
			</p><p>
				For VK the right value is <span class="emphasis"><em>kernel.product</em></span>.
			</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="kernel-installation-post"></a>5.4&nbsp;Post-installation steps</h2></div></div></div>
	    Follow the same <a class="link" href="#installation-post" title="4.4&nbsp;Post-installation steps">Post-installation steps</a> as for Virgo Server for Apache Tomcat.
	</div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="nano-installation"></a>6.&nbsp;Installing Virgo Nano</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="nano-installation-prereqs"></a>6.1&nbsp;Prerequisites</h2></div></div></div><p>
			The Virgo Nano, or VN for short, requires Java SE 6 or later to be installed. Java is available from
			<a class="ulink" href="http://www.java.com/" target="_top">http://www.java.com/</a> and elsewhere.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="nano-installation-zip"></a>6.2&nbsp;Installing from the ZIP Download</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1352"></a>Downloading the ZIP file</h3></div></div></div><p>
				Virgo Nano is distributed as a ZIP file. This can be downloaded from
				<a class="ulink" href="http://www.eclipse.org/virgo/download/" target="_top">here</a>.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="nano-installation-zip-installing"></a>Installing</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="nano-installation-zip-installing-linux"></a>Linux</h4></div></div></div><p>
					To install the Virgo Nano on Linux, unzip the distribution package to the desired installation directory.
					For example, to install into <code class="literal">/opt</code>:
				</p><pre class="screen">prompt$ unzip virgo-nano-3.6.4.RELEASE.zip -d /opt</pre><p>
					This creates a directory called <code class="literal">virgo-nano-3.6.4.RELEASE</code> under <code class="literal">/opt</code>.
				</p><p>
					Virgo Nano requires write access to the installation directory, in this case <code class="literal">/opt/virgo-nano-3.6.4.RELEASE</code>.
					Typically this means it must be run as the user that installed it, or the installation directory&#8217;s ownership must be changed.
				</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="nano-installation-zip-installing-win"></a>Microsoft Windows</h4></div></div></div><p>
					To install the Virgo Nano on Windows, unzip the distribution package to the desired installation directory.
					You should use a zip application such as 7zip, not the built-in folder decompression.  Note that both Windows and
					Java have some issues with long file names and file paths, so we recommend installing to the root directory of
					your chosen drive.
				</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="nano-installation-updatesite"></a>6.3&nbsp;Installing from an update site</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1394"></a>The repository location</h3></div></div></div><p>
				Virgo has a single p2 repository that contains all Virgo distributions. The repository for version 3.6.4.RELEASE can be found <a class="ulink" href="http://download.eclipse.org/virgo/updatesite/3.6.4.RELEASE" target="_top">here</a>.
				There is a repository for each released version.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1402"></a>Using the p2 director</h3></div></div></div><p>
				As shown in <a class="xref" href="#using-director" title="3.2&nbsp;Installing with the p2 director from Eclipse">Section&nbsp;3.2, &#8220;Installing with the p2 director from Eclipse&#8221;</a> you can easily install VN in a desired destination.
				The only director argument that needs to be adjusted is <span class="emphasis"><em>-installIU</em></span>.
			</p><p>
				For VN the right value is <span class="emphasis"><em>nano.product</em></span>.
			</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="nano-installation-post"></a>6.4&nbsp;Post-installation steps</h2></div></div></div>
	    Follow the same <a class="link" href="#installation-post" title="4.4&nbsp;Post-installation steps">Post-installation steps</a> as for Virgo Server for Apache Tomcat.
	</div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="starting-stopping"></a>7.&nbsp;Starting and Stopping Virgo Server for Apache Tomcat</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1429"></a>7.1&nbsp;Starting Virgo Server for Apache Tomcat</h2></div></div></div><p>
	      To start Virgo Server for Apache Tomcat run the <code class="literal">startup.sh</code> (Linux) or <code class="literal">startup.bat</code> (Windows) script.  
	      For both platforms, the script is located in the <code class="literal">SERVER_HOME/bin</code> directory.
	    </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
	      This chapter applies to Virgo Nano too. Note that since VN 
	      has a single region you can ignore the console output from the user region and focus on the instructions.
	      A successful startup of VN is as simple as that:
	      <pre class="screen">[2011-12-28 11:41:31.528] startup-tracker              &lt;KE0001I&gt; Kernel starting. 
[2011-12-28 11:41:31.602] startup-tracker              &lt;KE0002I&gt; Kernel started. 
	      </pre></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1447"></a>Linux</h3></div></div></div><p>
	        To start Virgo Server for Apache Tomcat, open a terminal window and run <code class="literal">startup.sh</code>:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh</pre><p>
	        Once Virgo Server for Apache Tomcat has started, the console will display a log message
	        similar to the one shown below, along with other status messages:
	      </p><pre class="screen">[2009-11-30 12:12:12.111] Thread-2   &lt;UR0001I&gt; User region ready.</pre><p>The preceding message indicates that you can start using VTS.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1463"></a>Microsoft Windows</h3></div></div></div><p>
	        To start Virgo Server for Apache Tomcat, open a command-window and run <code class="literal">startup.bat</code>:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat</pre><p>
	        Once Virgo Server for Apache Tomcat has started, the console will display a log message
	        similar to the one shown below, along with other status messages:
	      </p><pre class="screen">[2009-11-30 12:12:12.111] Thread-2   &lt;UR0001I&gt; User region ready.</pre><p>
	      </p><p>The preceding message indicates that you can start using VTS.</p><p>
	      </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1481"></a>7.2&nbsp;Starting in Clean Mode</h2></div></div></div><p>
			When you start Virgo Server for Apache Tomcat in clean mode, the startup script removes the <code class="literal">SERVER_HOME/work</code> directory (and hence all
			running applications) as well as all trace, log and dump files.  It leaves the
			<code class="literal">SERVER_HOME/repository</code> and <code class="literal">SERVER_HOME/pickup</code> directories untouched,
			which means that any applications previously hot deployed will be automatically reinstalled.
	    </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1495"></a>Linux</h3></div></div></div><p>
	        To start Virgo Server for Apache Tomcat in clean mode, open a terminal window and run <code class="literal">startup.sh -clean</code>:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh -clean </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1505"></a>Microsoft Windows</h3></div></div></div><p>
	        To start Virgo Server for Apache Tomcat in clean mode, open a command window and run <code class="literal">startup.bat -clean</code>:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat -clean</pre></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1515"></a>7.3&nbsp;Starting in Debug Mode</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1518"></a>Linux</h3></div></div></div><p>
	        To start Virgo Server for Apache Tomcat in debug mode, run
	        <code class="literal">startup.sh</code> passing in the
	        <code class="literal">-debug</code> argument:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh -debug</pre><p>
	        This will start the debug agent listening on port
	        <code class="literal">8000</code> which is the default remote debug port used
	        by Eclipse. To start in debug mode with a specific port number, pass
	        this in as the value for the <code class="literal">-debug</code> argument:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh -debug 8001</pre><p>
	        This will start the debug agent listening on port
	        <code class="literal">8001</code>. To start in debug mode and suspend the VM
	        until a debugger attaches, pass in the <code class="literal">-suspend</code>
	        argument along with the <code class="literal">-debug</code> argument:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh -debug -suspend</pre><p>
	        This starts the debug agent, but prevents Virgo Server for Apache Tomcat from actually
	        starting until a debugger attaches to the agent. This can be useful
	        when trying to diagnose problems that occur during startup.
	      </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1556"></a>Microsoft Windows</h3></div></div></div><p>
	        To start Virgo Server for Apache Tomcat in debug mode, run
	        <code class="literal">startup.bat</code> passing in the
	        <code class="literal">-debug</code> argument:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat -debug</pre><p>
	        This will start the debug agent listening on port
	        <code class="literal">8000</code> which is the default remote debug port used
	        by Eclipse. To start in debug mode with a specific port number, pass
	        this in as the value for the <code class="literal">-debug</code> argument:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat -debug 8001</pre><p>
	        This will start the debug agent listening on port
	        <code class="literal">8001</code>. To start in debug mode and suspend the VM
	        until a debugger attaches, pass in the <code class="literal">-suspend</code>
	        argument along with the <code class="literal">-debug</code> argument:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat -debug -suspend</pre><p>
	        This starts the debug agent, but prevents Virgo Server for Apache Tomcat from actually
	        starting until a debugger attaches to the agent. This can be useful
	        when trying to diagnose problems that occur during startup.
	      </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1594"></a>7.4&nbsp;Starting with JMX Access Modifications</h2></div></div></div>
			The Virgo Server for Apache Tomcat always starts with JMX access enabled, allowing you to use a management tool such as JConsole 
			to attach to the Web Server instance.
			By default both local access and remote access over SSL with username and password
			authentication are provided. The default port for secure JMX access is <code class="literal">9875</code> 
			and the default username and password are <code class="literal">admin</code> and <code class="literal">springsource</code>.
			<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1607"></a>Linux</h3></div></div></div><p>
					To start Virgo Server for Apache Tomcat with default JMX access enabled, run <code class="literal">startup.sh</code> passing
					in no arguments:
				</p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh </pre><p>
					To start JConsole, run the <code class="literal">jconsole.sh</code> script, located in the <code class="literal">bin</code> directory, as shown: 
				</p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/jconsole.sh </pre><p>
					The following image shows how to specify a local connection using JConsole.
				</p><p>
					<img src="images/jmx-local-attach.png">
				</p><p>
					The following image shows how to specify a remote connection in JConsole that uses SSL with the default 
					username/password (<code class="literal">admin/springsource</code> and default secure port of <code class="literal">9875</code>).
				</p><p>
					<img src="images/jmx-remote-attach-default.png">
				</p><p>
					To start with the JMX remote access on a specific port number other than the default <code class="literal">9875</code>, 
					pass this port number in as the value
					of the <code class="literal">-jmxport</code> argument:
				</p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh -jmxport 9090</pre><p>
					This will start the Virgo Server for Apache Tomcat with JMX enabled for remote connections on port <code class="literal">9090</code>.
				</p><p>
					<img src="images/jmx-remote-attach-jmxport.png">
				</p><p>To start the JMX remote access with a custom username and password, update the <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.kernel.users.properties</code> file.  First specify the custom username by changing the value of the <code class="literal">role.admin</code> property.  Then set the password of this new user by adding a new property called <code class="literal">user.<span class="emphasis"><em>username</em></span></code>, where <code class="literal"><span class="emphasis"><em>username</em></span></code> refers to the actual name of the user.  Finally, restart VTS for the changes to take effect.</p><p>For example, if you want change the JMX remote access username to <code class="literal">zebedee</code> with password <code class="literal">florence</code>, change the file as follows: 
		</p><pre class="programlisting">##################
# User definitions
##################
user.zebedee=florence


##################
# Role definitions
##################
role.admin=zebedee</pre><p>Specify the custom username in JConsole as shown.  </p><p>
					<img src="images/jmx-remote-attach-jmxusers.png">
				</p><p>
					To start the JMX remote access using a custom SSL certificate, edit the file located at
					<code class="literal">$SERVER_HOME/configuration/keystore</code>. If you wish to use a different keystore,
					pass this filename in as the value for the <code class="literal">-keystore</code> argument and the keystore
					password in as the value for the <code class="literal">-keystorePassword</code> argument:
				</p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh -keystore customKeystore -keystorePassword customKeystorePassword</pre><p>
					This will start the Virgo Server for Apache Tomcat with JMX enabled for remote connections using an SSL certificate from
					<code class="literal">customKeystore</code> with a password of <code class="literal">customKeystorePassword</code>.
				</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1718"></a>Microsoft Windows</h3></div></div></div><p>
					To start Virgo Server for Apache Tomcat with default JMX access enabled, run <code class="literal">startup.bat</code> passing
					in no arguments:
				</p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat</pre><p>
					To start JConsole, run the <code class="literal">jconsole.bat</code> script, located in the <code class="literal">bin</code> directory, as shown: 
				</p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\jconsole.bat </pre><p>
					The following image shows how to specify a local connection using JConsole. 
				</p><p>
					<img src="images/jmx-local-attach.png">
				</p><p>
					The following image shows how to specify a remote connection in JConsole that uses SSL with the default 
					username/password (<code class="literal">admin/springsource</code> and default secure port of <code class="literal">9875</code>). 
				</p><p>
					<img src="images/jmx-remote-attach-default.png">
				</p><p>
					To start with the JMX remote access on a specific port number other than the default <code class="literal">9875</code>, 
					pass this port number in as the value of the <code class="literal">-jmxport</code> argument: 
				</p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat -jmxport 9090</pre><p>
					This will start the Virgo Server for Apache Tomcat with JMX enabled for remote connections on port
					<code class="literal">9090</code>.
				</p><p>
					<img src="images/jmx-remote-attach-jmxport.png">
				</p><p>To start the JMX remote access with a custom username and password, update the <code class="literal">%SERVER_HOME%\configuration\org.eclipse.virgo.kernel.users.properties</code> file.  First specify the custom username by changing the value of the <code class="literal">role.admin</code> property.  Then set the password of this new user by adding a new property called <code class="literal">user.<span class="emphasis"><em>username</em></span></code>, where <code class="literal"><span class="emphasis"><em>username</em></span></code> refers to the actual name of the user.  Finally, restart VTS for the changes to take effect.</p><p>For example, if you want change the JMX remote access username to <code class="literal">zebedee</code> with password <code class="literal">florence</code>, change the file as follows: 
		</p><pre class="programlisting">##################
# User definitions
##################
user.zebedee=florence


##################
# Role definitions
##################
role.admin=zebedee</pre><p>Specify the custom username in JConsole as shown.  </p><p>
					<img src="images/jmx-remote-attach-jmxusers.png">
				</p><p>
					To start the JMX remote access using a custom SSL certificate, edit the file located at
					<code class="literal">%SERVER_HOME%\configuration\keystore</code>. If you wish to use a different
					keystore, pass this filename in as the value for the <code class="literal">-keystore</code> argument and the
					keystore password in as the value for the <code class="literal">-keystorePassword</code> argument:
				</p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat -keystore customKeystore -keystorePassword customKeystorePassword</pre><p>
					This will start the Virgo Server for Apache Tomcat with JMX enabled for remote attach using an SSL certificate from
					<code class="literal">customKeystore</code> with a password of <code class="literal">customKeystorePassword</code>.
				</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="starting-stopping-configuration-directory"></a>7.5&nbsp;Starting with a Custom Configuration Directory</h2></div></div></div><p>
			Use the <code class="literal">-configDir</code> option to specify an alternate <code class="literal">configuration</code> directory, different from the
			default <code class="literal">SERVER_HOME/configuration</code> directory. This option allows you to use the same Virgo Server for Apache Tomcat 
			installation to run multiple instances of VTS. Simply create a configuration directory for each
			instance, specify unique port numbers, logging and tracing directories, and so on, and then specify that directory
			when starting VTS.
		</p><p>
			If you specify a relative path for the <code class="literal">-configDir</code> parameter, 
			the startup script interprets the path as relative to the root of the Virgo Server for Apache Tomcat installation, 
			and not relative to the directory from which you execute the <code class="literal">startup</code> script. 
		</p><p>
			See <a class="link" href="#alternate-serviceability-work" title="B.4&nbsp;Alternate serviceability and work Directories">Alternate <code class="literal">serviceability</code> and <code class="literal">work</code>
			Directories</a> for a known issue related to specifying an alternate <code class="literal">configuration</code> directory.
		</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1865"></a>Linux</h3></div></div></div>
			To start Virgo Server for Apache Tomcat using a configuration directory of <code class="literal">/configuration/node1</code>:
			<pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh -configDir /configuration/node1</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1874"></a>Windows</h3></div></div></div>
			To start Virgo Server for Apache Tomcat using a configuration directory of <code class="literal">c:\configuration\node1</code>:
			<pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat -configDir c:\configuration\node1</pre></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1883"></a>7.6&nbsp;Stopping Virgo Server for Apache Tomcat</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1886"></a>Linux</h3></div></div></div><p>
	        To stop a running instance of Virgo Server for Apache Tomcat, start a new terminal window and run the <code class="literal">shutdown.sh</code> script:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/shutdown.sh</pre><p>
	        To stop a running instance of Virgo Server for Apache Tomcat immediately, bypassing normal shutdown
		processing, run <code class="literal">shutdown.sh</code> with the <code class="literal">-immediate</code> option:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/shutdown.sh -immediate</pre><p>
	        If, when you started the Web Server instance, you used the <code class="literal">-jmxport</code> option to specify a non-default JMX port number, 
	        then you must pass this port number to the <code class="literal">-jmxport</code> of the <code class="literal">shutdown.sh</code> script 
	        to gracefully shut it down.  
	        For example, if you specified <code class="literal">9090</code> as the JMX port, use the following to shut down the Web Server instance:
	      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/shutdown.sh -jmxport 9090</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1922"></a>Microsoft Windows</h3></div></div></div><p>
	        To stop a running instance of Virgo Server for Apache Tomcat, start a new console window and run the <code class="literal">shutdown.bat</code> script:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\shutdown.bat</pre><p>
	        To stop a running instance of Virgo Server for Apache Tomcat immediately, bypassing normal shutdown
			processing, run <code class="literal">shutdown.bat</code> with the <code class="literal">-immediate</code> option:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\shutdown.bat -immediate</pre><p>
	        If, when you started the Web Server instance, you used the <code class="literal">-jmxport</code> option to specify a non-default JMX port number, 
	        then you must pass this port number to the <code class="literal">-jmxport</code> of the <code class="literal">shutdown.bat</code> script to gracefully shut it down.  
	        For example, if you specified <code class="literal">9090</code> as the JMX port, use the following to shut down the Web Server instance:
	      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\shutdown.bat -jmxport 9090</pre></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="cleaning-without-starting"></a>7.7&nbsp;Cleaning  Virgo Server for Apache Tomcat without Starting it</h2></div></div></div><p>
				When you clean Virgo Server for Apache Tomcat, the startup script removes the <code class="literal">SERVER_HOME/work</code> directory (and hence all
				running applications) as well as all trace, log and dump files.  It leaves the
				<code class="literal">SERVER_HOME/repository</code> and <code class="literal">SERVER_HOME/pickup</code> directories untouched,
				which means that any applications previously hot deployed will be automatically reinstalled next time the Web Server is started.
		    </p><p>
				Cleaning is useful when you want to start the Web Server from a clean state next time, but you don't want to start the Web Server yet.
			</p><p>
				Cleaning is also useful for tidying up the directory structure. For example, sometimes Microsoft Windows won't let you delete the Web
				Server installation directory.
				See <a class="link" href="#windows-deletion" title="B.5&nbsp;Problem Deleting Installation Directory under Windows">Problem Deleting Installation Directory under Windows</a> for more details.
			</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1979"></a>Linux</h3></div></div></div><p>
		        To clean Virgo Server for Apache Tomcat, open a terminal window and run <code class="literal">startup.sh -clean -noStart</code>:
		      </p><pre class="screen">prompt$ cd $SERVER_HOME
prompt$ bin/startup.sh -clean -noStart</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1989"></a>Microsoft Windows</h3></div></div></div><p>
		        To clean Virgo Server for Apache Tomcat, open a command window and run <code class="literal">startup.bat -clean -noStart</code>:
		      </p><pre class="screen">prompt&gt; cd %SERVER_HOME%
prompt&gt; bin\startup.bat -clean -noStart</pre></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="equinox-launcher"></a>7.8&nbsp;Using Equinox Launcher</h2></div></div></div><p>
				Since version 3.5 Virgo uses the standard Equinox Launcher as its default launcher.
				As a result in addition to all the launcher options described so far users can also pass arguments specific to the Equinox launcher.
				</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.gif"></td><th align="left">Important</th></tr><tr><td align="left" valign="top">The Equinox Launcher arguments must be placed at the end of the startup call. Here's an example
				<pre class="screen">./startup.sh "virgo-args" "equinox-launcher-args"
./startup.sh -clean -console 2222</pre></td></tr></table></div><p>
		    </p><p>
				A full list of the accepted Equinox Launcher arguments is available at <a class="ulink" href="http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html" target="_top">help.eclipse.org</a>.
			</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="admin-shell"></a>8.&nbsp;Equinox Console</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="admin-shell-enable"></a>8.1&nbsp;Enabling the Equinox Console</h2></div></div></div><p>
			Shells are provided for both user region and kernel, although they are disabled by default and need enabling before
			they can be used.
		</p><p>
			The user region shell ports may be reconfigured by editing the file 		
			<code class="literal">osgi.console.properties</code> in the <code class="literal">repository/ext</code> directory, and
			then restarting Virgo. The telnet properties in the file are prefixed with <span class="emphasis"><em>telnet.</em></span>, and the ssh properties are prefixed with <span class="emphasis"><em>ssh.</em></span>.
			The kernel shell ports may be reconfigured by editing the file <code class="literal">osgi.console.properties</code> in the <code class="literal">configuration</code> directory, and then restarting Virgo.
        </p><p>
			To enable any of these shell ports, change the <code class="literal">enabled</code> setting from <code class="literal">false</code> to <code class="literal">true</code>
            </p><pre class="programlisting">enabled=true</pre><p>
            in the corresponding properties files.
        </p><p>
			If you wish to change a port, any free port can be used, but the usual defaults are, for telnet, 2501 for the user region and 2401 for the kernel, and
			for ssh, 2502 for the user region and 2402 for the kernel.
        </p><p>			
			Access is via ssh or telnet.
			The simplest way to access the shell is via telnet to port 2501 or 2401 for user region or kernel, respectively.
</p><pre class="programlisting">prompt$ telnet localhost 2501
Trying ::1...
Connected to localhost.
Escape character is '^]'.

osgi&gt; </pre><p>
		</p><p>
			Alternatively, you can ssh to port 2502 or 2402 for user region or kernel, respectively.
			The users and passwords for ssh are configured in <code class="literal">configuration/org.eclipse.virgo.kernel.users.properties</code> as described
			in <a class="link" href="#configuring-authentication" title="Configuring Authentication">Configuring Authentication</a>. The default user and password are <code class="literal">admin</code>
			and <code class="literal">springsource</code>.
		</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
			Currently the Virgo Nano Equinox Console is enabled by default. Telnet is accesible on <span class="emphasis"><em>2401</em></span> and SSH on <span class="emphasis"><em>2402</em></span>. In future these will be configurable.
		</td></tr></table></div><p>
		  </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
		    If you use the <code class="literal">shutdown</code> shell command to stop Virgo Tomcat Server, the shutdown messages appear in the shell terminal instead of in the terminal in which Virgo runs. This is due to the
        mechanisms which the shell implementation uses to redirect standard output.
      </td></tr></table></div><p> 
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="admin-shell-using-vsh"></a>8.2&nbsp;Using Virgo Shell Commands</h2></div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
			 This section is not applicable to Virgo Nano.
		</td></tr></table></div><p>Virgo provides shell commands
		that allow you to examine artifacts
        currently installed in a particular Virgo Kernel instance, manage the lifecycle of the installed artifacts, install new artifacts, and shut down
        the Virgo Kernel. You can install, examine, and manage the lifecycle of the following artifacts:
        </p><div class="itemizedlist"><ul type="disc"><li><p>Bundles</p></li><li><p>Configuration Artifacts</p></li><li><p>PARs</p></li><li><p>Plans</p></li></ul></div><p>
        </p><p>
        and can examine:
        </p><div class="itemizedlist"><ul type="disc"><li><p>Exported packages</p></li><li><p>Services in the OSGi service registry</p></li></ul></div><p>
        </p><p>
			Virgo also provides shell commands to list all bundles that contain, export, or load a particular class.
        </p><p>
			These commands are provided <span class="emphasis"><em>for the user region shells only</em></span> and are grouped together in
			the <code class="literal">vsh</code> <span class="emphasis"><em>scope</em></span>.
        </p><p>You invoke commands using the <code class="literal">vsh:</code> scope. For example:</p><pre class="programlisting">
osgi&gt; vsh:plan list

Name                                           Version                            State
org.eclipse.virgo.apps.admin.plan              2.1.0                             ACTIVE
org.eclipse.virgo.kernel.userregion.springdm   2.1.0                             ACTIVE
org.eclipse.virgo.web                          2.1.0                             ACTIVE

osgi&gt; </pre><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-using-command-list"></a>Virgo Shell Commands</h3></div></div></div><p>The following table lists the Virgo shell commands; each command in turn has a variety of options that you can specify, depending on what you want to do, such as start a bundle or refresh a plan. The reference documentation about each command provides the full list of available options. </p><div class="table"><a name="admin-shell-vsh-commands-table"></a><p class="title"><b>Table&nbsp;8.1.&nbsp;Virgo Shell Commands</b></p><div class="table-contents"><table summary="Virgo Shell Commands" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Command </th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-vsh-bundle-command" title="bundle Command">bundle</a></td><td style="border-bottom: 1.0pt solid ; ">Manages and displays information about bundle artifacts.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-cl-clhas" title="clhas command">clhas</a></td><td style="border-bottom: 1.0pt solid ; ">Lists all bundles that <span class="bold"><strong>contain</strong></span> a class or resource.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-cl-clexport" title="clexport command">clexport</a></td><td style="border-bottom: 1.0pt solid ; ">Lists all bundles that <span class="bold"><strong>export</strong></span> a class or package.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-cl-clload" title="clload command">clload</a></td><td style="border-bottom: 1.0pt solid ; ">Lists all bundles that can <span class="bold"><strong>load</strong></span> a class.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-vsh-config-command" title="config Command">config</a></td><td style="border-bottom: 1.0pt solid ; ">Manages and displays information about configuration artifacts.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-vsh-package-command" title="packages Command">packages</a></td><td style="border-bottom: 1.0pt solid ; ">Displays information about exported packages.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-vsh-par-command" title="par Command">par</a></td><td style="border-bottom: 1.0pt solid ; ">Manages and displays information about PAR artifacts.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-vsh-plan-command" title="plan Command">plan</a></td><td style="border-bottom: 1.0pt solid ; ">Manages and displays information about plan artifacts.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-vsh-service-command" title="service Command">service</a></td><td style="border-bottom: 1.0pt solid ; ">Displays information about services in the OSGi service registry.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><a class="link" href="#admin-shell-vsh-install-command" title="install Command">install</a></td><td style="border-bottom: 1.0pt solid ; ">Installs an artifact to Virgo Kernel. </td></tr><tr><td style="border-right: 1.0pt solid ; "><a class="link" href="#admin-shell-vsh-shutdown-command" title="shutdown Command">shutdown</a></td><td style="">Shuts down the Virgo Kernel instance to which the Equinox Console is connected.</td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="admin-shell-vsh-command-reference"></a>8.3&nbsp;Virgo Shell Command Reference</h2></div></div></div><p>
	  	This section contains reference information about the Virgo shell commands
		<a class="link" href="#admin-shell-vsh-bundle-command" title="bundle Command">bundle</a>,
		<a class="link" href="#admin-shell-cl-clhas" title="clhas command">clhas</a>,
        <a class="link" href="#admin-shell-cl-clexport" title="clexport command">clexport</a>,
        <a class="link" href="#admin-shell-cl-clload" title="clload command">clload</a>,
		<a class="link" href="#admin-shell-vsh-config-command" title="config Command">config</a>,
		<a class="link" href="#admin-shell-vsh-package-command" title="packages Command">packages</a>,
		<a class="link" href="#admin-shell-vsh-par-command" title="par Command">par</a>,
		<a class="link" href="#admin-shell-vsh-plan-command" title="plan Command">plan</a>,
		<a class="link" href="#admin-shell-vsh-service-command" title="service Command">service</a>,
		<a class="link" href="#admin-shell-vsh-install-command" title="install Command">install</a>,
		<a class="link" href="#admin-shell-vsh-shutdown-command" title="shutdown Command">shutdown</a>,
		<a class="link" href="#">help</a>, and
		<a class="link" href="#">exit</a>.
	  </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-bundle-command"></a>bundle Command</h3></div></div></div><p>Use the <code class="literal">bundle</code> command to manage the lifecycle of bundles deployed in Virgo Kernel and to gather information about deployed bundles, such as diagnostic information, header information, and so on. </p><p>The following table lists the options you can specify for this command.</p><div class="table"><a name="admin-shell-vsh-bundle-command-table"></a><p class="title"><b>Table&nbsp;8.2.&nbsp;Options of the bundle Command</b></p><div class="table-contents"><table summary="Options of the bundle Command" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Option </th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">list</td><td style="border-bottom: 1.0pt solid ; ">Displays the list of bundles that are currently installed in the current Virgo Kernel instance.  With the exception of a few kernel bundles and their services, which Virgo Kernel uses to administer the user region, none of the kernel is visible to user installed artifacts; rather, only the bundles installed in the user region are visible.
				  <p>Each bundle is identified by an internal <code class="literal">ID</code> which you can then use with the other <code class="literal">bundle</code> commands that manage a particular bundle, such as <code class="literal">start </code><span class="emphasis"><em><code class="literal">id</code></em></span>.   The <code class="literal">list</code> command also displays the version of the bundle, along with its state, which is one of the following standard OSGi lifecycle states:</p>
			        <div class="itemizedlist"><ul type="disc"><li><p><span class="bold"><strong>Installed</strong></span>: The bundle is installed but its dependencies have not yet been resolved.</p></li><li><p><span class="bold"><strong>Resolved</strong></span>: The bundle is resolved and you can now start it.</p></li><li><p><span class="bold"><strong>Uninstalled</strong></span>: The bundle is uninstalled and you cannot use it.</p></li><li><p><span class="bold"><strong>Starting</strong></span>:  The bundle is in the process of starting.</p></li><li><p><span class="bold"><strong>Active</strong></span>: The bundle is running and you can now use it.</p></li><li><p><span class="bold"><strong>Stopping</strong></span>: The bundle is in the process of stopping.</p></li></ul></div>
			     <p>Use one of the other <code class="literal">bundle</code> commands to change the state of a bundle.  For example, use the <code class="literal">bundle start </code><span class="emphasis"><em><code class="literal">id</code></em></span> command to change the state of a bundle from <code class="literal">Installed</code> to <code class="literal">Active</code>.</p>
			   </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">examine <span class="emphasis"><em>id</em></span></td><td style="border-bottom: 1.0pt solid ; ">Displays detailed information about the specified bundle.  Use the <code class="literal">bundle list</code> command to get the internal id of a particular bundle.
			         <p>In addition to the information provided by the <code class="literal">bundle list</code> command (id, full name, version, and state), the <code class="literal">examine</code> command specifies whether the bundle includes a Spring application context (or is <span class="emphasis"><em>Spring Powered</em></span>) and the exact physical location of the bundle JAR file.  </p>
				<p>The <code class="literal">examine</code> also provides the full list of packages that the bundle imports, as well as the bundles that in turn export these imported packages.  Finally, the command displays the packages that the current bundle exports, and then in turn the list of other installed bundles that are currently importing these exported packages.  </p>
			    </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">start <span class="emphasis"><em>id</em></span></td><td style="border-bottom: 1.0pt solid ; ">Starts the specified bundle.  Use the <code class="literal">bundle list</code> command to get the internal id of a particular bundle.
				<p>After Virgo Kernel successfully starts the bundle, it is listed in the <code class="literal">Active</code> state. </p>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">stop <span class="emphasis"><em>id</em></span></td><td style="border-bottom: 1.0pt solid ; ">Stops the specified bundle.  Use the <code class="literal">bundle list</code> command to get the internal id of a particular bundle.
				  <p>When you stop a bundle, it goes from the <code class="literal">Active</code> state to the <code class="literal">Resolved</code> state, and you must re-start it if you want to use the application that the bundle contains.</p> </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">refresh <span class="emphasis"><em>id</em></span></td><td style="border-bottom: 1.0pt solid ; ">Updates the contents of the specified bundle. Use the <code class="literal">bundle list</code> command to get the internal id of a particular bundle.  Use this command if you have changed the contents of the bundle JAR file and you want to refresh the artifact as installed in the OSGi framework.
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">uninstall <span class="emphasis"><em>id</em></span></td><td style="border-bottom: 1.0pt solid ; ">Uninstalls the specified bundle from Virgo Kernel.   Use the <code class="literal">bundle list</code> command to get the internal id of a particular bundle.
				  <p>When the uninstall process is complete, the bundle does not show up in the list of bundles displayed by the <code class="literal">bundle list</code> command.  If you want to use the application in the bundle, you must re-install it using the <code class="literal">install</code> command.</p>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">diag <span class="emphasis"><em>id</em></span></td><td style="border-bottom: 1.0pt solid ; ">
								<p>
									Provides diagnostic information about the specified bundle.
									In particular, this command displays information about the imported packages that Virgo Kernel could not resolve.
									Use the <code class="literal">bundle list</code> command to get the internal id of a particular bundle.
								</p>
								<p>
									Note that Virgo does not install unresolvable bundles.
									Instead is takes a state dump (for offline analysis using the web administration console) and fails the deployment.
									So bundles are only likely to become unresolvable in Virgo after an update operation.
								</p>
							</td></tr><tr><td style="border-right: 1.0pt solid ; ">headers <span class="emphasis"><em>id</em></span></td><td style="">Displays the complete list of manifest headers of the specified bundle.  Use the <code class="literal">bundle list</code> command to get the internal id of a particular bundle.
				  <p>The manifest headers include: <code class="literal">Import-Package</code>, <code class="literal">Export-Package</code>, <code class="literal">Bundle-SymbolicName</code>, and so on.  </p>
				</td></tr></tbody></table></div></div><br class="table-break"><p>The following examples show how to use this command.</p><p>First, use the <code class="literal">bundle list</code> command to view all the installed bundles:</p><pre class="programlisting">osgi&gt; vsh:bundle list

Id   Name                                       Version                    State
40   org.eclipse.virgo.kernel.userregionfactory 3.0.0.RELEASE             ACTIVE
47   org.eclipse.equinox.cm                     1.0.300.v20101204         ACTIVE
48   org.eclipse.virgo.kernel.userregion        3.0.0.RELEASE             ACTIVE
49   org.eclipse.virgo.kernel.osgicommand       3.0.0.RELEASE             ACTIVE
50   org.eclipse.osgi.services                  3.3.0.v20110110           ACTIVE
51   com.springsource.org.apache.mina.core      2.0.2                     ACTIVE
52   org.apache.felix.gogo.command              0.8.0.v201105062003       ACTIVE
53   org.apache.felix.gogo.runtime              0.8.0.v201105062003       ACTIVE
54   org.apache.felix.gogo.shell                0.8.0.v201107131313       ACTIVE
55   org.eclipse.equinox.console.supportability 1.0.0.20110722-2          ACTIVE
56   com.springsource.org.apache.sshd.core      0.5.0                     ACTIVE
57   org.springframework.osgi.core              1.2.1                     ACTIVE
58 S org.springframework.osgi.extender          1.2.1                     ACTIVE
59   org.springframework.osgi.io                1.2.1                     ACTIVE
60   org.eclipse.virgo.kernel.agent.dm          3.0.0.RELEASE             ACTIVE
61 S org.eclipse.virgo.kernel.deployer.dm       3.0.0.RELEASE             ACTIVE
62   org.eclipse.equinox.ds                     1.3.0.v20110124-0830      ACTIVE
63   org.eclipse.equinox.util                   1.0.200.v20100503         ACTIVE
64   com.springsource.org.aopalliance           1.0.0                     ACTIVE
65   org.eclipse.virgo.kernel.dmfragment        3.0.0.RELEASE           RESOLVED
66   org.springframework.aop                    3.0.5.RELEASE             ACTIVE
67   org.springframework.asm                    3.0.5.RELEASE             ACTIVE
68   org.springframework.beans                  3.0.5.RELEASE             ACTIVE
69   org.springframework.context                3.0.5.RELEASE             ACTIVE
70   org.springframework.core                   3.0.5.RELEASE             ACTIVE
71   org.springframework.expression             3.0.5.RELEASE             ACTIVE
osgi&gt; </pre><p>The following example shows how to view the headers of the <code class="literal">org.springframework.osgi.extender</code> bundle (only the first few lines are shown):</p><pre class="programlisting">osgi&gt; vsh:bundle examine 5

Id:              5
Name:            org.springframework.osgi.extender
Version          1.2.1
State:           ACTIVE
Spring Powered:  true
Bundle Location: file:&lt;... omitted ...&gt;/org.springframework.osgi.extender-1.2.1.jar/

Imported Packages:
    org.springframework.osgi.context [1.2.1, 1.2.1]
        exported by org.springframework.osgi.core 1.2.1 [4]
    &lt;... remainder omitted ...&gt;

Exported Packages:
    org.springframework.osgi.extender 1.2.1
    &lt;... remainder omitted ...&gt;

Published services:
     58 org.springframework.beans.factory.xml.NamespaceHandlerResolver
        consumed by org.springframework.osgi.extender 1.2.1 [5]
        consumed by org.eclipse.virgo.kernel.deployer.dm 2.1.0.RELEASE [8]
    &lt;... remainder omitted ...&gt;

Consumed services:
      1 org.osgi.service.packageadmin.PackageAdmin
        published by org.eclipse.osgi 3.7.0.v20110224 [0]
    &lt;... remainder omitted ...&gt;

Fragments:
    org.eclipse.virgo.kernel.dmfragment 2.1.0.RELEASE [10]

osgi&gt; </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-config-command"></a>config Command</h3></div></div></div><p>Use the <code class="literal">config</code> command to view and manage the configuration artifacts that have been installed in Virgo Kernel.  A <span class="emphasis"><em>configuration artifact</em></span> is simply a properties file that is associated with a user application that is contained in a bundle.  Using configuration artifacts, you can manage the configuration of a user application completely separately from the bundle that contains the application. </p><p>The following table lists the options you can specify for this command.</p><div class="table"><a name="admin-shell-vsh-config-command-table"></a><p class="title"><b>Table&nbsp;8.3.&nbsp;Options of the config Command</b></p><div class="table-contents"><table summary="Options of the config Command" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Option </th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">list</td><td style="border-bottom: 1.0pt solid ; ">Lists the configuration artifacts that are currently installed in Virgo Kernel.
			          <p>The <code class="literal">list</code> option displays the full name of each installed configuration artifact, its version, and its current state.  Configuration artifacts have similar lifecycles to other artifacts, such as bundles, and so the list of states in which a configuration can be in is the same as those of bundles; see <a class="link" href="#">the bundle command</a> for the list of possible states. </p>
			        </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">examine <span class="emphasis"><em>name [version]</em></span></td><td style="border-bottom: 1.0pt solid ; ">Displays information about the specified configuration artifact.  Although you must specify the name of the configuration artifact, its version is optional unless you have multiple versions of the configuration artifact installed.  Use the <code class="literal">config list</code> command to view all configuration artifacts and versions currently installed in Virgo Kernel.
				<p>A configuration artifact must be active for you to examine it; if it is not currently active, use <code class="literal">config start</code> to start it and thus change its state to <code class="literal">Active</code>.</p>
				<p>The command first displays the factory pid of the configuration artifact as well as the complete location of the bundle to which the configuration artifact is associated.   The command then lists all the properties that make up the configuration, as well as their current value. </p> </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">start <span class="emphasis"><em>name [version]</em></span></td><td style="border-bottom: 1.0pt solid ; ">
								<p>
									Starts the specified configuration artifact and makes it visible to Virgo Kernel.
									Although you must specify the name of the configuration artifact, its version is optional unless you have multiple versions of the 
									configuration artifact installed (which Virgo does not currently support).
									Use the <code class="literal">config list</code> command to view all configuration artifacts and versions currently installed in Virgo Kernel.
								</p>
								<p>
									Starting the configuration sets its state to <code class="literal">Active</code>.
								</p>
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">stop <span class="emphasis"><em>name [version]</em></span></td><td style="border-bottom: 1.0pt solid ; ">Stops the specified configuration artifact and makes it invisible to Virgo Kernel.  Although you must specify the name of the configuration artifact, its version is optional unless you have multiple versions of the configuration artifact installed (which Virgo does not currently support).  Use the <code class="literal">config list</code> command to view all configuration artifacts and versions currently installed in Virgo Kernel.

				<p>Stopping the configuration sets its state to <code class="literal">Resolved</code>.</p></td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">refresh <span class="emphasis"><em>name [version]</em></span></td><td style="border-bottom: 1.0pt solid ; ">Updates the contents of the specified configuration artifact to Virgo Kernel.  Although you must specify the name of the configuration artifact, its version is optional unless you have multiple versions of the configuration artifact installed (which Virgo does not currently support).  Use the <code class="literal">config list</code> command to view all configuration artifacts and versions currently installed in Virgo Kernel.

				<p>Use this command if you have changed the contents of the configuration artifact, and you want to make this information known to Virgo Kernel and the associated bundle. </p></td></tr><tr><td style="border-right: 1.0pt solid ; ">uninstall <span class="emphasis"><em>name [version]</em></span></td><td style="">Uninstalls the specified configuration artifact and make it completely unavailable to Virgo Kernel.  Although you must specify the name of the configuration artifact, its version is optional unless you have multiple versions of the configuration artifact installed (which Virgo does not currently support).  Use the <code class="literal">config list</code> command to view all configuration artifacts and versions currently installed in Virgo Kernel.

				<p>Stopping the configuration  removes it from Virgo Kernel's list of deployed artifacts and it will not show up when you perform a <code class="literal">config list</code>.</p></td></tr></tbody></table></div></div><br class="table-break"><p>The following example shows how to use this command to list the installed configuration artifacts.</p><pre class="programlisting">osgi&gt; vsh:config list

Name                                      Version                          State
org.eclipse.virgo.kernel                  0.0.0                           ACTIVE
org.eclipse.virgo.kernel.jmxremote.access 0.0.0                           ACTIVE
org.eclipse.virgo.kernel.userregion       0.0.0                           ACTIVE
org.eclipse.virgo.kernel.users            0.0.0                           ACTIVE
org.eclipse.virgo.medic                   0.0.0                           ACTIVE
org.eclipse.virgo.repository              0.0.0                           ACTIVE
osgi.console.ssh                          0.0.0                           ACTIVE
osgi.console.telnet                       0.0.0                           ACTIVE

osgi&gt; </pre><p>To view the properties of a configuration artifact, and their current values, use <code class="literal">config examine</code>:</p><pre class="programlisting">osgi&gt; vsh:config examine org.eclipse.virgo.repository

Factory pid:     
Bundle Location: file:plugins/org.eclipse.virgo.kernel.services-3.6.4.RELEASE.jar

Properties:
    chain:
        ext,usr
    ext.searchPattern:
        repository/ext/{artifact}
    ext.type:
        external
    service.pid:
        org.eclipse.virgo.repository
    usr.type:
        watched
    usr.watchDirectory:
        repository/usr
osgi&gt; </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-package-command"></a>packages Command</h3></div></div></div><p>Use the <code class="literal">packages</code> command to view the complete list of packages exported by all bundles installed in Virgo Kernel, as well as examine a particular exported package in more detail.</p><p>The following table lists the options you can specify for this command.</p><div class="table"><a name="admin-shell-vsh-package-command-table"></a><p class="title"><b>Table&nbsp;8.4.&nbsp;Options of the packages Command</b></p><div class="table-contents"><table summary="Options of the packages Command" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Option </th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">list</td><td style="border-bottom: 1.0pt solid ; ">Displays all the exported packages for all bundles in the uer region of Virgo Kernel.  In addition to the package name, the command displays the version of the exported package and the <code class="literal">id</code> of the bundle that contains the exported package.  You can examine the bundle by using the command <code class="literal">bundle examine </code><span class="emphasis"><em><code class="literal">id</code></em></span>.</td></tr><tr><td style="border-right: 1.0pt solid ; ">examine <span class="emphasis"><em>name version</em></span></td><td style="">Displays details about the exported package.  You must specify both the name of the exported package and its version; use <code class="literal">packages list</code> to view the exact names and version.
				  <p>This command provides the following additional information about the exported package:</p>

				  <div class="itemizedlist"><ul type="disc"><li><p>The name and version of the bundle that exports the package.  This means that the package name is explicitly listed in the bundle's <code class="literal">MANIFEST.MF</code> file as part of the <code class="literal">Export-Package</code> header.</p></li><li><p>Any attributes that are part of the <code class="literal">Export-Package</code>, in addition to <code class="literal">version</code>.</p></li><li><p>The directives that are part of the <code class="literal">Export-Package</code> header.  A typical directive is <code class="literal">uses</code>, which declares up-front constraints on a number of other packages.</p></li><li><p>The list of all bundles that import the package.</p></li></ul></div>
				</td></tr></tbody></table></div></div><br class="table-break"><p>The following example shows how to list all the exported packages for all bundles installed:</p><pre class="programlisting">osgi&gt; vsh:packages list

Name                                                        Version                    Providing Bundle
javax.accessibility                                         0.0.0                      0
javax.activation                                            0.0.0                      0
javax.activation                                            1.1.1                      0
&lt;... remainder omitted ...&gt;

osgi&gt; </pre><p>The following example shows how to examine a particular exported package:</p><pre class="programlisting">osgi&gt; vsh:packages examine org.slf4j 1.6.1

Exporter: org.eclipse.virgo.region.user 0.0.0 [1]

Attributes:
    None

Directives:
    uses:
        org.slf4j.spi
    x-equinox-ee:
        -1
    x-internal:
        false

Importer(s):
    org.eclipse.virgo.kernel.agent.dm 2.1.0.RELEASE [7]
        Import-Package attributes:
            bundle-version:
                0.0.0
            version:
                [1.6.1,2.0.0)
        Import-Package directives:
            resolution:
                static
    &lt;... remainder omitted ...&gt;

osgi&gt; </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-par-command"></a>par Command</h3></div></div></div><p>Use the <code class="literal">par</code> command to view all the PARs currently installed in Virgo Kernel, view details about a particular PAR and manage its lifecycle, such as starting, stopping, refreshing, and uninstalling it.</p><p>The following table lists the options you can specify for this command.</p><div class="table"><a name="admin-shell-vsh-par-command-table"></a><p class="title"><b>Table&nbsp;8.5.&nbsp;Options of the par Command</b></p><div class="table-contents"><table summary="Options of the par Command" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Option </th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">list</td><td style="border-bottom: 1.0pt solid ; ">Displays all the PARs that are currently installed in Virgo Kernel.
			          <p>The <code class="literal">list</code> option displays the full name of each installed PAR, its version, and its current state.  PARs have similar lifecycles to other artifacts, such as bundles, and so the list of states in which a PAR can be in is the same as those of bundles; see <a class="link" href="#">the bundle command</a> for the list of possible states. </p></td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">examine <span class="emphasis"><em>name version</em></span></td><td style="border-bottom: 1.0pt solid ; ">Displays information about the specified PAR; you are required to identify the PAR with both its name and its version.  Use the <code class="literal">par list</code> command to view all installed PAR files and their versions.  The command displays the following information:
			         <div class="itemizedlist"><ul type="disc"><li><p>The current state of the PAR (see <a class="link" href="#admin-shell-vsh-bundle-command" title="bundle Command">the bundle command</a> for the full list of possible states).</p></li><li><p>Whether the PAR is <span class="emphasis"><em>scoped</em></span>.  Scoping specifies whether Virgo Kernel should deploy the members of the PAR in their own scope; when scoping is disabled, Virgo Kernel deploys the artifacts into the global scope and they are accessible for access by all other artifacts.</p></li><li><p>Whether the PAR is <span class="emphasis"><em>atomic</em></span>.  When a PAR is atomic, Virgo Kernel manages the lifecycle of all its member artifacts as a single entity, which means if one artifact member is started, then Virgo Kernel starts <span class="emphasis"><em>all</em></span> the PAR artifacts. If one artifact fails to start, then Virgo Kernel stops all other artifacts in the PAR.</p></li><li><p>The individual members, or children, of the PAR. These could be plans, bundles, configuration artifacts, and so on.</p></li></ul></div>
			   </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">start <span class="emphasis"><em>name version</em></span></td><td style="border-bottom: 1.0pt solid ; ">Starts the specified PAR.  You must specify both the full name of the PAR as well as the version you want to start. Use the <code class="literal">par list</code> command to get the list of PARs currently installed in Virgo Kernel.
				<p>To start a PAR, it must have already been resolved by Virgo Kernel, or in other words, be in the <code class="literal">Resolved</code> state.  After Virgo Kernel successfully starts the PAR, it is listed in the <code class="literal">Active</code> state. </p></td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">stop <span class="emphasis"><em>name version</em></span></td><td style="border-bottom: 1.0pt solid ; ">Stops the specified PAR.  You must specify both the full name of the PAR as well as the version you want to stop. Use the <code class="literal">par list</code> command to get the list of PARs currently installed in Virgo Kernel.
				  <p>When you stop a PAR, it goes from the <code class="literal">Active</code> state to the <code class="literal">Resolved</code> state, and you must re-start it if you want to use the application that the PAR contains.</p> </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">refresh <span class="emphasis"><em>name version</em></span></td><td style="border-bottom: 1.0pt solid ; ">Updates the contents of the specified PAR. You must specify both the name and version of the PAR you want to refresh.  Use the <code class="literal">par list</code> command to this information.
				<p>Use this command if you have changed the contents of the PAR file and you want to refresh the artifact as installed in the OSGi framework.</p></td></tr><tr><td style="border-right: 1.0pt solid ; ">uninstall <span class="emphasis"><em>name version</em></span></td><td style="">Uninstalls the specified PAR. You must specify both the name and version of the PAR you want to refresh.  Use the <code class="literal">par list</code> command to this information.
				  <p>When the uninstall process is complete, the PAR will not show up in the list of PARs displayed by the <code class="literal">par list</code> command.  If you want to use the application in the PAR, you must re-install it using the <code class="literal">install</code> command.</p></td></tr></tbody></table></div></div><br class="table-break"><p>The following example shows how to list the PARs that have been installed in Virgo Kernel:</p><pre class="programlisting">osgi&gt; vsh:par list

Name                                         Version                      State

org.eclipse.virgo.server.repository.hosted    2.1.0.RELEASE              ACTIVE

osgi&gt; </pre><p>The following example shows how to examine a particular PAR file:</p><pre class="programlisting">osgi&gt; vsh:par examine org.eclipse.virgo.server.repository.hosted 2.1.0.RELEASE

State:  ACTIVE
Scoped: true
Atomic: true

Children:
    bundle org.eclipse.virgo.server.repository.hosted.core 2.1.0.RELEASE
    bundle org.eclipse.virgo.server.repository.hosted.web 2.1.0.RELEASE
    bundle org.eclipse.virgo.server.repository.hosted-synthetic.context 2.1.0.RELEASE

osgi&gt; </pre><p>Finally, the following example shows how to refresh an installed PAR file:</p><pre class="programlisting">osgi&gt; vsh:par refresh my.exciting.par 1.2.0

par my.exciting.par 1.2.0 refreshed successfully

osgi&gt; </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-plan-command"></a>plan Command</h3></div></div></div><p>Use the <code class="literal">plan</code> command to view all the plans currently installed in Virgo Kernel, view details about a particular plan and manage its lifecycle, such as starting, stopping, refreshing, and uninstalling it.</p><p>The following table lists the options you can specify for this command.</p><div class="table"><a name="admin-shell-vsh-plan-command-table"></a><p class="title"><b>Table&nbsp;8.6.&nbsp;Options of the plan Command</b></p><div class="table-contents"><table summary="Options of the plan Command" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Option </th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">list</td><td style="border-bottom: 1.0pt solid ; ">Displays all the plans that are currently installed in Virgo Kernel.
			          <p>The <code class="literal">list</code> option displays the full name of each installed plan, its version, and its current state.  Plans have similar lifecycles to other artifacts, such as bundles, and so the list of states in which a plan can be in is the same as those of bundles; see <a class="link" href="#">the bundle command</a> for the list of possible states. </p></td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">examine <span class="emphasis"><em>name version</em></span></td><td style="border-bottom: 1.0pt solid ; ">Displays information about the specified plan; you are required to identify the plan with both its name and its version.  Use the <code class="literal">plan list</code> command to view all installed plans and their versions.  The command displays the following information:
			         <div class="itemizedlist"><ul type="disc"><li><p>The current state of the plan (see <a class="link" href="#admin-shell-vsh-bundle-command" title="bundle Command">the bundle command</a> for the full list of possible states).</p></li><li><p>Whether the plan is <span class="emphasis"><em>scoped</em></span>.  Scoping specifies whether Virgo Kernel should deploy the members of the plan in their own scope; when scoping is disabled, Virgo Kernel deploys the artifacts into the global scope and they are accessible for access by all other artifacts.</p></li><li><p>Whether the plan is <span class="emphasis"><em>atomic</em></span>.  When a plan is atomic, Virgo Kernel manages the lifecycle of all its member artifacts as a single entity, which means if one artifact member is started, then Virgo Kernel starts <span class="emphasis"><em>all</em></span> the plan artifacts. If one artifact fails to start, then Virgo Kernel stops all other artifacts in the plan.</p></li><li><p>The individual members, or children, of the plan.  These could be other plans, PARs, bundles, configuration artifacts, and so on.</p></li></ul></div>
			   </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">start <span class="emphasis"><em>name version</em></span></td><td style="border-bottom: 1.0pt solid ; ">Starts the specified plan.  You must specify both the full name of the plan as well as the version you want to start. Use the <code class="literal">plan list</code> command to get the list of plans currently installed in Virgo Kernel.
				<p>To start a plan, it must have already been resolved by Virgo Kernel, or in other words, be in the <code class="literal">Resolved</code> state.  After Virgo Kernel successfully starts the plan, it is listed in the <code class="literal">Active</code> state. </p></td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">stop <span class="emphasis"><em>name version</em></span></td><td style="border-bottom: 1.0pt solid ; ">Stops the specified plan.  You must specify both the full name of the plan as well as the version you want to stop. Use the <code class="literal">plan list</code> command to get the list of plans currently installed in Virgo Kernel.
				  <p>When you stop a plan, it goes from the <code class="literal">Active</code> state to the <code class="literal">Resolved</code> state, and you must re-start it if you want to use the application that the plan contains.</p> </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">refresh <span class="emphasis"><em>name version</em></span></td><td style="border-bottom: 1.0pt solid ; ">Updates the contents of the specified plan. You must specify both the name and version of the plan you want to refresh.  Use the <code class="literal">plan list</code> command to this information.
				<p>Use this command if you have changed the contents of the plan file and you want to refresh the artifact as installed in the OSGi framework.</p></td></tr><tr><td style="border-right: 1.0pt solid ; ">uninstall <span class="emphasis"><em>name version</em></span></td><td style="">Uninstalls the specified plan. You must specify both the name and version of the plan you want to refresh.  Use the <code class="literal">plan list</code> command to this information.
				  <p>When the uninstall process is complete, the plan will not show up in the list of plans displayed by the <code class="literal">plan list</code> command.  If you want to use the application in the plan, you must re-install it using the <code class="literal">install</code> command.</p></td></tr></tbody></table></div></div><br class="table-break"><p>The following example shows how to list the plans that have been installed in Virgo Kernel:</p><pre class="programlisting">
osgi&gt; vsh:plan list

Name                                           Version                            State
org.eclipse.virgo.apps.admin.plan              2.1.0                             ACTIVE
org.eclipse.virgo.kernel.userregion.springdm   2.1.0                             ACTIVE
org.eclipse.virgo.web                          2.1.0                             ACTIVE

osgi&gt; </pre><p>The following example shows how to examine a particular plan:</p><pre class="programlisting">osgi&gt; vsh:plan examine org.eclipse.virgo.kernel.userregion.springdm 2.1.0

State:  ACTIVE
Scoped: false
Atomic: false

Children:
    bundle org.eclipse.virgo.kernel.agent.dm 2.1.0.RELEASE
    bundle org.springframework.osgi.io 1.2.1
    bundle org.springframework.osgi.extender 1.2.1
    bundle org.springframework.osgi.core 1.2.1
    bundle org.eclipse.virgo.kernel.deployer.dm 2.1.0.RELEASE

osgi&gt; </pre><p>The following example shows how to stop a currently Active plan:</p><pre class="programlisting">osgi&gt; vsh:plan stop org.eclipse.virgo.web 2.1.0

plan org.eclipse.virgo.web:2.1.0 stopped successfully

osgi&gt; </pre><p>The following example shows how to start a plan:</p><pre class="programlisting">osgi&gt; vsh:plan start org.eclipse.virgo.web 2.1.0

plan org.eclipse.virgo.web:2.1.0 started successfully

osgi&gt; </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-service-command"></a>service Command</h3></div></div></div><p>Use the <code class="literal">service</code> command to view all the services that have been registered in the OSGi service registry of Virgo Kernel. You can also examine a specific service to discover its properties, the bundle that publishes the service, and any bundles that consume the service.</p><p>The following table lists the options you can specify for this command.</p><div class="table"><a name="admin-shell-vsh-service-command-table"></a><p class="title"><b>Table&nbsp;8.7.&nbsp;Options of the service Command</b></p><div class="table-contents"><table summary="Options of the service Command" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Option </th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">list</td><td style="border-bottom: 1.0pt solid ; ">Displays the list of services that are currently registered in the OSGi service registry of Virgo Kernel.
				  <p>Each service is identified by an internal <code class="literal">ID</code> which you can then use with the <code class="literal">service examine</code> command to view the details about a particular service. The <code class="literal">list</code> option also displays the object class that implements the service and the internal <code class="literal">id</code> of the bundle that provides the service. </p></td></tr><tr><td style="border-right: 1.0pt solid ; ">examine <span class="emphasis"><em>id</em></span></td><td style="">Displays detailed information about the specified service.  Use the <code class="literal">service list</code> command to get the internal id of a particular service.
				<p>This command displays the properties of the service, such as the object class that implements the service, the name of the bundle that publishes the service and any bundles that consume the service. </p></td></tr></tbody></table></div></div><br class="table-break"><p>The following example shows how to list the services currently registered in the OSGi service registry:</p><pre class="programlisting">osgi&gt; vsh:service list

Id  Object Class(es)                                            Providing Bundle

1   org.osgi.service.packageadmin.PackageAdmin                                 0
2   org.osgi.service.permissionadmin.PermissionAdmin, ...                      0
3   org.osgi.service.startlevel.StartLevel                                     0
4   org.eclipse.osgi.service.debug.DebugOptions                                0
5   java.lang.ClassLoader                                                      0
6   org.eclipse.osgi.framework.log.FrameworkLog                                0
7   org.eclipse.osgi.framework.log.FrameworkLog                                0
&lt;... remainder omitted ...&gt;

72 org.eclipse.gemini.web.core.spi.ServletContainer                           38
73 org.eclipse.gemini.web.core.WebContainer                                   37
74 org.eclipse.virgo.web.core.WebApplicationRegistry                          39
&lt;... remainder omitted ...&gt;

osgi&gt; </pre><p>The following example shows how to examine a particular service:</p><pre class="programlisting">osgi&gt; vsh:service examine 73

		Properties:
		    objectClass:
		        org.eclipse.gemini.web.core.WebContainer
		    service.id:
		        73

		Publisher: org.eclipse.gemini.web.core 1.1.0.RELEASE [37]

		Consumer(s):
		    org.eclipse.virgo.web.core 2.1.0.RELEASE [39]

		osgi&gt; </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-install-command"></a>install Command</h3></div></div></div><p>Use the <code class="literal">install</code> command to deploy an artifact to Virgo Kernel.  The artifact can be a bundle, PAR, plan, or configuration artifact.</p><p>The <code class="literal">install</code> command takes a single parameter: the URI of the artifact you want to deploy.  For example, to deploy a bundle on the local computer, use the <code class="literal">file</code> scheme:</p><pre class="programlisting">file://full-pathname-to-artifact</pre><p>After you execute the <code class="literal">install</code> command, Virgo Kernel attempts to resolve the artifact's dependencies, and if it is successful, puts it in the <code class="literal">Resolved</code> state.  At that point, you must start the artifact to be able to actually use it. </p><p>The following example shows how to install a bundle called <code class="literal">swf-booking-mvc.war</code> located in the <code class="literal">/home/apps</code> directory of the computer on which the Equinox Console Extension is being run:</p><pre class="programlisting">osgi&gt; vsh:install file://home/apps/swf-booking-mvc.war
...
Artifact bundle swf-booking-mvc.war 0.0.0 installed</pre><p>
			This command is particularly useful for installing an artifact from the Virgo repository, in which case use the <code class="literal">repository:</code> scheme:
			</p><pre class="programlisting">repository:artifact-type/bundle-symbolic-name/bundle-version</pre><p>
			For example:
		</p><pre class="programlisting">osgi&gt; vsh:install repository:bundle/my.bundle/1.0
... 
Artifact bundle my.bundle 1.0.0 installed
osgi&gt;</pre><p>The following example shows how to use the <code class="literal">bundle list</code> command to ensure that the bundle was indeed installed in Virgo Kernel; if you had installed a different kind of artifact, for example a plan, then you would use the appropriate command (such as <code class="literal">plan list</code>):</p><pre class="programlisting">osgi&gt; vsh:bundle list

Id   Name                             Version                   State

0    org.eclipse.osgi                 3.6.1.R36x_v20100806     ACTIVE
1    org.eclipse.virgo.region.user    0.0.0                    ACTIVE
&lt;... remainder omitted ...&gt;

59   org.eclipse.virgo.server.splash   2.1.0.RELEASE           ACTIVE
60   swf-booking-mvc.war              0.0.0                  RESOLVED

osgi&gt; </pre><p>Note that the <code class="literal">swf-booking-mvc.war</code> file is in the <code class="literal">Resolved</code> state.   The following examples start the bundle, and then examine it to ensure that it is in the <code class="literal">Active</code> state:</p><pre class="programlisting">osgi&gt; vsh:bundle start 60

bundle swf-booking-mvc.war:0.0.0 started successfully


osgi&gt; vsh:bundle examine 60

Id:              60
Name:            swf-booking-mvc.war
Version          0.0.0
State:           ACTIVE
Spring Powered:  true
Bundle Location: file:&lt;... omitted ...&gt;/swf-booking-mvc.war/

Imported Packages:
    javax.crypto.interfaces [0.0.0, 0.0.0]
        exported by org.eclipse.osgi 3.6.1.R36x_v20100806 [0]
    org.omg.CosNaming.NamingContextPackage [0.0.0, 0.0.0]
        exported by org.eclipse.osgi 3.6.1.R36x_v20100806 [0]
    org.omg.DynamicAny.DynAnyFactoryPackage [0.0.0, 0.0.0]
        exported by org.eclipse.osgi 3.6.1.R36x_v20100806 [0]
    &lt;... remainder omitted ...&gt;

osgi&gt; </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-vsh-shutdown-command"></a>shutdown Command</h3></div></div></div><p>Use the <code class="literal">shutdown</code> command to shut down the Virgo Kernel instance to which you are connected. When Virgo Kernel is shut down, the shell returns you to the operating system prompt. </p><p>The <code class="literal">shutdown</code> command does not have any options.</p><p>The following example shows how to use this command.</p><pre class="programlisting">osgi&gt; vsh:shutdown
osgi&gt; ... 
Connection closed by foreign host.
prompt$</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-cl-clhas"></a>clhas command</h3></div></div></div><p>Use the <code class="literal">clhas</code> command to list the entries contained in the bundles deployed in Virgo and to solve class loading issues.</p><p>The command accepts as a parameter a search pattern in the form <span class="emphasis"><em>path/resource</em></span>. The resource part of the pattern can contain wildcards.</p><p>The output contains all bundles that have resources or classes matching the pattern. Since wildcards are allowed, the matching entities are listed as well.</p><p>The following examples show how to use this command.</p><p>Use the <code class="literal">clhas</code> to view all bundles that contain <code class="literal">Servlet</code> class:</p><pre class="programlisting">osgi&gt;clhas /javax/servlet/Servlet.class

Bundles containing [/javax/servlet/Servlet.class]:
  76    javax.servlet
            /javax/servlet/Servlet.class</pre><p>Use the wildcard <code class="literal">*</code> with <code class="literal">clhas</code> to view all classes starting with <code class="literal">Servlet</code>:</p><pre class="programlisting">osgi&gt; clhas /javax/servlet/Servlet*

Bundles containing [/javax/servlet/Servlet*]:
  76    javax.servlet
            /javax/servlet/ServletRequestAttributeEvent.class
            /javax/servlet/ServletRequest.class
            &lt;... remainder omitted ...&gt;
            /javax/servlet/Servlet.class
            &lt;... remainder omitted ...&gt;</pre><p>The <code class="literal">clhas</code> command can also be used with class name instead of resource path:</p><pre class="programlisting">osgi&gt; clhas javax.servlet.Servlet

Bundles containing [javax/servlet/Servlet.class]:
  76    javax.servlet
            /javax/servlet/Servlet.class</pre><p>Please note that the command converts the class name to a path and appends <code class="literal">class</code> extension by default.</p><p>To search for a resource with an extension different than <code class="literal">class</code> you should use the resource path form:</p><pre class="programlisting">osgi&gt; clhas /LocalStrings.properties

Bundles containing [/LocalStrings.properties]:
  96    com.springsource.org.apache.catalina
            /org/apache/catalina/core/LocalStrings.properties
            /org/apache/tomcat/util/http/mapper/LocalStrings.properties
            /org/apache/catalina/loader/LocalStrings.properties
            &lt;... remainder omitted ...&gt;</pre><p>The following example shows how to identify a possible <code class="literal">ClassCastException</code> due to wrong packaging:</p><pre class="programlisting">osgi&gt;clhas /javax/servlet/Servlet.class

Bundles containing [/javax/servlet/Servlet.class]:
  76    javax.servlet
            /javax/servlet/Servlet.class
  107   myapp
            /WEB-INF/classes/javax/servlet/Servlet.class</pre><p>It's obvious that the <code class="literal">javax.servlet</code> package should not be present in <code class="literal">myapp</code> application and its packaging has to be changed. This problem can often be seen in WAR or web bundles that package Servlet/JSP classes by accident.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-cl-clexport"></a>clexport command</h3></div></div></div><p>Use the <code class="literal">clexport</code> command to list the bundles that export a class or package.</p><p>The command accepts as a parameter the fully qualified class name (in the form <span class="emphasis"><em>package.class</em></span>).</p><p>The command checks to see if the provided class is actually contained in a bundle. If the class is not found in a bundle but its package is exported, then a hint <code class="literal">[class not found, package only]</code> is displayed.</p><p>The following examples show how to use this command.</p><p>Use the <code class="literal">clexport</code> to view all bundles that contain <code class="literal">Servlet</code> class:</p><pre class="programlisting">osgi&gt; clexport javax.servlet.Servlet

Bundles exporting [javax.servlet.Servlet]:
  14    com.springsource.javax.servlet</pre><p>If a bundle exports a package but does not contain the requested class, the output of the command will be similar to this:</p><pre class="programlisting">osgi&gt; clexport javax.servlet.ServletX

Bundles exporting [javax.servlet.ServletX]:
  14    com.springsource.javax.servlet     [class not found, package only]</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-shell-cl-clload"></a>clload command</h3></div></div></div><p>Use the <code class="literal">clload</code> command to list the bundles that can load a class or to check if a specific bundle can load a class.</p><p>The command accepts as parameters either:
                </p><div class="itemizedlist"><ul type="disc"><li><p>the fully qualified class name (in the form <span class="emphasis"><em>package.class</em></span>)</p></li><li><p>the fully qualified class name (in the form <span class="emphasis"><em>package.class</em></span>) and the symbolic name or id of the bundle that is to be tested</p></li></ul></div><p>
            </p><p>The command lists not only the bundle that successfully loaded the class, but also the one that actually provides the class. This is visualized with hints like <code class="literal">[exported by 14 com.springsource.javax.servlet]</code>.</p><p>The following examples show how to use this command.</p><p>You can use the <code class="literal">clload</code> to view all bundles that can load <code class="literal">Servlet</code> class:</p><pre class="programlisting">osgi&gt; clload javax.servlet.Servlet

Successfully loaded [javax.servlet.Servlet] from:
  56    com.springsource.org.apache.taglibs.standard
                [exported by 14 com.springsource.javax.servlet]
  54    org.eclipse.virgo.apps.admin.web
                [exported by 14 com.springsource.javax.servlet]
  19    com.springsource.org.apache.commons.fileupload
                [exported by 14 com.springsource.javax.servlet]
  &lt;... remainder omitted ...&gt;</pre><p>If a bundle is to be tested, then its id can be used as a command parameter:</p><pre class="programlisting">osgi&gt; clload javax.servlet.Servlet 19

Successfully loaded [javax.servlet.Servlet] using class loader from:
  19    com.springsource.org.apache.commons.fileupload
                [exported by 14 com.springsource.javax.servlet]</pre><p>Or the same class load test can specify the symbolic name of the bundle:</p><pre class="programlisting">osgi&gt; clload javax.servlet.Servlet com.springsource.org.apache.commons.fileupload

Successfully loaded [javax.servlet.Servlet] using class loader from:
  19    com.springsource.org.apache.commons.fileupload
                [exported by 14 com.springsource.javax.servlet]</pre></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="p2-commands"></a>8.4&nbsp;Using the p2 for extending your Virgo installation</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3347"></a>Extending with the p2 director</h3></div></div></div><p>
    		You can provision new features on top of your Virgo installation using the p2 director. It can be used both for initial provisioning and extending an existing installtion.
    	</p><p>For extending an existing installation you can use these director arguments:
    	</p><pre class="screen">-repository http://download.eclipse.org/rt/ecf/3.5.3/site.p2
-installIU org.eclipse.ecf.remoteservice.feature.feature.group
-destination &lt;your Virgo installation folder&gt;</pre><p>This installs the <span class="bold"><strong>latest</strong></span> version of the specified p2 feature in your Virgo installation's p2 profile.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3361"></a>Extending via the p2 shell commands</h3></div></div></div><p>Another way to achieve the same results is to use the p2 commands. The commands are available only in VN as it includes p2 by default. 
    	</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">For the other distributions only the director is supported and the operation only extends their kernel region.</td></tr></table></div><p>
    	</p><p>Here's a list of the most commonly used p2 commands:</p><div class="table"><a name="p2-common-commands-table"></a><p class="title"><b>Table&nbsp;8.8.&nbsp;p2 Common Shell Commands</b></p><div class="table-contents"><table summary="p2 Common Shell Commands" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Command</th><th style="border-bottom: 1.0pt solid ; ">Help</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">provaddrepo &lt;repository URI&gt;</code></td><td style="border-bottom: 1.0pt solid ; ">
								Add specified URI as metadata and artifact repository. Note that if you pass a wrong URL you'll get an error saying:
								<code class="literal">Repository not modifiable: http://wrongURL</code>. The default behavior of this command is to create an empty repository at the
								specified location if there isn't any. That won't work for remote locations so keep in mind that if you see this you probably passed a wrong URL.
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">provdelrepo &lt;repository URI&gt;</code></td><td style="border-bottom: 1.0pt solid ; ">
								Remove specified metadata and artifact repository.
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">provinstall &lt;InstallableUnit&gt; &lt;version&gt; &lt;profileid&gt;</code></td><td style="border-bottom: 1.0pt solid ; ">
								Install an IU to the profileid.  If no profileid is given, installs into default profile.
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">provremove &lt;InstallableUnit&gt; &lt;version&gt; &lt;profileid&gt;</code></td><td style="border-bottom: 1.0pt solid ; ">
								Uninstall an IU from the profileid.  If no profileid is given, uninstalls form default profile.
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">provlg [&lt;repository URI&gt; &lt;iu id | *&gt; &lt;version range | *&gt;]</code></td><td style="border-bottom: 1.0pt solid ; ">
								Lists all IUs with group capabilities in the given repo or in all repos if URI is omitted.
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">provliu [&lt;repository URI | *&gt; &lt;iu id | *&gt; &lt;version range | *&gt;]</code></td><td style="border-bottom: 1.0pt solid ; ">
								Lists the IUs that match the pattern in the given repo.  * matches all.
							</td></tr><tr><td style="border-right: 1.0pt solid ; "><code class="literal">confapply</code></td><td style="">
								This is a Simple Configurator command, not a p2 one. However it is relevant because it applies dynamically, at runtime, the installed p2 features.
								What the command does is to apply to the running OSGi framework the current content in the bundles.info file. When using the provinstall command it takes care of updateing the bundles.info file.
							</td></tr></tbody></table></div></div><br class="table-break"><p>Here's an example showing how to install the ECF remote services but with the p2 commands this time:</p><pre class="screen">osgi&gt; provaddrepo http://download.eclipse.org/rt/ecf/3.5.3/site.p2

osgi&gt; provlg

org.eclipse.ecf.core.feature.group 3.5.3.v20111109-2142
org.eclipse.ecf.core.featurepatch.feature.group 3.5.3.v20111109-2142
org.eclipse.ecf.core.featurepatch.source.feature.group 3.5.3.v20111109-2142
org.eclipse.ecf.core.source.feature.group 3.5.3.v20111109-2142
org.eclipse.ecf.datashare.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.datashare.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.dnssd.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.dnssd.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.jmdns.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.jmdns.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.slp.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.slp.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.zookeeper.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.discovery.zookeeper.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.eventadmin.examples.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.eventadmin.examples.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.eventadmin.feature.feature.group 2.0.0.v20111109-2142
org.eclipse.ecf.eventadmin.source.feature.feature.group 2.0.0.v20111109-2142
org.eclipse.ecf.osgi.services.feature.feature.group 2.0.1.v20111109-2142
org.eclipse.ecf.osgi.services.source.feature.feature.group 2.0.1.v20111109-2142
org.eclipse.ecf.remoteservice.examples.feature.feature.group 1.1.0.v20111109-2142
org.eclipse.ecf.remoteservice.examples.source.feature.feature.group 1.1.0.v20111109-2142
org.eclipse.ecf.remoteservice.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.remoteservice.rest.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.remoteservice.rest.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.remoteservice.rosgi.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.remoteservice.rosgi.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.remoteservice.sdk.feature.feature.group 3.5.3.v20111109-2142
org.eclipse.ecf.remoteservice.sdk.source.feature.feature.group 3.5.3.v20111109-2142
org.eclipse.ecf.remoteservice.soap.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.remoteservice.soap.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.remoteservice.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.server.generic.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.server.generic.source.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.xmpp.feature.feature.group 1.0.0.v20111109-2142
org.eclipse.ecf.xmpp.source.feature.feature.group 1.0.0.v20111109-2142

osgi&gt; provinstall org.eclipse.ecf.remoteservice.feature.feature.group 1.0.0.v20111109-2142
Installation complete for org.eclipse.ecf.remoteservice.feature.feature.group 1.0.0.v20111109-2142

osgi&gt; confapply

osgi&gt; ss

"Framework is launched."


id	State       Bundle
0	ACTIVE      org.eclipse.osgi_3.7.1.R37x_v20110808-1106
....
92	RESOLVED    org.springframework.osgi.io_1.2.1
93	RESOLVED    org.eclipse.ecf.console_1.0.0.v20111109-2142
94	RESOLVED    org.eclipse.ecf.discovery_4.0.0.v20111109-2142
95	RESOLVED    org.eclipse.ecf.provider_4.2.100.v20111109-2142
96	RESOLVED    org.eclipse.ecf.provider.discovery_2.1.200.v20111109-2142
97	RESOLVED    org.eclipse.ecf.provider.remoteservice_4.0.0.v20111109-2142
98	RESOLVED    org.eclipse.ecf.remoteservice_6.0.200.v20111109-2142
99	RESOLVED    org.eclipse.ecf.sharedobject_2.2.100.v20111109-2142
100	RESOLVED    org.eclipse.equinox.concurrent_1.0.200.v20110502</pre><p>You can see that after applying the changes with <span class="emphasis"><em>confapply</em></span> the remote services bundles and their dependencies are installed in VN.</p></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="admin-console"></a>9.&nbsp;The Web Admin Console</h2></div></div></div><p>The Web Server Admin Console is a Web application for managing a single instance of Virgo Server for Apache Tomcat or Virgo Jetty Server 
		(referred to, generically, as "Web Server" below).  Using the Admin Console, you can:</p><div class="itemizedlist"><ul type="disc"><li><p><a class="link" href="#admin-console-login" title="9.1&nbsp;Invoking the Admin Console">View an overview of the Web Server properties</a>.</p></li><li><p><a class="link" href="#admin-console-manage-artifacts" title="Viewing and Managing the Lifecycle of Deployed Artifacts">View and manage the lifecycle</a> of artifacts already deployed to the Web Server instance.  Artifacts include bundles, configuration files, PARs, and plans.  Lifecycle management tasks include starting, stopping, refreshing, and uninstalling the artifacts.</p></li><li><p><a class="link" href="#admin-console-install-artifacts" title="Installing a New Artifact">Install new artifacts to Web Server</a>.</p></li><li><p><a class="link" href="#admin-console-view-properties" title="Viewing Properties of Deployed Configuration Artifacts">View the properties of the configuration artifacts</a> deployed to Web Server.</p></li><li><p><a class="link" href="#admin-console-view-dumps" title="Viewing the Details of Dump Files">View details of dump files</a> that Web Server might have generated after encountering a problem.  This feature is particularly valuable if Web Server fails to install a new artifact due to resolution failures; the OSGi state inspector can help you discover the exact artifact causing the resolution failure.</p></li><li><p><a class="link" href="#admin-console-view-osgi-state" title="Viewing Overview and Details of the OSGi State">View an overview and details of the OSGi State</a> of Web Server, or in other words, a list of all bundles currently installed in Web Server and their state.  You can then drill down into the details of each bundle, such as its symbolic name, packages it imports and exports, services it provides and consumes, and so on.  You can also view the bundles that were deployed when an exception that generated a dump occurred.</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
		 This section is not applicable to Virgo Nano.
	</td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="admin-console-login"></a>9.1&nbsp;Invoking the Admin Console</h2></div></div></div><p>
			To use the Admin Console, start the
			Virgo Server for Apache Tomcat and then enter the following URL in your 
			browser of choice.
		</p><pre class="screen">http://localhost:8080/admin</pre><p>
			Replace <code class="literal">localhost</code> with the hostname of the computer on which the Virgo Server for Apache Tomcat is running if it is not the same as the computer on which you are running your browser.  </p><p>The Admin Console uses basic authentication, therefore you will need to enter the default administration ID and password.
		</p><pre class="screen">ID: admin 
Password: springsource</pre><p>The following graphic shows the main page of the Admin Console.
		</p><div class="mediaobject" align="right"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0"><tr><td align="right" valign="bottom"><img src="images/console-main-page.png" align="right"></td></tr></table></div><p>
		
		</p><p>Use the links at the top of the console to perform various tasks, such as viewing and managing artifacts (<span class="bold"><strong>Artifacts</strong></span>), viewing the properties of deployed configuration artifacts (<span class="bold"><strong>Configuration</strong></span>), viewing details of dumps (<span class="bold"><strong>Dump Inspector</strong></span>), and viewing the OSGi state of the Web Server instance (<span class="bold"><strong>OSGi State</strong></span>).</p><p>You can always return to the main Admin Console page by clicking <span class="bold"><strong>Information</strong></span> in the top right-hand corner.</p><p>The <code class="literal">Server Properties</code> section provides information about Web Server itself, such as details about the Java Virtual Machine (JVM), the operating system on which Web Server is installed, the time zone configured for the computer, and the complete version of Web Server.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-console-auth"></a>Changing the Admin User</h3></div></div></div><p>
			To change the ID and password for the Admin Console, update the <code class="literal">SERVER_HOME/configuration/org.eclipse.virgo.kernel.users.properties</code> file.  First specify the administration username by changing the value of the <code class="literal">role.admin</code> property.  Then set the password of this new user by adding a new property called <code class="literal">user.<span class="emphasis"><em>username</em></span></code>, where <code class="literal"><span class="emphasis"><em>username</em></span></code> refers to the actual name of the user.  Finally, restart Web Server for the changes to take effect.</p><p>For example, if you want change the administration username to <code class="literal">juliet</code> with password <code class="literal">capulet</code>, change the file as follows: 
		</p><pre class="programlisting">##################
# User definitions
##################
user.juliet=capulet


##################
# Role definitions
##################
role.admin=juliet</pre><p>
			The Admin Console always runs against the <code class="literal">admin</code> role.
		</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="admin-console-tasks"></a>9.2&nbsp;Typical Admin Console Use Cases</h2></div></div></div><p>The following use cases describe the typical tasks that you can perform with the Admin Console:</p><div class="itemizedlist"><ul type="disc"><li><a class="link" href="#admin-console-manage-artifacts" title="Viewing and Managing the Lifecycle of Deployed Artifacts">View and Manage the Lifecycle of Deployed Artifacts</a></li><li><a class="link" href="#admin-console-install-artifacts" title="Installing a New Artifact">Install a New Artifact</a></li><li><a class="link" href="#admin-console-view-properties" title="Viewing Properties of Deployed Configuration Artifacts">View the Properties of Deployed Configuration Artifacts</a></li><li><a class="link" href="#admin-console-view-dumps" title="Viewing the Details of Dump Files">View Details of Dump Files</a></li><li><a class="link" href="#admin-console-view-osgi-state" title="Viewing Overview and Details of the OSGi State">View Overview and Details of the OSGi State</a></li></ul></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-console-manage-artifacts"></a>Viewing and Managing the Lifecycle of Deployed Artifacts</h3></div></div></div><p>The following procedure describes how to view the list of artifacts that are currently deployed in the user region of Web Server.  It then describes how to stop, start, refresh, and uninstall the deployed artifacts.</p><div class="orderedlist"><ol type="1"><li><p>From the main Admin Console page, click the <span class="bold"><strong>Artifacts</strong></span> link at the top.</p><p>In the lower part of the page, the console displays a tree structure that displays the four kinds of artifacts that you can deploy to the user region of Web Server: bundles, configuration files, PARs, and plans.  When you first install Web Server, there will already be a number of artifacts deployed related to the Admin console itself, the main splash screen, the repository, and so on.  </p><p>The following graphic shows an expanded tree that displays a few of the deployed artifacts:</p><p><img src="images/console-artifacts.png"></p></li><li><p>To view details of a particular artifact, click the "+" to the left of the artifact to expand the tree.  The following graphic shows an expanded <code class="literal">org.eclipse.virgo.apps.admin.web</code> bundle:</p><p><img src="images/console-bundle-details.png"></p><p>The particular details that the Admin Console displays depends on the artifact.  For example, for all artifacts you can view their state and how it was installed (such as by a user using the Admin Console or programmatically).  The two most common states are Active (running and ready to be used) and Resolved (all dependencies resolved but you must start it before you can use it).  An artifact can also be in one of the transition states, such as Starting and Stopping.  </p><p>As shown in the preceding graphic, the Admin Console provides a link for Web modules that you can click on to actually invoke the application (<code class="literal">org.eclipse.virgo.web.contextPath:/admin</code> in the example above).</p><p>For PARs and plans, the Admin Console also displays whether the artifact is:</p><div class="itemizedlist"><ul type="disc"><li><span class="bold"><strong>Scoped</strong></span>. Scoping specifies whether Web Server should deploy the members of the PAR/plan in their own scope; when scoping is disabled, Web Server deploys the artifacts into the global scope and they are accessible by all other artifacts.</li><li><span class="bold"><strong>Atomic</strong></span>. When a PAR/plan is atomic, Web Server manages the lifecycle of all its member artifacts as a single entity, which means if one artifact member is started, then Web Server starts all the PAR/plan artifacts. If one artifact fails to start, then Web Server stops all other artifacts in the PAR/plan.</li></ul></div><p>The following graphic shows details of a PAR, in particular that it is both scoped and atomic:</p><p><img src="images/console-par-details.png"></p><p>Finally, for bundles, PARs, and plans, you can see the list of bundles that they depend on; this typically means the bundles that export the packages that they import.</p></li><li><p>To manage the lifecycle of an artifact, click on its name in the expanded tree to enable the lifecycle buttons.   Then, depending on the current state of the artifact, you can: </p><div class="itemizedlist"><ul type="disc"><li>Start the artifact.  All dependencies of the artifact must have been resolved for you to start it.  After successfully starting the artifact, it is in the Active state and you can use the application associated with the artifact.</li><li>Stop the artifact.  This moves the artifact from an Active to Resolved state, and you cannot use the application associated with the artifact.  </li><li>Refresh the artifact.  This action updates the physical contents of the artifact; use this button when you have changed the artifact in some way and you want your changes to take effect.</li><li>Uninstall the artifact.  This action removes the artifact from Web Server and it does not show up in the Admin Console any more.  To use the application associated with this artifact, you must re-install the artifact.</li></ul></div></li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-console-install-artifacts"></a>Installing a New Artifact</h3></div></div></div><p>The following procedure describes how to install a new artifact (bundle, PAR, plan, or configuration file.)  The procedure is similar for all types of artifacts; the procedure uses a WAR file as an example.</p><div class="orderedlist"><ol type="1"><li><p>From the main Admin Console page, click the <span class="bold"><strong>Artifacts</strong></span> link at the top.</p></li><li><p>Click the <span class="bold"><strong>Browse</strong></span> button to invoke the file loader application for your platform.  Note that the Browse button searches the computer that is running the browser in which you invoked the Admin Console and <span class="emphasis"><em>not</em></span> the computer on which Web Server is running, in the case where they are different.</p><p>Use the file loader to find the artifact.  This can be a WAR or JAR file bundle, a configuration artifact that contains properties, an XML file that corresponds to a plan, or a PAR file.</p></li><li><p>Click <span class="bold"><strong>Upload</strong></span> to actually upload the artifact to Web Server.  </p><p>Web Server automatically attempts to resolve all dependencies, and then puts the artifact in an Active state if possible.  If all is successful, the message <code class="literal">Artifact Deployed</code> appears next to the <span class="bold"><strong>Artifact Console</strong></span> header.    If there is an error, a message to that effect is displayed; to get more details about the error, see the terminal window from which you started Web Server.</p></li><li><p>Expand the artifact tree to view your newly deployed artifact.  If Web Server installed it without errors, it should show up in the appropriate section and be in an Active state.</p></li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-console-view-properties"></a>Viewing Properties of Deployed Configuration Artifacts</h3></div></div></div><p>The following procedure describes how you can view the list of configuration artifacts that are currently deployed to Web Server, and then view the specific properties that are defined for a particular configuration artifact.  </p><div class="orderedlist"><ol type="1"><li><p>From the main Admin Console page, click the <span class="bold"><strong>Configuration</strong></span> link at the top.</p><p>The Admin Console displays all the configuration artifacts that are currently deployed, as shown in the following graphic:</p><p><img src="images/console-configuration-details.png"></p></li><li><p>To view the properties defined for a particular configuration artifact click the arrow to the left of its name. </p></li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-console-view-dumps"></a>Viewing the Details of Dump Files</h3></div></div></div><p>The following procedure describes how to view the details of any service dumps that have occurred in Web Server.   Each time a dump is triggered for Web Server, the server creates a directory in <code class="literal">$SERVER_HOME/serviceability/dump</code> with a name corresponding to the time the dump occurred, and then the server populates the directory with detailed information.  Using the Admin Console, you can easily view this information.</p><p> A service dump is triggered when there is either a failure in the Web Server code or Web Server detects a thread deadlock in either its own code or a user application.  The service dump contains a snapshot of all the important state from the running Web Server instance. <span class="bold"><strong>NOTE:</strong></span> This snapshot is not intended for end user consumption but is useful for service personnel.</p><div class="orderedlist"><ol type="1"><li><p>From the main Admin Console page, click the <span class="bold"><strong>Dump Inspector</strong></span> link at the top.</p></li><li><p>In the drop-down box on the left, select the dump you want to inspect based on its timestamp.</p></li><li><p>Click <span class="bold"><strong>Select Dump</strong></span>.</p></li><li><p>In the right drop-down box, select the type of dump information you want to view.</p><p>For example, <code class="literal">summary.txt</code> provides a short summary of why the dump might have occurred.  The <code class="literal">thread.txt</code> option provides information about the state of the Web Server threads at the time of the dump, including any that were deadlocked.  The <code class="literal">repository</code> options provide information about what was in the external and user repositories at the time of the dump. The <code class="literal">configurationAdmin.properties</code> option provides a snapshot of the complete configuration of Web Server, including the kernel and repositories.</p></li><li><p>Click <span class="bold"><strong>Select Entry</strong></span>.</p><p>The Admin Console displays the information in the Dump Entry Viewer, as shown in the following graphic:</p><p><img src="images/console-dump-details.png"></p></li></ol></div><p>
			Note that the dump entry <code class="literal">osgi.zip</code> is a binary OSGi state dump which should be viewed as described in
			<a class="link" href="#admin-console-view-osgi-state" title="Viewing Overview and Details of the OSGi State">Viewing Overview and Details of the OSGi State</a>.
			Dumps may contain other binary entries which are not intended for viewing via the dump inspector.
			For example, <code class="literal">heap.out</code> contains a dump of the Java heap and <code class="literal">region.digraph</code>
			contains a dump of the sharing policy between kernel and use region (this is used by the OSGi state dump inspector).
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="admin-console-view-osgi-state"></a>Viewing Overview and Details of the OSGi State</h3></div></div></div><p>
			The following procedure describes how you can view the OSGi state of the Web Server, either currently or at the time that a particular service dump
			occurred.
		</p><p>
			The OSGi state is a list of bundles that are currently installed. When viewing the current state, additional information is available
			such as whether each bundle is Spring powered and a list of services in the OSGi service registry. This additional information is not available
			when viewing a state dump.
		</p><div class="orderedlist"><ol type="1"><li><p>From the main Admin Console page, click the <span class="bold"><strong>OSGi State</strong></span> link at the top.</p><p>By default, the Admin Console displays the complete list of bundles that are currently installed in Web Server.</p><p>For each bundle, the console displays its internal ID, its symbolic name, its version, and its current state (usually either Active or Resolved.)</p></li><li><p>To view the bundles that were installed at the time of a service dump, select the service dump based on its timestamp from the drop-down box on the
			right and click <span class="bold"><strong>Go</strong></span>. </p></li><li><p>To view details about a particular bundle, click on its bundle ID. A full description of the bundle is displayed, as shown in the following graphic:</p><p><img src="images/console-osgi-state.png"></p><p>The console displays again the symbolic name, version, and internal ID of the bundle. It then displays whether the bundle is Spring powered and the exact physical location of the bundle JAR file on the computer that hosts Web Server.</p><p>The console then displays the full list of packages that the bundle imports, as well as the bundles that in turn export these imported packages. The console also displays the packages that the current bundle exports, and then in turn the list of other installed bundles that are currently importing these exported packages. For each package, you can drill down and view details of the corresponding bundle.</p><p>Similarly, the console displays the consumed and provided OSGi services.  </p><p>Finally, the console also displays information about the Spring context, if the bundle is Spring powered.  </p></li><li><p>To view the full list of OSGi services, click the <code class="literal">Services Overview</code> link from the main OSGi state page</p></li><li><p>Typically, the list of bundles and services can be very long, making it difficult to find a particular bundle.  Use the <span class="bold"><strong>Search</strong></span> box at the top right corner to narrow down the list of displayed bundles.</p><p>
				Enter a package name with wildcards '<code class="literal">*</code>' representing part of a package name (excluding periods) and
				'<code class="literal">**</code>' representing one or more components of a package name separated by periods.
				For example, '<code class="literal">**.virgo.**</code>' displays Virgo packages.
			</p></li></ol></div></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="repository"></a>10.&nbsp;The Provisioning Repository</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="repository-introduction"></a>10.1&nbsp;Overview of the Provisioning Repository</h2></div></div></div><p>
				This section describes the provisioning repository feature of Virgo, the reasons for using it, and how to configure it.
				</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
			 		This section is not applicable to Virgo Nano. The provisioning mechanism used there is p2.
				</td></tr></table></div><p>
			</p><p>
				In most use cases, your application has a dependency on one or more separate artifacts; these artifacts might include OSGi bundles, configuration artifacts, third-party libraries, PARs or plans.  A typical example is a Spring application that depends on a third-party library such as Spring Framework or Hibernate. 
			</p><p>
				The way you express this dependency depends on the artifact.  For example, a plan is by definition a list of dependent bundles.
			</p><p>
				Libraries are another example.  Some third-party dependencies consist of multiple bundles but are logically one unit.  To support this, Virgo has a concept of a library.  A library is a collection of related bundles that can be referenced as a whole.  You typically express the dependencies between your application and third-party libraries using the <code class="literal">Import-Package</code>, <code class="literal">Import-Bundle</code>, or <code class="literal">Import-Library</code> manifest header in the <code class="literal">MANIFEST.MF</code> file of your application.  The <code class="literal">Import-Package</code> header is standard to OSGi; <code class="literal">Import-Bundle</code> and <code class="literal">Import-Library</code>, however, are specific to Virgo.  
			</p><p>
				For additional details about the creation and usage of libraries, as well as general information about dependencies, see <a class="ulink" href="../../virgo-programmer-guide/html/index.html" target="_top">Programmer&#8217;s Guide</a>. 
			</p><p>
				In Virgo, you store all third-party dependencies required by your applications, such as Spring Framework and Hibernate, as artifacts in the provisioning repository.   As mentioned above, you can store the following types of artifacts in the repository:
			</p><div class="itemizedlist"><ul type="disc"><li>OSGi bundles</li><li>Libraries</li><li>PARs</li><li>Plans</li><li>Configuration Artifacts</li></ul></div><p>
				When you deploy your application,  Virgo installs the bundle(s) comprising the application to the Virgo runtime; part of this internal installation procedure is to satisfy all the application&#8217;s dependencies.  If your application has a dependency that cannot be satisfied from the bundles that you have already deployed (and Virgo has thus installed), then Virgo searches the provisioning repository for an artifact that can satisfy that dependency. 
			</p><p>
				The provisioning repository for a particular instance of Virgo can include artifacts in the following general locations:
			  </p><div class="itemizedlist"><ul type="disc"><li>Local: This means that artifacts have been physically installed in the provisioning repository directory structure of the local Virgo instance.   The artifacts in a local repository include installed third-party libraries, bundles supplied by Virgo, bundles supplied by an end user, and internal bundles used only by Virgo.  You can further categorize this location into <code class="literal">external</code> directories that adhere to a specified search pattern and are scanned by Virgo just on a clean startup, or <code class="literal">watched</code> directories that point to a single directory location and which Virgo scans on a regular basis.  </li><li>Remote: This means that a local instance of Virgo gets the artifact from a remotely-hosted repository that is physically located on a remote Virgo Server for Apache Tomcat instance.  </li></ul></div><p>
			You configure the provisioning repository using the <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.repository.properties</code> file.  
			</p><p> As previously described, a particular instance of Virgo Server for Apache Tomcat can itself also act as a repository host for remote server instances to use when satisfying the dependencies of the applications deployed to it.  In this case, you configure a hosted repository using the <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.apps.repository.properties</code> file.  Typically, only remote clients use hosted repositories and their contents; the Virgo Server for Apache Tomcat instance that actually hosts the repository does not typically use the artifacts in it.  Rather, it uses artifacts in its local repository.
			</p><p>
				Making a third-party dependency available to your application is simply a matter of adding its artifact to the appropriate location in the provisioning repository.  This could be either in the local directories or the remote ones if you are getting artifacts from a remotely-hosted repository.
			</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="repository-structure"></a>Local Repository Structure</h3></div></div></div><p>
				When you first install Virgo, the local provisioning repository is located at <code class="literal">$SERVER_HOME/repository</code> by default and consists of two main directories: <code class="literal">ext</code> and <code class="literal">usr</code>.  The <code class="literal">ext</code> directory contains artifacts supplied with the Virgo and <code class="literal">usr</code> contains artifacts supplied by the user and is initially empty.  
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="repository-installing-bundles"></a>Installing Artifacts to a Repository</h3></div></div></div><p>
				To install an artifact into the default repository, simply copy it into the <code class="literal">$SERVER_HOME/repository/usr</code> directory. 
			</p><p>If you have configured additional watched or external repositories (additional, that is, to the default ones already configured in a freshly-installed Virgo instance), you install the artifacts in the same way: simply copy the files to the configured directories.  You configure additional watched or external repositories in the same file as the default repositories: <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.repository.properties</code>.
			</p><p>When you install a plan or a library into the repository, you must ensure that all referenced artifacts within the plan or library have been installed as well.
			</p><p>Artifacts must have unique names so it is considered best practice to include the version number in the file name, 
			allowing for multiple versions of the artifact to be installed at the same time.   For example, a bundle file name might be <code class="literal">my-exciting-bundle.2.1.0.jar</code>.
			</p><p>	
				For watched repositories, such as <code class="literal">$SERVER_HOME/repository/usr</code>, Virgo automatically detects changes
				at runtime, thereby avoiding the need to restart Virgo. 
			</p><p>
				Of specific relevance during development is picking up changes to an application&#8217;s direct dependencies during deployment of the application.  For example, if you deploy an application and receive a message that a dependency is missing, you can simply add the dependency to the repository and then redeploy the application.  The redeploy will cause the new dependency to be picked up, allowing progress to be made without restarting Virgo.  For other changes such as addition of optional dependencies, Virgo must be restarted to pick up any changes to the provisioning repository.
			</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="repository-brits"></a>10.2&nbsp;Downloading Bundles from the SpringSource Enterprise Bundle Repository</h2></div></div></div><p>
		    The SpringSource Enterprise Bundle Repository is a public collection of open source libraries commonly used for developing enterprise Java applications with the Spring Framework and Virgo.  It contains hundreds of the most popular enterprise Java libraries made available for general use in an OSGi-ready format.  You can browse the collection and then download the bundles that you need into your own local repository.
		</p><p>
			The SpringSource Enterprise Bundle Repository is located <a class="ulink" href="http://www.springsource.com/repository" target="_top">here</a>.
		</p><p>
			<img src="images/bundle-repository.png">
		</p><p>
			You can find bundles in the repository using a number of options.  You use the &#8216;Search&#8217; facility by typing in a keyword.  The matching criteria returned can be explored by name, symbolic name, class, package or resource.
		</p><p>
			There is also the option of clicking on &#8216;Browse by Bundle&#8217;.  This gives an alphabetical list of bundles.  You can select the desired bundle to see details and find the download link.  Finally, you can also choose to &#8216;Browse by Library&#8217;, which allows you to browse the alphabetical list of libraries in the repository.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="repository-configuration"></a>10.3&nbsp;Configuring the Repository</h2></div></div></div><p>Details of how to configure a Virgo installation&#8217;s provisioning repository can be found in <a class="link" href="#configuring-provisioning-repository" title="13.4&nbsp;Configuring the Local Provisioning Repository">Configuring the Provisioning Repository</a>.  See <a class="link" href="#configuring-hosted-repo" title="13.5&nbsp;Configuring a Hosted Repository">Configuring a Hosted Repository</a> for details of how to configure a repository that remote clients can access, also called a hosted repository.
		</p><p>
			The two configuration sections describe the format of the repository properties files of Virgo, how to add new directories to the local repository, how to configure the repository to get artifacts from a remote repository hosted on a remote VTS instance, and how to configure the local VTS instance to host a repository that other remote servers access.
		</p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="serviceability"></a>11.&nbsp;Serviceability and Diagnostics</h2></div></div></div><p>
	Virgo supports two kinds of logging: <span class="emphasis"><em>Event Logging</em></span> and <span class="emphasis"><em>Trace logging</em></span> which is usually referred
	to simply as <span class="emphasis"><em>Logging</em></span>. The difference between Event Logging and Logging is explained below, but both are configured in the 
	<code class="literal">serviceability.xml</code> file in the <code class="literal">configuration</code> directory. This file takes the form of a Logback configuration, Virgo
	uses a Logback implementation behind the SLF4J logging interface.
	</p><p>
		For a description of the syntax and facilities provided by <code class="literal">serviceability.xml</code>
		see the <span class="emphasis"><em>Logback</em></span> documentation (referenced in <a class="xref" href="#furtherreading" title="Appendix&nbsp;C.&nbsp; Further Reading">Appendix&nbsp;C, <i>
		Further Reading
	</i></a>).
	</p><p> 
</p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="serviceability-info-log"></a>11.1&nbsp;Event Logging</h2></div></div></div><p>
        Event logging records important events in Virgo. Each event is logged to
 		an event log file and is accompanied by a code enclosed in angle brackets. 
 		An example is shown below:
</p><pre class="screen">
[2010-10-25 16:20:45.897] system-artifacts             &lt;TC0010I&gt; Creating HTTP/1.1 connector with scheme http on port 8080.
</pre><p>
		(For a description of the log code syntax, see <a class="xref" href="#log-codes" title="Appendix&nbsp;A.&nbsp;Event log codes">Appendix&nbsp;A, <i>Event log codes</i></a>.)
        The format of event log messages is fully configurable.
      </p><p>
		    By default, event log messages are stored in <code class="literal">$SERVER_HOME/serviceability/eventlogs/eventlog.log</code>.
      	</p><p>
			The default behaviour is that, once <code class="literal">eventlog.log</code> reaches a 10Mb limit, it rolls into a series of files named	
			<code class="literal">eventlog_</code><span class="emphasis"><em>i</em></span><code class="literal">.log</code> where <span class="emphasis"><em>i</em></span> ranges from 1 to 4, and event logging continues in 
			a new <code class="literal">eventlog.log</code> file.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="serviceability-info-trace"></a>11.2&nbsp;(Trace) Logging</h2></div></div></div><p>
	    The Virgo&#8217;s (trace) logging support serves two main purposes:
	    </p><div class="itemizedlist"><ul type="disc"><li>
		    It provides global trace files that capture high-volume information regarding the Virgo&#8217;s internal events. 
		    The files are intended for use by support personnel to diagnose runtime problems.  
	      </li><li>
			It provides application trace files that contain application-generated output. This includes output generated using popular logging and
			tracing APIs including the OSGi LogService, as well as output generated by calls to <code class="literal">System.out</code> and <code class="literal">System.err</code>. 
			These files are intended for use by application developers and system administrators. An application is defined as a scope so a single bundle will 
			not get its own log file unless it is a Web application Bundle or is included in a scoped plan or a par file.
		  </li></ul></div><p>
        </p><p>
			By default, the Virgo trace file is called <code class="literal">$SERVER_HOME/serviceability/logs/log.log</code>,
			and, again by default, the application trace files are called <code class="literal">$SERVER_HOME/serviceability/logs/</code><span class="emphasis"><em>application_name</em></span>
			<code class="literal">/log.log</code>, where <span class="emphasis"><em>application_name</em></span> is automatically set by Virgo for each application artifact 
			installed and run (it is a combination of the artifact name and the version).
        </p><p>
			The default behaviour of these trace files is that, once <code class="literal">log.log</code> reaches a 10Mb limit, it rolls into a series of files named	
			<code class="literal">log_</code><span class="emphasis"><em>i</em></span><code class="literal">.log</code> where <span class="emphasis"><em>i</em></span> ranges from 1 to 4, and logging continues in 
			a new <code class="literal">log.log</code> file.
		</p><p>
		Entries in trace files are by default of the form &lt;timestamp&gt; &lt;thread-name&gt; &lt;source&gt; &lt;level&gt; &lt;entry-text&gt;. For example:
		</p><pre class="screen">
[2008-05-15 09:09:46.940] server-dm-2 org.apache.coyote.http11.Http11Protocol I Initializing Coyote HTTP/1.1 on http-48080
	    </pre><p>
        although this format is completely determined by the Logback configuration file <code class="literal">serviceability.xml</code>.
      </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="serviceability-info-trace-app"></a>Application Output</h3></div></div></div><p>
			Virgo provides advanced support for capturing and tracing application-generated output by automatically separating trace output on a
			per-application basis and will also capture any <code class="literal">System.out</code> and <code class="literal">System.err</code> output.
		</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="per-application-trace"></a>Per-application trace</h4></div></div></div><p>
				Virgo uses SLF4J interfaces to Logback, and the root logger (by default) captures all logging output
				and appends it to the application-specific trace files as described above.
				To modify this, define application-specific loggers in the <code class="literal">serviceability.xml</code> file in the normal way.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="sysout-and-syserr"></a>System.out and System.err</h4></div></div></div><p>
            <code class="literal">System.out</code> and <code class="literal">System.err</code> output from applications is, by default, captured in the
            application&#8217;s trace file.
            This happens because the output streams are intercepted and written to the loggers named 
            <code class="literal">System.out</code> and <code class="literal">System.err</code> respectively.  
			Since there are no explicit loggers defined with these names in the <code class="literal">serviceability.xml</code> file, 
			this output is logged by the root logger (which captures <code class="literal">INFO</code> level and above).
          </p><p>
			The capture of <code class="literal">System.out</code> and <code class="literal">System.err</code> output is configured in the
			<code class="literal">configuration/org.eclipse.virgo.medic.properties</code> file by the <code class="literal">log.wrapSysOut</code> and 
			<code class="literal">log.wrapSysErr</code> properties. By default the properties have a value of <code class="literal">true</code>
			and capture is enabled. Capture can be disabled by configuring the properties with a value of <code class="literal">false</code>. 
            The third and last accepted value is <code class="literal">tee</code> which captures the System streams output in the logs 
            while at the same time allows printing output to the System streams. Thus this output will appear both in the logs
		    and in the System stream output - an example could be the Equinox console, launched with <code class="literal">-console</code> startup argument.
          </p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.gif"></td><th align="left">Important</th></tr><tr><td align="left" valign="top">
            If you provide value different than 'true | tee | false' then the server will default to 'tee' and print out a warning.
          </td></tr></table></div><p>
            The trace entries for <code class="literal">System.out</code> and <code class="literal">System.err</code>
			output are of the form:
		    </p><pre class="screen">
[2008-05-16 09:28:45.874] server-tomcat-thread-1 System.out Hello world!
[2008-05-16 09:28:45.874] server-tomcat-thread-1 System.err Hello world!
			</pre><p>
			The third column indicates where the output came from (<code class="literal">System.out</code> or <code class="literal">System.err</code>).
		  </p><p>
		  To over-ride this behaviour, simply define explicit loggers named <code class="literal">System.out</code> 
		  and/or <code class="literal">System.err</code> in the configuration file to send this output to an appender of your choice.
		  Be aware that all applications&#8217; output streams will be caught by these loggers, and that a sifting appender might be useful to separate them.
		  </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="janino"></a>Janino</h4></div></div></div><p>
			Janino can be used to define trace filters as Java expressions. This adds a significant overhead to tracing, so should be used with care. 
          </p><p>
			For example, the addition of the following filter element to the sifting appender in <code class="literal">serviceability.xml</code>
			suppresses per-application trace output that is not associated with a particular application and is normally written to
			<code class="literal">serviceability/logs/virgo-kernel/log.log</code>.
			</p><pre class="programlisting">&lt;<span class="hl-tag">appender</span> <span class="hl-attribute">name</span>=<span class="hl-value">"SIFTED_LOG_FILE"</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.classic.sift.SiftingAppender"</span>&gt;
    &lt;<span class="hl-tag">discriminator</span>&gt;
        &lt;<span class="hl-tag">Key</span>&gt;applicationName&lt;<span class="hl-tag">/Key</span>&gt;
        &lt;<span class="hl-tag">DefaultValue</span>&gt;virgo-kernel&lt;<span class="hl-tag">/DefaultValue</span>&gt;
    &lt;<span class="hl-tag">/discriminator</span>&gt;
    &lt;<span class="hl-tag">sift</span>&gt;
        &lt;<span class="hl-tag">appender</span> <span class="hl-attribute">name</span>=<span class="hl-value">"${applicationName}_LOG_FILE"</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.RollingFileAppender"</span>&gt;
            &lt;<span class="hl-tag">filter</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.filter.EvaluatorFilter"</span>&gt;
                &lt;<span class="hl-tag">evaluator</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.classic.boolex.JaninoEventEvaluator"</span>&gt;
                    &lt;<span class="hl-tag">expression</span>&gt;
                        (mdc == null) || (mdc.get("applicationName") == null)
                    &lt;<span class="hl-tag">/expression</span>&gt;
                &lt;<span class="hl-tag">/evaluator</span>&gt;
                &lt;<span class="hl-tag">OnMismatch</span>&gt;NEUTRAL&lt;<span class="hl-tag">/OnMismatch</span>&gt;
                &lt;<span class="hl-tag">OnMatch</span>&gt;DENY&lt;<span class="hl-tag">/OnMatch</span>&gt;
            &lt;<span class="hl-tag">/filter</span>&gt;
            &lt;<span class="hl-tag">file</span>&gt;serviceability/logs/${applicationName}/log.log&lt;<span class="hl-tag">/file</span>&gt;
            ...
        &lt;<span class="hl-tag">/appender</span>&gt;
    &lt;<span class="hl-tag">/sift</span>&gt;
&lt;<span class="hl-tag">/appender</span>&gt;</pre><p> 
	      </p><p>
			To enable Janino in Virgo, place the Janino and commons compiler JARs, converted to OSGi bundles, in <code class="literal">plugins</code>.
			For example these bundles are available at v2.6.1 from the SpringSource Enterprise Bundle Repository.
			Then add the following lines to
			<code class="literal">configuration/org.eclipse.equinox.simpleconfigurator/bundles.info</code>
			(as described in <a class="link" href="#configuring-framework-bundles" title="Configuring OSGi Framework Bundles">Configuring OSGi Framework Bundles</a>):
			</p><pre class="programlisting">com.springsource.org.codehaus.janino,2.6.1,plugins/com.springsource.org.codehaus.janino-2.6.1.jar,4,false
com.springsource.org.codehaus.commons.compiler,2.6.1,plugins/com.springsource.org.codehaus.commons.compiler-2.6.1.jar,4,false</pre><p> 
		  </p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.gif"></td><th align="left">Important</th></tr><tr><td align="left" valign="top">
			Current versions of Logback, including 0.9.28 to 1.0, do not set Janino's "parent" class loader correctly.
			This bug is covered by the Logback issue <a class="ulink" href="http://jira.qos.ch/browse/LBCORE-244" target="_top">LBCORE-244</a>.
			With such versions, it is necessary to attach a fragment bundle to Janino. Place the fragment bundle in <code class="literal">plugins</code> and list it in 
			<code class="literal">configuration/org.eclipse.equinox.simpleconfigurator/bundles.info</code>.
			The fragment's contents are described in <a class="ulink" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=333920#c15" target="_top">bug 333920</a>.
		  </td></tr></table></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="serviceability-info-dump"></a>11.3&nbsp;Service Dumps</h2></div></div></div><p>
        A service dump is triggered when one of the following events
        occurs:
      </p><div class="orderedlist"><ol type="1"><li><p>
            A failure is detected in the Virgo code, or
          </p></li><li><p>
            a thread deadlock is detected.
          </p></li></ol></div><p>
        A service dump contains a snapshot of all the important state from
        the running Virgo instance. This snapshot is not intended
        for end user consumption but is useful for service personnel.
      </p><p>
        By default, service dumps are created in
        <code class="literal">$SERVER_HOME/serviceability/dump</code>.
      </p></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="deployment"></a>12.&nbsp;Working with Applications</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="deployment-deploying"></a>12.1&nbsp;Deploying Artifacts</h2></div></div></div><p>
			In the context of Virgo Server for Apache Tomcat, <span class="emphasis"><em>deploying</em></span> refers to installing an artifact to the server and then starting it to make it available to users.  Typically, when you install an artifact, VTS automatically starts it as long as the server is able to successfully resolve all its dependencies.  For this reason, the terms <span class="emphasis"><em>deploying</em></span> and <span class="emphasis"><em>installing</em></span> are often used interchangeably. 
		</p><p>You deploy artifacts to Virgo Server for Apache Tomcat using either the hot-deploy directory on the file system or by using the Admin Console.  The artifacts that you can deploy to VTS are:
		</p><div class="itemizedlist"><ul type="disc"><li>Bundles, including Web Application Bundles</li><li>WARs</li><li>PARs</li><li>Plans</li><li>Configuration Files</li></ul></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-deploying-nested-contexts"></a>Deploying WARs with nested Web-ContextPaths</h3></div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
                This section currently is ONLY relevant for Virgo Nano.
            </td></tr></table></div><p>
				Virgo Nano Web supports deployment of WAR files which are transformed into Web Application Bundles. This process involves automatic creation of an OSGi manifest with all relevant OSGi header plus the very important Web-ContextPath header. Its value defines how the deployed WAR file can be requested. There is a limitation about this process that the automatic generation only creates a flat context path which equals the name of your WAR file. Virgo Nano Web supports generation of a nested one. 
			</p><p>In order to benefit from this flexibility all you need to do is just to add hashes '#' to your WAR file name in the places where you want to have slashes in your web context path. Here is an example:
                </p><pre class="screen">myWarFile.war would result into "/myWarFile" web context path</pre><p>
                </p><pre class="screen">my#War#File.war would result into "/my/War/File" web context path</pre><p>
                The symbolic name of the resulting WAB file is the same as the WAR file name but the hashes '#' are replaced with dots '.'.
            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="initial-deployment-deploying-bulk"></a>Initial Bulk Hot Deploy</h3></div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
                This section currently is ONLY relevant for Virgo Nano.
            </td></tr></table></div><p>
				To hot deploy an artifact initially in bulk mode, copy it into the pickup directory (by default <code class="literal">$SERVER_HOME/pickup</code>) and start up the server. Upon this startup all the artifacts in the <code class="literal">pickup</code> directory will get first installed and resolved and only then they will be started.
			</p><p>
                This solves the problem where artifacts depend on each other and when not in bulk mode the install order is not guaranteed therefore errors could occur.
            </p><p>
                This is only available as part of the initial scan of the <code class="literal">pickup</code> directory. Subsequently it goes back to the known mode of single file handled at a time.
            </p><pre class="programlisting">prompt$ cd /home/applications
prompt$ cp BundleA.jar $SERVER_HOME/pickup
prompt$ cp BundleWithDependencyOnA.jar $SERVER_HOME/pickup
prompt$ cd $SERVER_HOME/bin
prompt$ ./startup.sh</pre><p>
				When the server is started, artifacts are hot deployed and messages similar to the following appear in the log file:
			</p><pre class="screen">[2009-12-10 06:41:01.021] fs-watcher          &lt;HD0001I&gt; Hot deployer processing 'INITIAL' event for file 'BundleA.jar; BundleWithDependencyOnA.jar; '.
[2009-12-10 06:41:01.087] fs-watcher          &lt;DE0000I&gt; Installing bundle 'BundleA' version '0.0.0'.
[2009-12-10 06:41:01.274] fs-watcher          &lt;DE0001I&gt; Installed bundle 'BundleA' version '0.0.0'.
[2009-12-10 06:41:01.087] fs-watcher          &lt;DE0000I&gt; Installing bundle 'BundleWithDependencyOnA' version '0.0.0'.
[2009-12-10 06:41:01.274] fs-watcher          &lt;DE0001I&gt; Installed bundle 'BundleWithDependencyOnA' version '0.0.0'.
[2009-12-10 06:41:01.397] fs-watcher          &lt;DE0004I&gt; Starting bundle 'BundleA' version '0.0.0'.
[2009-12-10 06:41:01.550] start-signalling-1  &lt;DE0005I&gt; Started bundle 'BundleA' version '0.0.0'.
[2009-12-10 06:41:01.397] fs-watcher          &lt;DE0004I&gt; Starting bundle 'BundleWithDependencyOnA' version '0.0.0'.
[2009-12-10 06:41:01.550] start-signalling-1  &lt;DE0005I&gt; Started bundle 'BundleWithDependencyOnA' version '0.0.0'.</pre><p>
				If there is a problem with the deployment, such as the server being unable to resolve all dependencies, the console and log both show an error message to help you with troubleshooting.
			</p><p>If there are no problems, Virgo Nano automatically starts the artifacts so that they are immediately available to users.
			</p><p>Bulk deployment can be disabled and reverted back to the old one-file-at-a-time processing by removing this line from <code class="literal">$SERVER_HOME/configuration/config.ini</code>:
            </p><pre class="programlisting">org.eclipse.virgo.fschecker.initialEventMode=bulk</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-deploying-hot"></a>Hot Deploy</h3></div></div></div><p>
				To hot deploy an artifact, copy it into the pickup directory (by default <code class="literal">$SERVER_HOME/pickup</code>):
			</p><pre class="programlisting">prompt$ cd /home/applications
prompt$ cp helloWorld.war $SERVER_HOME/pickup</pre><p>
				When the artifact is hot deployed, messages similar to the following appear in the log file:
			</p><pre class="screen">[2009-12-10 06:41:01.021] fs-watcher          &lt;HD0001I&gt; Hot deployer processing 'CREATED' event for file 'helloWorld.war'.
[2009-12-10 06:41:01.087] fs-watcher          &lt;DE0000I&gt; Installing bundle 'helloWorld' version '0.0.0'.
[2009-12-10 06:41:01.274] fs-watcher          &lt;DE0001I&gt; Installed bundle 'helloWorld' version '0.0.0'.
[2009-12-10 06:41:01.397] fs-watcher          &lt;DE0004I&gt; Starting bundle 'helloWorld' version '0.0.0'.
[2009-12-10 06:41:01.414] Thread-3            &lt;WE0000I&gt; Starting web bundle 'helloWorld' version '0.0.0' with context path '/helloWorld'.
[2009-12-10 06:41:01.537] Thread-3            &lt;WE0001I&gt; Started web bundle 'helloWorld' version '0.0.0' with context path '/helloWorld'.
[2009-12-10 06:41:01.550] start-signalling-1  &lt;DE0005I&gt; Started bundle 'helloWorld' version '0.0.0'.</pre><p>
				If there is a problem with the deployment, such as the server being unable to resolve all dependencies, the console and log both show an error message to help you with troubleshooting.
			</p><p>If there are no problems, VTS automatically starts the artifact so that it is immediately available to users.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-redeploy-hot"></a>Hot Redeploy</h3></div></div></div><p>
				To hot redeploy an artifact which is already hot deployed, copy the updated artifact into the pickup directory (by default <code class="literal">$SERVER_HOME/pickup</code>), 
        just as for hot deploy. When the artifact is redeployed, messages similar to the following appear in the log file:
			</p><pre class="screen">[2013-01-09 14:08:12.422] fs-watcher                   &lt;HD0001I&gt; Hot deployer processing 'MODIFIED' event for file 'helloWorld.war'.
[2013-01-09 14:08:12.422] fs-watcher                   &lt;DE0007I&gt; Refreshing bundle 'helloWorld' version '0.0.0'.
[2013-01-09 14:08:12.469] fs-watcher                   &lt;WE0002I&gt; Stopping web bundle 'helloWorld' version '0.0.0' with context path '/helloWorld'.
[2013-01-09 14:08:13.094] fs-watcher                   &lt;WE0003I&gt; Stopped web bundle 'helloWorld' version '0.0.0' with context path '/helloWorld'.
[2013-01-09 14:08:13.094] fs-watcher                   &lt;DE0010I&gt; Stopping bundle 'helloWorld' version '0.0.0'.
[2013-01-09 14:08:13.110] fs-watcher                   &lt;DE0011I&gt; Stopped bundle 'helloWorld' version '0.0.0'.
[2013-01-09 14:08:13.250] fs-watcher                   &lt;DE0004I&gt; Starting bundle 'helloWorld' version '0.0.0'.
[2013-01-09 14:08:13.250] start-signalling-2           &lt;WE0000I&gt; Starting web bundle 'helloWorld' version '0.0.0' with context path '/helloWorld'.
[2013-01-09 14:08:13.860] start-signalling-2           &lt;WE0001I&gt; Started web bundle 'helloWorld' version '0.0.0' with context path '/helloWorld'.
[2013-01-09 14:08:13.860] start-signalling-2           &lt;DE0005I&gt; Started bundle 'helloWorld' version '0.0.0'.
[2013-01-09 14:08:13.860] fs-watcher                   &lt;DE0008I&gt; Refreshed bundle 'helloWorld' version '0.0.0'.</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
      The following paragraph is ONLY relevant for Virgo Nano.
    </td></tr></table></div><p>
      The redeploy waits for any previous operations on the artifact being redeployed to finish. The wait timeout could be configured through the following property in <code class="literal">$SERVER_HOME/configuration/config.ini</code>: 
    </p><pre class="programlisting">org.eclipse.virgo.update.timeout</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-deploying-manual"></a>Deploying Using the Admin Console</h3></div></div></div><p>
				The Admin Console allows you to upload a file, which will be deployed automatically, from your local file system to the Virgo Server for Apache Tomcat. As soon as Virgo Server for Apache Tomcat deploys the artifact,  it appears in the list of artifacts in the Admin Console.  Note that the GUI for uploading varies according to the browser and operating system you use.
			</p><p>See <a class="link" href="#admin-console-install-artifacts" title="Installing a New Artifact">Installing a New Artifact</a> for details about using the Admin Console to install (deploy) an artifact.  See <a class="link" href="#admin-console" title="9.&nbsp;The Web Admin Console">The Web Admin Console</a> for general information about the Admin Console.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-deploying-happens"></a>What Happens When You Deploy</h3></div></div></div><p>
				When you deploy an artifact, either using hot-deployment or the Admin Console, Web Server copies the file to its work directory (<code class="literal">SERVER_HOME/work</code>) and registers it in its internal registry. 
				The server then checks any dependencies the artifact might have to see if
				deployment can go ahead, and if all dependencies are resolved, Virgo Server for Apache Tomcat starts the artifact.
				Because of all these additional internal activities, you should NOT simply copy the artifact into the <code class="literal">work</code> directory and assume it will be deployed, because Virgo Server for Apache Tomcat will not do so.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-deploying-ordering"></a>Deployment Ordering</h3></div></div></div><p>
				When deploying bundles that have dependencies, it is important 
				that you deploy them in the correct order. Virgo Server for Apache Tomcat 
				honors this ordering when it redeploys the artifacts on startup. 
			</p><p>
				If you use hot deployment to deploy your artifacts, be sure to copy the corresponding files into the pickup
				directory one-by-one. Copying the files in one group, for example by using a single <code class="literal">cp</code> command, provides no guarantee of ordering.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-deploying-shared"></a>Deploying Shared Artifacts</h3></div></div></div><p>
				Artifacts may be shared by plans.
				Sharing occurs when a plan is deployed which references an artifact that was previously deployed or is a child artifact
				of a plan that was previously deployed.
				Sharing also occurs when an artifact is deployed which is already a child of a deployed plan, but in this case the shared
				artifact may <span class="emphasis"><em>not</em></span> appear as a top-level artifact, for example, in the Admin Console, in the shell,
				and in JMX.
			</p><p>
				Sharing is taken into account when artifacts are stopped.
				A shared artifact is stopped only when all the artifacts referencing the shared artifact have been stopped
				and, if the shared artifact was deployed in its own right, the artifact itself has been stopped.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-deploying-restrictions"></a>Restrictions</h3></div></div></div><p>
				Virgo Server for Apache Tomcat does not support deploying fragment bundles. Typically, fragment bundles should be placed in <code class="literal">$SERVER_HOME/repository/ext</code>
				or <code class="literal">$SERVER_HOME/repository/usr</code> so that they will be installed automatically with their host bundles.
			</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="deployment-undeploy"></a>12.2&nbsp;Undeploying Artifacts</h2></div></div></div><p>
			You undeploy artifacts from Virgo Server for Apache Tomcat by using either the hot-deploy directory on the file system, or the Admin Console.
		</p><p><span class="bold"><strong>Note:</strong></span>  As with deploying, in this guide the terms <span class="emphasis"><em>undeploying</em></span> and <span class="emphasis"><em>uninstalling</em></span> are used interchangeably.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-undeploy-hot"></a>Hot Undeploy</h3></div></div></div><p>
				To hot-undeploy an artifact, remove the corresponding file from the pickup directory (by default <code class="literal">$SERVER_HOME/pickup</code>):
			</p><pre class="programlisting">prompt$ cd $SERVER_HOME/pickup
prompt$ rm helloWorld.war</pre><p>
				When Virgo Server for Apache Tomcat completes the undeployment of the artifact, messages similar to the following appear in the log:
			</p><pre class="screen">[2009-12-10 06:46:33.254] fs-watcher   &lt;HD0001I&gt; Hot deployer processing 'DELETED' event for file 'helloWorld.war'.
[2009-12-10 06:46:33.259] Thread-3     &lt;WE0002I&gt; Stopping web bundle 'helloWorld' version '0.0.0' with context path '/helloWorld'.
[2009-12-10 06:46:33.285] Thread-3     &lt;WE0003I&gt; Stopped web bundle 'helloWorld' version '0.0.0' with context path '/helloWorld'.
[2009-12-10 06:46:33.290] fs-watcher   &lt;DE0010I&gt; Stopping bundle 'helloWorld' version '0.0.0'.
[2009-12-10 06:46:33.295] fs-watcher   &lt;DE0011I&gt; Stopped bundle 'helloWorld' version '0.0.0'.
[2009-12-10 06:46:33.302] fs-watcher   &lt;DE0013I&gt; Uninstalling bundle 'helloWorld' version '0.0.0'.
[2009-12-10 06:46:33.319] fs-watcher   &lt;DE0014I&gt; Uninstalled bundle 'helloWorld' version '0.0.0'.</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-undeploy-manual"></a>Undeploying Using the Admin Console</h3></div></div></div><p>
				You can undeploy only whole artifacts from the Admin Console, or in other words, you cannot undeploy the separate modules or bundles that make up an artifact.</p><p>
				The only artifact that you cannot undeploy from the Admin Console is the Admin Console itself. If you need to undeploy this application, you must remove it from the pickup directory (by default <code class="literal">SERVER_HOME/pickup</code>); the name of the artifact is
				<code class="literal">org.eclipse.virgo.server.admin-2.1.0.RELEASE.plan</code>.
			</p><p>See <a class="link" href="#admin-console-manage-artifacts" title="Viewing and Managing the Lifecycle of Deployed Artifacts">Viewing and Managing the Lifecycle of Deployed Artifacts</a> for details about uninstalling (undeploying) an artifact using the Admin Console.  The high-level steps are to highlight the artifact in the artifact tree then click <code class="literal">Uninstall</code>. </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="deployment-undeploying-shared"></a>Undeploying Shared Artifacts</h3></div></div></div><p>
				Sharing is taken into account when artifacts are undeployed.
				A shared artifact is undeployed only when all the artifacts referencing the shared artifact have been undeployed
				and, if the shared artifact was deployed in its own right, the artifact itself has been undeployed.
			</p></div></div></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="configuring"></a>13.&nbsp;Configuration</h2></div></div></div><p>You use configuration files in the <code class="literal">$SERVER_HOME/configuration</code> directory to configure Virgo.  You can also configure the OSGi framework  using files the same <code class="literal">$SERVER_HOME/configuration</code> directory. This section divides the configuration of the server into the following high-level tasks:</p><div class="itemizedlist"><ul type="disc"><li><p><a class="link" href="#configuring-osgi-framework" title="13.1&nbsp;Configuring the OSGi Framework">Configuring the OSGi framework</a></p></li><li><p><a class="link" href="#configuring-framework-extensions" title="13.2&nbsp;Configuring Framework Extensions and Fragments on the System Bundle">Configuring framework extensions and fragments on the system bundle</a></p></li><li><p><a class="link" href="#configuring-serviceability" title="13.3&nbsp;Configuring Serviceability and Diagnostics">Configuring serviceability</a></p></li><li><p><a class="link" href="#configuring-provisioning-repository" title="13.4&nbsp;Configuring the Local Provisioning Repository">Configuring the local provisioning repository</a></p></li><li><p><a class="link" href="#configuring-hosted-repo" title="13.5&nbsp;Configuring a Hosted Repository">Configuring the hosted repository</a></p></li><li><p><a class="link" href="#configuring-kernel" title="13.6&nbsp;Configuring the Kernel and User Region">Configuring the kernel and User Region</a></p></li><li><p><a class="link" href="#configuring-tomcat" title="13.7&nbsp;Configuring the Embedded Tomcat Servlet Container">Configuring the embedded Tomcat servlet container</a></p></li><li><p><a class="link" href="#configuring-web" title="13.8&nbsp;Configuring the Web Integration Layer">Configuring the web integration layer</a></p></li><li><p><a class="link" href="#configuring-jetty" title="13.9&nbsp;Configuring the Embedded Jetty Servlet Container">Configuring the embedded Jetty servlet container</a></p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: Why is there both a config and a configuration directory?"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Why is there both a config and a configuration directory?</th></tr><tr><td align="left" valign="top"><p>The <span class="emphasis"><em>config</em></span> directory has always contained Virgo configuration files. When Virgo Nano and its support for p2 provisioning was introduced in Virgo 3.5.0, a <span class="emphasis"><em>configuration</em></span> directory replaced the old <span class="emphasis"><em>config</em></span> one. Now all Virgo configurations are assembled in that directory providing a single point of configuration. The directory name <span class="emphasis"><em>configuration</em></span> in the installation's root is used by default in p2 to configure the OSGi framework during provisioning.</p><p>This chapter makes it clear which configuration goes in each directory.</p></td></tr></table></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">Sections 4-6 and 8-9 does not apply for Virgo Nano.</td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-osgi-framework"></a>13.1&nbsp;Configuring the OSGi Framework</h2></div></div></div><p>
			This section provides information about configuring the OSGi framework by updating the following files in the <code class="literal">$SERVER_HOME/configuration</code> directory:
		</p><div class="table"><a name="configuring-osgi-framework-table"></a><p class="title"><b>Table&nbsp;13.1.&nbsp;OSGi Framework Configuration Files </b></p><div class="table-contents"><table summary="OSGi Framework Configuration Files " style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Property File</th><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Description</th><th style="border-bottom: 1.0pt solid ; ">Location</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">config.ini</code></td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Configures <a class="link" href="#configuring-framework-properties" title="Configuring OSGi Framework Properties">OSGi framework properties</a>.</td><td style="border-bottom: 1.0pt solid ; ">$SERVER_HOME/configuration</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">bundles.info</code></td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Configures <a class="link" href="#configuring-framework-bundles" title="Configuring OSGi Framework Bundles">OSGi framework bundles</a>.</td><td style="border-bottom: 1.0pt solid ; ">$SERVER_HOME/configuration/org.eclipse.equinox.simpleconfigurator</td></tr><tr><td style="border-right: 1.0pt solid ; "><code class="literal">java6-server.profile</code></td><td style="border-right: 1.0pt solid ; ">Configures the <a class="link" href="#configuring-framework-profile" title="Configuring OSGi Framework Profile">OSGi framework profile</a>.</td><td style="">$SERVER_HOME/configuration</td></tr></tbody></table></div></div><br class="table-break"><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-framework-properties"></a>Configuring OSGi Framework Properties</h3></div></div></div><p>
				You specify the framework properties in the <code class="literal">$SERVER_HOME/configuration/config.ini</code> file. The
				properties most relevant to users are described in the following table.
			</p><p>
				<span class="bold"><strong>WARNING:</strong></span> We strongly recommend that you update only the
				properties below; updating other properties could cause Virgo
				to fail.
			</p><div class="table"><a name="configuring-framework-properties-table"></a><p class="title"><b>Table&nbsp;13.2.&nbsp;Framework Properties</b></p><div class="table-contents"><table summary="Framework Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Property</th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">org.eclipse.virgo.kernel.startup.wait.limit</code></td><td style="border-bottom: 1.0pt solid ; ">
								Specifies the amount of time, in seconds, after which various operations time out out while trying to start the kernel.
								The default value is 180.
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">org.eclipse.virgo.suppress.heap.dumps</code></td><td style="border-bottom: 1.0pt solid ; ">
								Set to 'false' by default this property will prevent heap dumps being contributed to dumps taken during a
								First Failure Data Capture (FFDC) event. When the heap dumps are produced they will be located along with
								the other dump artifacts in the <code class="literal">$SERVER_HOME/serviceability/dump/</code> folder.
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">osgi.java.profile</code></td><td style="border-bottom: 1.0pt solid ; ">
								Specifies the profile to use using a <code class="literal">file:</code> URI with default value
								<code class="literal">file:configuration/java6-server.profile</code>.
							</td></tr><tr><td style="border-right: 1.0pt solid ; "><code class="literal">osgi.bundlefile.limit</code></td><td style="">
								Specifies a limit on the number of jar files the framework will keep open. 
								The minimum value allowed is 10. Any value less than 10 will disable the bundle file limit, making the the number of jar files the framework keeps open unlimited. 
								By default the value is 100.
								Increase the default value if you have many jar files in the bundle class path, expect a lot of file system operations etc.
							</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-framework-bundles"></a>Configuring OSGi Framework Bundles</h3></div></div></div><p>
				You specify the framework bundles in the <code class="literal">$SERVER_HOME/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info</code> file. The syntax
				that is accepted for listing bundles there is:
				</p><pre class="screen">&lt;bsn&gt;,&lt;version&gt;,&lt;jar-location&gt;,&lt;start-level&gt;,&lt;toStart?&gt;
bsn - the bundle's symbolic name string
version - the bundle's version string
jar-location - relative or absolute path to the jar file
start-level - a digit indicating the bundle's start level
toStart? - true or false value indicating whether a bundle should be started or not</pre><p>
			</p><p>Here's an example:</p><p>
			</p><pre class="screen">org.eclipse.virgo.util.osgi,3.1.0.BUILD-20111031165127,plugins/org.eclipse.virgo.util.osgi_3.1.0.BUILD-20111031165127.jar,4,true</pre><p>
			</p><p>
				<span class="bold"><strong>WARNING:</strong></span> We strongly recommend that you don't remove bundles already present in your bundles.info file as that may break your server. Add bundles here only if absolutely necessary.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-framework-profile"></a>Configuring OSGi Framework Profile</h3></div></div></div><p>
				You specify the framework profile in the <code class="literal">$SERVER_HOME/configuration/java6-server.profile</code> file. The
				properties most relevant to users are described in the following table.
			</p><p>
				<span class="bold"><strong>WARNING:</strong></span> We advise you not to change the framework profile unless you are sure you know exactly what
				you are doing; updating the profile could cause Virgo to fail.
			</p><div class="table"><a name="configuring-framework-profile-table"></a><p class="title"><b>Table&nbsp;13.3.&nbsp;Framework Profile Properties</b></p><div class="table-contents"><table summary="Framework Profile Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Property</th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">org.osgi.framework.bootdelegation</code></td><td style="border-bottom: 1.0pt solid ; ">
								<p>
									This property specifies the packages which are loaded by delegation to the application class loader.
									Bundles can load classes belonging to these packages without importing the packages.
									The <code class="literal">.*</code> wildcard matches any package suffix. <code class="literal">java.*</code> is always
									boot delegated and must not be specified in this property.
								</p>
								<p>
									A common reason for adding packages to this property is to run Virgo under a performance profiler.
								</p>
							</td></tr><tr><td style="border-right: 1.0pt solid ; "><code class="literal">org.osgi.framework.system.packages</code></td><td style="">
								<p>
									This property specifies the packages which are exported by the system bundle.
								</p>
								<p>
									Although the system bundle is typically imported into the User Region, any additional packages will not be
									visible in the User Region unless you also import them using the <code class="literal">packagedImports</code> property.
									See <a class="link" href="#configuring-user-region" title="Configuring the User Region">Configuring the User Region</a> for instructions.
								</p>
								<p>
									It is very occasionally necessary to extend the set, for example when configuring email logging appenders since the
									implementation of <code class="literal">javax.mail</code>	is intimately related to the implementation of
									<code class="literal">javax.activation</code>.
								</p>
								<p>
									To make the corresponding classes available for loading, the relevant JAR file(s) should be placed in
									<code class="literal">$SERVER_HOME/lib</code> so that they will be added to the application class path.
								</p>
							</td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-framework-extensions"></a>13.2&nbsp;Configuring Framework Extensions and Fragments on the System Bundle</h2></div></div></div><p>
			This section provides information about configuring framework extensions and fragments on the system bundle. Deployment of such bundles is not allowed in 		
			Virgo. This is because by refreshing or uninstalling them the system.bundle is also refreshed, which causes Virgo to crash.
		</p><p>
			<span class="bold"><strong>NOTE:</strong></span> This only applies for fragments on the system bundle. All other fragment bundles have no deployment restrictions.
		</p><p>
			Generally it's best to avoid usage of such fragment bundles as they are a common OSGi framework issue and often require restarting the framework.
			However sometimes there are no other options and one has to use framework extensions or fragments on the system bundle.
		</p><p>
			You can configure framework extensions and system bundle fragments as follows:
		</p><p>
			<span class="bold"><strong>1.</strong></span> Place your fragment bundle in the <code class="literal">/plugins</code> directory of your Virgo installation.
			</p><p>
				Lets say we have bundle with
			</p><p>
			</p><pre class="programlisting">
symbolic name: <span class="emphasis"><em>testFragment</em></span>, version: <span class="emphasis"><em>1.0.0</em></span> and filename: <span class="emphasis"><em>testFragmentBinary_1.0.0.jar</em></span>
			</pre><p>
		</p><p>
			<span class="bold"><strong>2.</strong></span> Configure the <code class="literal">bundles.info</code> file in <code class="literal">/configuration/org.eclipse.equinox.simpleconfigurator</code> to include the 
			just copied fragment or framework extension bundle.
			</p><p>
				Add a line at the end of the <code class="literal">bundles.info</code> file similar to this one:		
			</p><p>
			</p><pre class="programlisting">
<span class="emphasis"><em>testFragment,1.0.0,plugins/testFragmentBinary_1.0.0.jar,4,false</em></span>
			</pre><p>
		</p><p>
			<span class="bold"><strong>3.</strong></span> Configure the <code class="literal">org.eclipse.virgo.kernel.userregion.properties</code> file in <code class="literal">/configuration</code> folder to import the fragment bundle or framework extension in the User Region.
			</p><p>
				Add to the <code class="literal">bundleImports</code> property a new line describing the fragment bundle using its symbolic name and version.
			</p><p>
			</p><pre class="programlisting">
bundleImports = org.eclipse.osgi;bundle-version="0",<span class="bold"><strong>testFragment;bundle-version="0"</strong></span>
			</pre><p>
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-serviceability"></a>13.3&nbsp;Configuring Serviceability and Diagnostics</h2></div></div></div><p>The serviceability features of Virgo allow you to gather and view data and information that you can then use to diagnose problems and failures.  Serviceability data includes:</p><div class="itemizedlist"><ul type="disc"><li><p>
		Service dumps: Contain a snapshot of all the important state from the running Virgo instance when an internal failure or thread deadlock is detected.
		</p><p>You configure service dumps for Virgo using the <a class="link" href="#configuring-serviceability-medic" title="The org.eclipse.virgo.medic.properties File">org.eclipse.virgo.medic.properties</a> file in the <code class="literal">$SERVER_HOME/configuration</code> directory.  This file also includes some additional logging configuration.</p></li><li><p>
		Event logs and server/application (trace) logging: Logging support in Virgo is based on <a class="ulink" href="http://logback.qos.ch/" target="_top">Logback</a>.  This means that you have complete control over the format of log output and have the complete range of Logback's appenders available for your use.
		</p><p>You configure logging for Virgo using the <a class="link" href="#configuring-serviceability-logback" title="The serviceability.xml File">serviceability.xml</a> file in the <code class="literal">$SERVER_HOME/configuration</code> directory.  This file is essentially the Logback <code class="literal">logback.xml</code> (or <code class="literal">logback-test.xml</code>) configuration file but renamed for Virgo. </p></li></ul></div><p>For additional conceptual information about the serviceability subsystem, see <a class="xref" href="#serviceability" title="11.&nbsp;Serviceability and Diagnostics">Chapter&nbsp;11, <i>Serviceability and Diagnostics</i></a>. </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-serviceability-medic"></a>The org.eclipse.virgo.medic.properties File</h3></div></div></div><p>The <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.medic.properties</code> file configures Virgo service dumps and whether you want to capture <code class="literal">System.out</code> and <code class="literal">System.err</code> output to your application's trace file. </p><p>The following table describes the properties you can include in the <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.medic.properties</code> file. This file configures serviceability properties that Virgo includes in addition to those supplied by the Logback, configured in the <code class="literal">serviceability.xml</code> file.</p><div class="table"><a name="medic-properties-table"></a><p class="title"><b>Table&nbsp;13.4.&nbsp;Serviceability Properties</b></p><div class="table-contents"><table summary="Serviceability Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Property</th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">dump.root.directory</code></td><td style="border-bottom: 1.0pt solid ; ">Specifies the directory to which Virgo writes the service dumps.  The directory name is relative to <code class="literal">$SERVER_HOME</code>.  </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">log.wrapSysOut</code></td><td style="border-bottom: 1.0pt solid ; ">Specifies whether you want to capture <code class="literal">System.out</code> output from your applications to the application trace file.  The output is logged by Virgo's root logger, which captures <code class="literal">INFO</code> level and above. 
			<p>Valid values for this property are <code class="literal">true</code> to capture <code class="literal">System.out</code> output, or <code class="literal">false</code> to disable the capture.</p>
			<p>For more information, see <a class="link" href="#sysout-and-syserr" title="System.out and System.err">System.out and System.err</a>.</p>
		  </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">log.wrapSysErr</code></td><td style="border-bottom: 1.0pt solid ; ">Specifies whether you want to capture <code class="literal">System.err</code> output from your applications to the application trace file.  The output is logged by Virgo's root logger, which captures <code class="literal">INFO</code> level and above. 
			<p>Valid values for this property are <code class="literal">true</code> to capture <code class="literal">System.err</code> output, or <code class="literal">false</code> to disable the capture.</p>
			<p>For more information, see <a class="link" href="#sysout-and-syserr" title="System.out and System.err">System.out and System.err</a>.</p>
		  </td></tr><tr><td style="border-right: 1.0pt solid ; "><code class="literal">log.jul.consoleHandler</code></td><td style="">Specifies whether you want to use the <code class="literal">ConsoleHandler</code> of Java Util Logging. The default JVM configuration uses the handler to write logs to <code class="literal">System.err</code>.
                      <p>Valid values for this property are <code class="literal">true</code> to enable <code class="literal">ConsoleHandler</code> output, or <code class="literal">false</code> to disable it. The default value is <code class="literal">false</code>.</p>
                      <p>For more information, see <a class="ulink" href="http://download.oracle.com/javase/6/docs/technotes/guides/logging/overview.html" target="_top">Java Logging Overview</a>.</p>
                  </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-serviceability-logback"></a>The serviceability.xml File</h3></div></div></div><p>Logging support in Virgo is based on <a class="ulink" href="http://logback.qos.ch/" target="_top">Logback</a>, which is a successor of the log4j project. The Logback logging framework is faster, more reliable, and easier to use than log4j and certain other logging systems.</p><p>You configure logging for Virgo using the <code class="literal">$SERVER_HOME/configuration/serviceability.xml</code> file.  This file is the standard Logback <code class="literal">logback.xml</code> or <code class="literal">logback-test.xml</code> configuration file, but renamed for Virgo. </p><p>The following listing shows the default <code class="literal">serviceability.xml</code> file in a freshly-installed Virgo; see the text after the listing for a brief overview of the file:</p><pre class="programlisting">&lt;<span class="hl-tag">configuration</span>&gt;

	&lt;<span class="hl-tag">jmxConfigurator</span> /&gt;

	&lt;<span class="hl-tag">contextListener</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.classic.jul.LevelChangePropagator"</span>/&gt;

	&lt;<span class="hl-tag">appender</span> <span class="hl-attribute">name</span>=<span class="hl-value">"SIFTED_LOG_FILE"</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.classic.sift.SiftingAppender"</span>&gt;
		&lt;<span class="hl-tag">discriminator</span>&gt;
			&lt;<span class="hl-tag">Key</span>&gt;applicationName&lt;<span class="hl-tag">/Key</span>&gt;
			&lt;<span class="hl-tag">DefaultValue</span>&gt;virgo-server&lt;<span class="hl-tag">/DefaultValue</span>&gt;
		&lt;<span class="hl-tag">/discriminator</span>&gt;
		&lt;<span class="hl-tag">sift</span>&gt;
			&lt;<span class="hl-tag">appender</span> <span class="hl-attribute">name</span>=<span class="hl-value">"${applicationName}_LOG_FILE"</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.RollingFileAppender"</span>&gt;
				&lt;<span class="hl-tag">file</span>&gt;serviceability/logs/${applicationName}/log.log&lt;<span class="hl-tag">/file</span>&gt;
				&lt;<span class="hl-tag">rollingPolicy</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.FixedWindowRollingPolicy"</span>&gt;
					&lt;<span class="hl-tag">FileNamePattern</span>&gt;serviceability/logs/${applicationName}/log_%i.log&lt;<span class="hl-tag">/FileNamePattern</span>&gt;
					&lt;<span class="hl-tag">MinIndex</span>&gt;1&lt;<span class="hl-tag">/MinIndex</span>&gt;
					&lt;<span class="hl-tag">MaxIndex</span>&gt;4&lt;<span class="hl-tag">/MaxIndex</span>&gt;
				&lt;<span class="hl-tag">/rollingPolicy</span>&gt;
				&lt;<span class="hl-tag">triggeringPolicy</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"</span>&gt;
					&lt;<span class="hl-tag">MaxFileSize</span>&gt;10MB&lt;<span class="hl-tag">/MaxFileSize</span>&gt;
				&lt;<span class="hl-tag">/triggeringPolicy</span>&gt;
				&lt;<span class="hl-tag">encoder</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.classic.encoder.PatternLayoutEncoder"</span>&gt;
					&lt;<span class="hl-tag">Pattern</span>&gt;[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level %-28.28thread %-64.64logger{64} %X{medic.eventCode} %msg %ex%n&lt;<span class="hl-tag">/Pattern</span>&gt;
				&lt;<span class="hl-tag">/encoder</span>&gt;
			&lt;<span class="hl-tag">/appender</span>&gt;
		&lt;<span class="hl-tag">/sift</span>&gt;
	&lt;<span class="hl-tag">/appender</span>&gt;

	&lt;<span class="hl-tag">appender</span> <span class="hl-attribute">name</span>=<span class="hl-value">"LOG_FILE"</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.RollingFileAppender"</span>&gt;
		&lt;<span class="hl-tag">file</span>&gt;serviceability/logs/log.log&lt;<span class="hl-tag">/file</span>&gt;
		&lt;<span class="hl-tag">rollingPolicy</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.FixedWindowRollingPolicy"</span>&gt;
			&lt;<span class="hl-tag">FileNamePattern</span>&gt;serviceability/logs/log_%i.log&lt;<span class="hl-tag">/FileNamePattern</span>&gt;
			&lt;<span class="hl-tag">MinIndex</span>&gt;1&lt;<span class="hl-tag">/MinIndex</span>&gt;
			&lt;<span class="hl-tag">MaxIndex</span>&gt;4&lt;<span class="hl-tag">/MaxIndex</span>&gt;
		&lt;<span class="hl-tag">/rollingPolicy</span>&gt;
		&lt;<span class="hl-tag">triggeringPolicy</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"</span>&gt;
			&lt;<span class="hl-tag">MaxFileSize</span>&gt;10MB&lt;<span class="hl-tag">/MaxFileSize</span>&gt;
		&lt;<span class="hl-tag">/triggeringPolicy</span>&gt;
		&lt;<span class="hl-tag">encoder</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.classic.encoder.PatternLayoutEncoder"</span>&gt;
			&lt;<span class="hl-tag">Pattern</span>&gt;[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level %-28.28thread %-64.64logger{64} %X{medic.eventCode} %msg %ex%n&lt;<span class="hl-tag">/Pattern</span>&gt;
		&lt;<span class="hl-tag">/encoder</span>&gt;
	&lt;<span class="hl-tag">/appender</span>&gt;

	&lt;<span class="hl-tag">appender</span> <span class="hl-attribute">name</span>=<span class="hl-value">"EVENT_LOG_STDOUT"</span> <span class="hl-attribute">class</span>=<span class="hl-value">"org.eclipse.virgo.medic.log.logback.ReroutingAwareConsoleAppender"</span>&gt;
		&lt;<span class="hl-tag">encoder</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.classic.encoder.PatternLayoutEncoder"</span>&gt;
			&lt;<span class="hl-tag">Pattern</span>&gt;[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-28.28thread &amp;lt;%X{medic.eventCode}&amp;gt; %msg %ex%n&lt;<span class="hl-tag">/Pattern</span>&gt;
		&lt;<span class="hl-tag">/encoder</span>&gt;
	&lt;<span class="hl-tag">/appender</span>&gt;

	&lt;<span class="hl-tag">appender</span> <span class="hl-attribute">name</span>=<span class="hl-value">"EVENT_LOG_FILE"</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.RollingFileAppender"</span>&gt;
		&lt;<span class="hl-tag">file</span>&gt;serviceability/eventlogs/eventlog.log&lt;<span class="hl-tag">/file</span>&gt;
		&lt;<span class="hl-tag">rollingPolicy</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.FixedWindowRollingPolicy"</span>&gt;
			&lt;<span class="hl-tag">FileNamePattern</span>&gt;serviceability/eventlogs/eventlog_%i.log&lt;<span class="hl-tag">/FileNamePattern</span>&gt;
			&lt;<span class="hl-tag">MinIndex</span>&gt;1&lt;<span class="hl-tag">/MinIndex</span>&gt;
			&lt;<span class="hl-tag">MaxIndex</span>&gt;4&lt;<span class="hl-tag">/MaxIndex</span>&gt;
		&lt;<span class="hl-tag">/rollingPolicy</span>&gt;
		&lt;<span class="hl-tag">triggeringPolicy</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"</span>&gt;
			&lt;<span class="hl-tag">MaxFileSize</span>&gt;10MB&lt;<span class="hl-tag">/MaxFileSize</span>&gt;
		&lt;<span class="hl-tag">/triggeringPolicy</span>&gt;
		&lt;<span class="hl-tag">encoder</span> <span class="hl-attribute">class</span>=<span class="hl-value">"ch.qos.logback.classic.encoder.PatternLayoutEncoder"</span>&gt;
			&lt;<span class="hl-tag">Pattern</span>&gt;[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-28.28thread &amp;lt;%X{medic.eventCode}&amp;gt; %msg %ex%n&lt;<span class="hl-tag">/Pattern</span>&gt;
		&lt;<span class="hl-tag">/encoder</span>&gt;
	&lt;<span class="hl-tag">/appender</span>&gt;

	&lt;<span class="hl-tag">logger</span> <span class="hl-attribute">level</span>=<span class="hl-value">"INFO"</span> <span class="hl-attribute">additivity</span>=<span class="hl-value">"false"</span> <span class="hl-attribute">name</span>=<span class="hl-value">"org.eclipse.virgo.medic.eventlog.localized"</span>&gt;
		&lt;<span class="hl-tag">appender-ref</span> <span class="hl-attribute">ref</span>=<span class="hl-value">"EVENT_LOG_STDOUT"</span> /&gt;
		&lt;<span class="hl-tag">appender-ref</span> <span class="hl-attribute">ref</span>=<span class="hl-value">"EVENT_LOG_FILE"</span> /&gt;
	&lt;<span class="hl-tag">/logger</span>&gt;

	&lt;<span class="hl-tag">logger</span> <span class="hl-attribute">level</span>=<span class="hl-value">"INFO"</span> <span class="hl-attribute">additivity</span>=<span class="hl-value">"false"</span> <span class="hl-attribute">name</span>=<span class="hl-value">"org.eclipse.virgo.medic.eventlog.default"</span>&gt;
		&lt;<span class="hl-tag">appender-ref</span> <span class="hl-attribute">ref</span>=<span class="hl-value">"SIFTED_LOG_FILE"</span> /&gt;
		&lt;<span class="hl-tag">appender-ref</span> <span class="hl-attribute">ref</span>=<span class="hl-value">"LOG_FILE"</span> /&gt;
	&lt;<span class="hl-tag">/logger</span>&gt;

	&lt;<span class="hl-tag">root</span> <span class="hl-attribute">level</span>=<span class="hl-value">"INFO"</span>&gt;
		&lt;<span class="hl-tag">appender-ref</span> <span class="hl-attribute">ref</span>=<span class="hl-value">"SIFTED_LOG_FILE"</span> /&gt;
		&lt;<span class="hl-tag">appender-ref</span> <span class="hl-attribute">ref</span>=<span class="hl-value">"LOG_FILE"</span> /&gt;
	&lt;<span class="hl-tag">/root</span>&gt;

&lt;<span class="hl-tag">/configuration</span>&gt;</pre><p>Logback allows Virgo to use logger, appender, and encoder (layout) objects to log messages according to message type and level and to format these messages and define where they are written.  The default <code class="literal">serviceability.xml</code> file shown above includes four appenders and three loggers (two user and one root.)</p><p>The main information to get from this file is that Virgo writes log messages to four different locations that map to the four appenders:</p><div class="itemizedlist"><ul type="disc"><li><p>The <code class="literal">jmxConfigurator</code> provides a possibility to configure logback via JMX. For more information see <a class="ulink" href="http://logback.qos.ch/manual/jmxConfig.html" target="_top">JMX Configurator</a> documentation.</p></li><li><p>The <code class="literal">contextListener</code> propagates the changes made to the levels of logback loggers to Java Util Logging (JUL). For more information see <a class="ulink" href="http://logback.qos.ch/manual/configuration.html#LevelChangePropagator" target="_top">LevelChangePropagator</a> documentation.</p></li><li><p>The <code class="literal">SIFTED_LOG_FILE</code> appender logs both global and application-specific messages to the <code class="literal">$SERVER_HOME/serviceability/logs/</code><span class="emphasis"><em><code class="literal">applicationName</code></em></span><code class="literal">/log.log</code> file, where <span class="emphasis"><em><code class="literal">applicationName</code></em></span> refers to the name of the application.   The log messages for Virgo itself are logged to the <code class="literal">$SERVER_HOME/serviceability/logs/virgo-server/log.log</code> file. Because this appender creates different log files for each application, it is called a <span class="emphasis"><em>sifting appender</em></span>.   </p><p>
			The default behaviour of these trace files is that, once <code class="literal">log.log</code> reaches a 10Mb limit, it rolls into a series of files named
			<code class="literal">log_</code><span class="emphasis"><em>i</em></span><code class="literal">.log</code> where <span class="emphasis"><em>i</em></span> ranges from 1 to 4, and logging continues in
			a new <code class="literal">log.log</code> file. This is called its <span class="emphasis"><em>rolling policy</em></span>.
		</p><p>The <code class="literal">&lt;Pattern&gt;</code> element defines the format of each log message;  messages include the timestamp, the thread that generated the log message, the context-specific event code, and a stack trace of the exception, if any.  For example:</p><p><code class="literal">[2008-05-15 09:09:46.940] server-dm-2 org.apache.coyote.http11.Http11Protocol I Initializing Coyote HTTP/1.1 on http-48080</code></p></li><li><p>The <code class="literal">LOG_FILE</code> appender is very similar to the first one, but it logs <span class="emphasis"><em>all</em></span> log messages to the <code class="literal">$SERVER_HOME/serviceability/log/log.log</code> file rather than sifting application-specific messages to their own log file.  The rolling policy and message format for this appender is similar to that of the <code class="literal">SIFTED_LOG_FILE</code> appender.</p></li><li><p>The <code class="literal">EVENT_LOG_STDOUT</code> appender does not log messages to a file, but rather to the console window from which you started Virgo. For example:</p><p><code class="literal">[2010-10-25 16:20:49.367] Thread-3   &lt;WE0000I&gt; Starting web bundle 'org.eclipse.virgo.apps.admin.web' version '2.1.0.RELEASE' with context path '/admin'.</code></p></li><li><p>The <code class="literal">EVENT_LOG_FILE</code> appender logs only important events to the <code class="literal">$SERVER_HOME/serviceability/eventlogs/eventlog.log</code> file, and thus the volume of information is much lower than with the first two appenders. The rolling policy for the event log is the same as with the first two appenders, but the format of the messages is similar to that of the <code class="literal">EVENT_LOG_STDOUT</code> appender. </p></li></ul></div><p>The loggers and root logger specify the level of log that is written for each of the referenced appenders.</p><p>Typically, the default logging configuration as specified by the <code class="literal">serviceability.xml</code> file is adequate for all Virgo environments.  However, if you want to customize logging further, you can edit this file as well as the <code class="literal">org.eclipse.virgo.medic.properties</code>.  See the <a class="ulink" href="http://logback.qos.ch/manual/index.html" target="_top">logback documentation</a> for detailed information about the architecture and the configuration of Logback.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-provisioning-repository"></a>13.4&nbsp;Configuring the Local Provisioning Repository</h2></div></div></div><p>
		    You configure the locations that Virgo includes in its provisioning repository
		    by editing the <code class="literal">org.eclipse.virgo.repository.properties</code> file in the <code class="literal">$SERVER_HOME/configuration</code> directory.
		    </p><p>When you specify a property in the file, use the format <code class="literal">repository-name.property=value</code>, where:
		</p><div class="itemizedlist"><ul type="disc"><li><p><code class="literal">repository-name</code> refers to the name of the local repository.</p></li><li><p><code class="literal">property</code> refers to the name of a particular property.</p></li><li><p><code class="literal">value</code> refers to the value of the property.</p></li></ul></div><p>
		</p><p>For example, <code class="literal">ext.type=external</code> specifies that the <code class="literal">type</code> property of the repository
		with name <code class="literal">ext</code> is <code class="literal">external</code>.
        </p><p>
			The <code class="literal">chain</code> property specifies the order in which Virgo searches the individual repositories
			when it looks for dependencies.
			The <code class="literal">chain</code> property uses the names of the individual repositories as specified in the individual repository properties;
			for example, in the property <code class="literal">ext.type=external</code>, the name of the repository is <code class="literal">ext</code>.
		</p><p>
			The default repository configuration for a newly installed Virgo instance is as follows:
			</p><pre class="programlisting">ext.type=external
ext.searchPattern=repository/ext/{artifact}

usr.type=watched
usr.watchDirectory=repository/usr

chain=ext,usr</pre><p>
		</p><p>
		The default configuration shown above has two searchpaths corresponding to the two default sub-directories of the <code class="literal">$SERVER_HOME/repository</code> directory created when you first install Virgo: <code class="literal">ext</code> and <code class="literal">usr</code>. Virgo searches each of these individual repositories when locating entries for inclusion in the repository.  </p><p>
	        The <code class="literal">chain</code> property shows the order in which Virgo searches the individual repositories: first <code class="literal">ext</code> and then <code class="literal">usr</code>. 
	</p><p>
		The following table lists all the available properties that you can use to configure an individual repository.
		Individual repositories as well as the repository search chain  are configured in the file
		<code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.repository.properties</code>.
		</p><div class="table"><a name="repository-options-table"></a><p class="title"><b>Table&nbsp;13.5.&nbsp;Repository Properties</b></p><div class="table-contents"><table summary="Repository Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					Property
				</th><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					Description
				</th><th style="border-bottom: 1.0pt solid ; ">
					Default Value
				</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.type</code>
				</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "> 
                	<p>
                    	Specifies the type of path.  You can set this property to one of the following three valid values:
			    		</p><div class="itemizedlist"><ul type="disc"><li><p>
									<code class="literal">external</code>: Specifies that this path points to a number of directories that satisfy a given search pattern 
									and are local to the current Virgo instance. 
									Use the <code class="literal">searchPattern</code> property to specify the directory search pattern.
								</p></li><li><p>
									<code class="literal">watched</code>: Specifies that this path points to a single directory, local to the current Virgo instance.  
									Virgo regularly scans watched repositories so it automatically picks up any changes to the artifacts in the directory at runtime.
									Virgo also scans its local watched repositories when deploying any artifact. 
									Use the <code class="literal">watchDirectory</code> property to specify the watched directory 
									and the <code class="literal">watchInterval</code> property to specify how often Virgo checks the directory.
								</p></li><li><p>
									<code class="literal">remote</code>: Specifies that the path points to a remotely-hosted repository, 
									hosted by a remote instance of Virgo Server for Apache Tomcat.  
									Use the <code class="literal">uri</code> property to specify the full URI of the remote repository.  
									You can also specify the optional <code class="literal">indexRefreshInterval</code> property. 
								</p></li></ul></div><p>
              		</p> 

			  		<p>
						See <a class="link" href="#configuring-repository-watched-versus-external" title="Should I Configure a Watched or External Repository?">Watched or External Repository?</a> 
			  			for additional information about when to configure watched or external repositories for your particular environment.
			  		</p>
				</td><td style="border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em>no default</em></span>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.searchPattern</code>
				</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<p>
						Specifies the pattern that an external repository uses when deciding which local directories it should search 
						when identifying artifacts.  Use this property together with <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.type=external</code>. 
						See <a class="link" href="#configuring-provisioning-repository-search-paths" title="Search Paths: Additional Information">Search Paths: Additional Information</a> 
						for detailed information about specifying a search pattern.  
					</p>
				</td><td style="border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em>no default</em></span>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.watchDirectory</code>
				</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<p>
						Specifies the single directory of a watched repository. 
						You can specify either an absolute or relative pathname for the directory.  
						If you specify a relative pathname, it is relative  to the root of the Virgo installation (<code class="literal">$SERVER_HOME</code>).  
						Use this property together with <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.type=watched</code>.
					</p>
				</td><td style="border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em>no default</em></span>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.watchInterval</code>
				</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<p>
						Specifies the interval in seconds between checks of a watched directory by a watched repository.  
						Use this property together with <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.type=watched</code>. 
					</p>
				</td><td style="border-bottom: 1.0pt solid ; ">
					<code class="literal">5</code>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.uri</code>
				</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
					<p>
						Specifies the URI of the hosted repository to which a remote repository connects.  
						The value of this property takes the following format:
					</p>
					<p>						<code class="literal">http://</code><span class="emphasis"><em><code class="literal">host</code></em></span><code class="literal">:</code><span class="emphasis"><em><code class="literal">port</code></em></span><code class="literal">/org.eclipse.virgo.apps.repository/</code><span class="emphasis"><em><code class="literal">remote-repository-name</code></em></span>
					</p>
                    <p>
						where:
						</p><div class="itemizedlist"><ul type="disc"><li><p>
									<span class="emphasis"><em><code class="literal">host</code></em></span> refers to the computer on which the remote VTS
									instance hosts the remote repository.
								</p></li><li><p>
									<span class="emphasis"><em><code class="literal">port</code></em></span> refers to a Tomcat listener port of the remote VTS
									instance which hosts the remote repository.
								</p></li><li><p>
									<span class="emphasis"><em><code class="literal">remote-repository-name</code></em></span> refers to the name of the remote repository, 
									as specified in the <code class="literal">org.eclipse.virgo.apps.repository.properties</code> file of the remote VTS instance.
								</p></li></ul></div><p>
               		</p>
                    <p>
						Use this property together with <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.type=remote</code>.
                    </p>
				</td><td style="border-bottom: 1.0pt solid ; ">
					<span class="emphasis"><em>no default</em></span>
				</td></tr><tr><td style="border-right: 1.0pt solid ; ">
					<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.indexRefreshInterval</code>
				</td><td style="border-right: 1.0pt solid ; ">
					<p>
						Specifies the interval in seconds between checks by a remote repository that 
						its local copy of the hosted repository index is up-to-date 
						(a remote repository acts as a proxy for a hosted repository and thus it holds a local copy of the hosted repository&#8217;s index). 
					</p> 
					<p>
						Use this property together with <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.type=remote</code>.
					</p>
				</td><td style="">
					<code class="literal">5</code>
				</td></tr></tbody></table></div></div><p><br class="table-break">
	</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-repository-watched-versus-external"></a>Should I Configure a Watched or External Repository?</h3></div></div></div><p>The main difference between a watched and an external repository is that Virgo regularly scans watched directories 
		and automatically picks up any changed artifacts, 
		while Virgo scans external directories only at startup, and then only if there is no cached index available.  
		This means that Virgo always performs a scan of an external repository when you start the server 
		with the <code class="literal">-clean</code> (as this deletes the index) and only scans during a normal startup if the index isn&#8217;t there because, 
		for example, this is the first time you start the server. 
		</p><p>There is a performance cost associated with using a watched repository due to Virgo using resources 
		to scan the directory at the configured interval.  
		The cost is small if the watched repository contains just a few artifacts; however, 
		the performance cost increases as the number of artifacts increases.
		Note that Virgo re-scans its local watched repositories when deploying any artifact, so the scanning interval
		can be configured to be relatively long.
		</p><p> For this reason, we recommend that you put most of your dependencies in external repositories, 
		even when in development mode. 
		If you make any changes to the artifacts in the external repositories, 
		remember to restart Virgo with the <code class="literal">-clean</code> option so that the server picks up any changes.  
		Use watched directories for artifacts that you are prototyping, actively updating, or when adding new dependencies 
		so that Virgo quickly and easily picks them up.  
		To increase performance even during development, however, you can use an external repository for most of your dependencies, 
		in particular the ones that are fairly static. 
		</p><p>In production environments, where dependencies should not change, 
		we recommend that you use <span class="emphasis"><em>only</em></span> external repositories.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-provisioning-repository-search-paths"></a>Search Paths: Additional Information</h3></div></div></div><p>
	            The <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.searchPattern</code> and 
	            <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.watchDirectory</code> properties specify search paths 
	            for external and watched repositories, respectively, 
	            that define a physical location that Virgo searches when looking for a library or bundle dependency. 
	            If a search path is relative, its location is relative to the root of the installation, 
	            in other words, the <code class="literal">$SERVER_HOME</code> directory.
   	        </p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="configuring-provisioning-repository-search-paths-wildcards"></a>Using Wildcards</h4></div></div></div><p>
		            Search paths specified with the <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.searchPattern</code> property 
		            provide support for wildcards. 
		            In the entries above, the path segments surrounded by curly braces, 
		            for example <code class="literal">{bundle}</code> and <code class="literal">{library}</code>, 
		            are wildcards entries for a directory with any name. 
		            Allowing wildcards to be named in this way is intended to improve the readability of search path configuration.
		        </p><p>
			        In addition to supporting the above-described form of wildcards, Virgo also supports Ant-style paths, 
			        that is <code class="literal">*</code> and <code class="literal">**</code> can be used to represent any directory and 
			        any series of directories, respectively. 
			        For example, <code class="literal">repository/usr/{bundle}</code> and <code class="literal">repository/usr/*</code> 
			        are equivalent.
			    </p><p>
				    A common usage of the <code class="literal">**</code> wildcard is to allow dependencies stored in a directory structure of varying depth, 
				    such as a local Maven repository, to be provisioned by the Virgo.
				</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-provisioning-repository-using-system-properties"></a>Using System Properties</h3></div></div></div><p>
				You can use system properties when specifying the values of the <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.searchPattern</code>, 
				<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.watchDirectory</code>,
				<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.watchInterval</code>,
				<span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.uri</code>, 
				and <span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.indexRefreshInterval</code>
				properties. 
				You reference system properties as <code class="literal">${system.property.name}</code>; 
				for example, a search path of <code class="literal">${user.home}/repository/bundles</code> references the
				<code class="literal">repository/bundles</code> directory in the user&#8217;s home directory.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-provisioning-repository-examples"></a>Example Repository Configurations</h3></div></div></div><p>
		        The following examples provide sample configuration that could be used for some common use cases.
		    </p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="configuring-provisioning-repository-examples-ivy"></a>Add an Ivy cache repository</h4></div></div></div><p>The following example shows how to add an external repository whose location is actually an Ivy cache.</p><p><span class="emphasis"><em>Note that Ivy repositories can contain bundles which will conflict with the normal operation of Virgo, so care should
				be exercised when adding such an external repository.</em></span></p><pre class="programlisting">ext.type=external
ext.searchPattern=repository/ext/{artifact}

usr.type=watched
usr.watchDirectory=repository/usr

ivy-repo.type=external
ivy-repo.searchPattern=${user.home}/.ivy2/cache/{org}/{name}/{version}/{bundle}.jar

chain=ext,usr,ivy-repo</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="configuring-provisioning-repository-examples-maven"></a>Add a Maven local repository</h4></div></div></div><p>The following example shows how to add an external repository whose location is actually a Maven repository.</p><p><span class="emphasis"><em>Note that Maven repositories can contain bundles which will conflict with the normal operation of Virgo, so care should
				be exercised when adding such an external repository.</em></span></p><pre class="programlisting">ext.type=external
ext.searchPattern=repository/ext/{artifact}

usr.type=watched
usr.watchDirectory=repository/usr

maven-repo.type=external
maven-repo.searchPattern=${user.home}/.m2/repository/**/{bundle}.jar

chain=ext,usr,maven-repo</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="configuring-repository-examples-remote-watched"></a>Add remote and watched repositories</h4></div></div></div><p>The following example shows the default <code class="literal">org.eclipse.virgo.repository.properties</code> file 
		from a freshly-installed Virgo instance, but then updated to include new remote and watched repositories.  
		Both of these repositories are part of the repository chain. 
		</p><p>The remote repository is called <code class="literal">remote-repo</code>.  
		The URI of the hosted repository from which <code class="literal">remote-repo</code> gets its artifacts is 
		<code class="literal">http://my-host:8080/org.eclipse.virgo.apps.repository/my-hosted-repo</code>;
		this means that there is a VTS instance running on host <code class="literal">my-host</code> 
		whose Tomcat server listens at the default port, <code class="literal">8080</code>, 
		and this server instance hosts a repository called <code class="literal">my-hosted-repo</code>, 
		configured in the <code class="literal">org.eclipse.virgo.apps.repository.properties</code> file of the remote server instance.  
		The remote repository checks for changes in the hosted repository every 30 seconds.
		</p><p>The watched repository is called <code class="literal">watched-repo</code> and the directory that holds the artifacts 
		is <code class="literal">repository/watched</code>, 
		relative to the installation directory of the VTS instance.  
		The server checks for changes in this watched repository every 5 seconds.
		</p><pre class="programlisting">ext.type=external
ext.searchPattern=repository/ext/{artifact}

usr.type=watched
usr.watchDirectory=repository/usr

remote-repo.type=remote
remote-repo.uri=http://my-host:8080/org.eclipse.virgo.apps.repository/my-hosted-repo
remote-repo.indexRefreshInterval=30

watched-repo.type=watched
watched-repo.watchedDirectory=repository/watched
watched-repo.watchedInterval=5

chain=ext,usr,remote-repo,watched-repo</pre></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-hosted-repo"></a>13.5&nbsp;Configuring a Hosted Repository</h2></div></div></div><p>You configure a VTS instance to host a repository 
		by editing the <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.apps.repository.properties</code> file; 
		remote clients can then access the artifacts in this hosted repository and use them locally.
		</p><p>When you specify a property in the file, use the format <code class="literal">repository-name.property=value</code>, where:
             </p><div class="itemizedlist"><ul type="disc"><li><p><code class="literal">repository-name</code> refers to the name of the hosted repository.</p></li><li><p><code class="literal">property</code> refers to the name of a particular property.</p></li><li><p><code class="literal">value</code> refers to the value of the property.</p></li></ul></div><p> 
              </p><p>For example, <code class="literal">my-hosted-repo.type=external</code> specifies that the <code class="literal">type</code> property 
             of the <code class="literal">my-hosted-repo</code> repository is <code class="literal">external</code>.
             </p><p>The following table lists the properties that you can include in the <code class="literal">org.eclipse.virgo.apps.repository.properties</code> file. 
		</p><div class="table"><a name="hosted-repository-properties-table"></a><p class="title"><b>Table&nbsp;13.6.&nbsp;Hosted Repository Properties</b></p><div class="table-contents"><table summary="Hosted Repository Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Property</th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.type</code></td><td style="border-bottom: 1.0pt solid ; ">Specifies the type of path of the hosted repository.  
				All paths are local to the current VTS instance. 
				You can set this property to one of the following valid values:
	<div class="itemizedlist"><ul type="disc"><li><p>
    	<code class="literal">external</code>: Specifies that this path points to a number of directories that satisfy a given search pattern. 
    	Use the <code class="literal">searchPattern</code> property to specify the directory search pattern.
    	</p></li><li><p>
	<code class="literal">watched</code>: Specifies that this path points to a single directory. 
	Virgo regularly scans watched repositories so it automatically picks up any changes to the artifacts in the directory at runtime. 
	Use the <code class="literal">watchDirectory</code> property to specify the actual watched directory and the <code class="literal">watchInterval</code> property 
	to specify how often VTS checks the directory.
	</p></li></ul></div>
			  <p>See <a class="link" href="#configuring-repository-watched-versus-external" title="Should I Configure a Watched or External Repository?">Watched or External Repository?</a> 
			  for additional information about when to configure watched or external repositories for your particular environment.
			  </p>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.searchPattern</code></td><td style="border-bottom: 1.0pt solid ; "> <p>Specifies the pattern that an external hosted repository uses when deciding which 
			local directories it should search when identifying artifacts.  
			Use this property when <code class="literal">repository-name.type=external</code>. 
			See <a class="link" href="#configuring-provisioning-repository-search-paths" title="Search Paths: Additional Information">Search Paths: Additional Information</a> 
			for detailed information about specifying a search pattern.  
			</p> </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.watchDirectory</code></td><td style="border-bottom: 1.0pt solid ; "> <p>Specifies the single directory of a watched hosted repository. 
			You can specify either an absolute or relative pathname for the directory.  
			If you specify a relative pathname, it is relative to the root of the VTS installation (<code class="literal">$SERVER_HOME</code>).  
			Use this property when <code class="literal">repository-name.type=watched</code>.
			</p></td></tr><tr><td style="border-right: 1.0pt solid ; "><span class="emphasis"><em><code class="literal">repository-name</code></em></span><code class="literal">.watchInterval</code></td><td style=""> <p>Specifies the interval in seconds between checks of a watched directory by a watched hosted repository.  
			This property is optional.  Use this property when <code class="literal">repository-name.type=watched</code>. 
			</p> </td></tr></tbody></table></div></div><br class="table-break"><p>The following sample shows a <code class="literal">org.eclipse.virgo.apps.repository.properties</code> file with a single external repository 
		called <code class="literal">my-hosted-repo</code> with search pattern <code class="literal">$SERVER_HOME/repository/hosted/*</code>.
		</p><pre class="programlisting">my-hosted-repo.type=external
my-hosted-repo.searchPattern=repository/hosted/*</pre><p>
		</p><p>See <a class="link" href="#configuring-repository-examples-remote-watched" title="Add remote and watched repositories">Example of watched and remote repositories</a> 
	for details on how a local repository can remotely access the artifacts in this hosted repository.
	</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-kernel"></a>13.6&nbsp;Configuring the Kernel and User Region</h2></div></div></div><p>This section provides information about configuring the Virgo kernel and the User Region.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-kernel-properties"></a>Configuring the Kernel</h3></div></div></div><p>To change any of the kernel properties, provide the new value to the startup script. The following table describes all properties.</p><div class="table"><a name="configuring-kernel-table"></a><p class="title"><b>Table&nbsp;13.7.&nbsp;Kernel Configuration Properties</b></p><div class="table-contents"><table summary="Kernel Configuration Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
								Property (prefixed by <code class="literal">org.eclipse.virgo</code>)
							</th><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
								Description
							</th><th style="border-bottom: 1.0pt solid ; ">
								Default Value
							</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
								<code class="literal">.kernel.home</code>
							</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
								Specifies the location of the Virgo Kernel.
							</td><td style="border-bottom: 1.0pt solid ; ">
								<code class="literal">$SERVER_HOME</code>
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
								<code class="literal">.kernel.config</code>
							</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
								Specifies the location of the Virgo Kernel and User Region <a class="link" href="#configuring-kernel-files" title="Configuration Files">configuration files</a>. 		
								The location of the configuration files can also be specified using
								<a class="link" href="#starting-stopping-configuration-directory" title="7.5&nbsp;Starting with a Custom Configuration Directory"><code class="literal">-configDir</code> startup parameter</a>.
							</td><td style="border-bottom: 1.0pt solid ; ">
								<code class="literal">$SERVER_HOME/configuration</code>
							</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
								<code class="literal">.kernel.domain</code>
							</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
								Specifies the <a class="ulink" href="http://download.oracle.com/javase/6/docs/api/javax/management/ObjectName.html" target="_top">JMX domain</a> that should be
								used by the Virgo Kernel.
							</td><td style="border-bottom: 1.0pt solid ; ">
								<code class="literal">org.eclipse.virgo.kernel</code>
							</td></tr><tr><td style="border-right: 1.0pt solid ; ">
								<code class="literal">.kernel.startup.wait.limit</code>
							</td><td style="border-right: 1.0pt solid ; ">
								Specifies the amount of time, in seconds, after which various operations time out out while trying to start the kernel.
								See <a class="link" href="#configuring-framework-properties" title="Configuring OSGi Framework Properties">Configuring OSGi Framework Properties</a> for the recommended way
								to configure this parameter.
							</td><td style=""><code class="literal">180</code>
							</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-kernel-files"></a>Configuration Files</h3></div></div></div><p>The configuration of the Virgo Kernel and User Region by default is located in the <code class="literal">$SERVER_HOME/configuration</code> directory:</p><div class="table"><a name="configuring-kernel-files-table"></a><p class="title"><b>Table&nbsp;13.8.&nbsp;Kernel Configuration Files </b></p><div class="table-contents"><table summary="Kernel Configuration Files " style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Property File</th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">org.eclipse.virgo.kernel.properties</code></td><td style="border-bottom: 1.0pt solid ; ">Configures <a class="link" href="#configuring-deployment" title="Configuring Deployment">deployment</a>. </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">org.eclipse.virgo.kernel.userregion.properties</code></td><td style="border-bottom: 1.0pt solid ; ">Configures the <a class="link" href="#configuring-user-region" title="Configuring the User Region">User Region</a> of Virgo.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">org.eclipse.virgo.kernel.users.properties</code></td><td style="border-bottom: 1.0pt solid ; ">Configures the <a class="link" href="#configuring-authentication" title="Configuring Authentication">users that are allowed to access</a> the Admin Console, and roles to which they map. </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">org.eclipse.virgo.kernel.jmxremote.access.properties</code></td><td style="border-bottom: 1.0pt solid ; ">Configures the <a class="link" href="#configuring-authentication" title="Configuring Authentication">permissions for users</a> that are allowed to access the Admin Console. </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">org.eclipse.virgo.kernel.authentication.config</code></td><td style="border-bottom: 1.0pt solid ; ">Configures the <a class="link" href="#configuring-authentication" title="Configuring Authentication">Java Authentication and Authorization Service (JAAS)</a> for the Tomcat server users.</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">osgi.console.ssh.properties</code></td><td style="border-bottom: 1.0pt solid ; ">Configures the kernel SSH console. See <a class="xref" href="#admin-shell-enable" title="8.1&nbsp;Enabling the Equinox Console">Section&nbsp;8.1, &#8220;Enabling the Equinox Console&#8221;</a>.</td></tr><tr><td style="border-right: 1.0pt solid ; "><code class="literal">osgi.console.telnet.properties</code></td><td style="">Configures the kernel telnet console. See <a class="xref" href="#admin-shell-enable" title="8.1&nbsp;Enabling the Equinox Console">Section&nbsp;8.1, &#8220;Enabling the Equinox Console&#8221;</a>.</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-deployment"></a>Configuring Deployment</h3></div></div></div><p>
			You can configure various properties of deployment: the pickup directory into which you copy applications for hot-deployment, the deployment timeout,
			and whether or not bundles are unpacked during deployment.
		</p><p>To change any of these properties, edit the <code class="literal">deployer.XXX</code> properties of the <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.kernel.properties</code> file.  The following table describes these properties.  </p><div class="table"><a name="configuring-deployment-table"></a><p class="title"><b>Table&nbsp;13.9.&nbsp;Deployment Configuration Properties</b></p><div class="table-contents"><table summary="Deployment Configuration Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						Property
					</th><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						Description
					</th><th style="border-bottom: 1.0pt solid ; ">
						Default Value
					</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						<code class="literal">deployer.pickupDirectory</code>
					</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						Specifies the absolute or relative path to the pickup directory to which you copy applications for hot-deployment.
						Relative paths are relative to <code class="literal">$SERVER_HOME</code>.
					</td><td style="border-bottom: 1.0pt solid ; ">
						<code class="literal">./pickup</code>
					</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						<code class="literal">deployer.timeout</code>
					</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						Specifies the amount of time, in seconds, after which Virgo times out while trying to deploy an artifact.
						If you want to disable deployment timeout, specify <code class="literal">0</code>.
					</td><td style="border-bottom: 1.0pt solid ; ">
						  <code class="literal">300</code>  
					</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						<code class="literal">deployer.scanIntervalMillis</code>
					</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						Specifies the scan interval, in milliseconds, used to survey the pickup directory.
					</td><td style="border-bottom: 1.0pt solid ; ">
						  <code class="literal">1000</code>
					</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						<code class="literal">deployer.unpackBundles</code>
					</td><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
						Determines whether or not bundles (with file extension <code class="literal">.jar</code> or <code class="literal">.war</code>) are unpacked
						during deployment. The value must be either <code class="literal">true</code> or <code class="literal">false</code>.
						<p>
							If you want to deploy bundles packed, specify <code class="literal">false</code>.
							This option can help alleviate a known issue with <a class="link" href="#long-work-paths" title="B.6&nbsp;Long Work Directory Paths under Windows">long work directory paths under Windows</a>.
						</p>
						<p>
							Note that web applications may behave differently depending on whether they are deployed packed or unpacked.
							Certain servlet API methods return <code class="literal">null</code> when a web application is deployed packed.
						</p>
					</td><td style="border-bottom: 1.0pt solid ; ">
						  <code class="literal">true</code>  
					</td></tr><tr><td style="border-right: 1.0pt solid ; ">
						<code class="literal">WABHeaders</code>
					</td><td style="border-right: 1.0pt solid ; ">
                    	<p>
                    		This kernel property is only relevant for Virgo Nano Web. For the corresponding property in Virgo Server for Apache Tomcat, see <a class="link" href="#configuring-web" title="13.8&nbsp;Configuring the Web Integration Layer">Configuring the Web Integration Layer</a>.
                    	</p>
						<p>
							Specifies how Web Application Bundle manifest headers are processed.
							See "Web Application Manifest Processing" in the
							<a class="ulink" href="../../virgo-programmer-guide/html/index.html" target="_top">Programmer Guide</a> for details.
						</p>
						<p>
							A value of <code class="literal">strict</code> causes Virgo Nano Web to interpret certain headers in strict compliance with
							the OSGi Web Applications specification if they are not specified.
						</p>
						<p>
							A value of <code class="literal">defaulted</code> causes Virgo Nano Web to set certain headers to default values if they are not specified.
							<span class="emphasis"><em>This value is provided as a migration aid and may not be supported in future releases.</em></span>
						</p>
					</td><td style="">
						<code class="literal">strict</code>
					</td></tr></tbody></table></div></div><br class="table-break"><p>The following listing displays the default configuration distributed with Virgo; only relevant sections of the <code class="literal">org.eclipse.virgo.kernel.properties</code> file are shown. </p><pre class="programlisting">deployer.timeout=300
deployer.pickupDirectory=pickup
deployer.scanIntervalMillis=1000</pre><p>So the default deployment timeout is 300 seconds, the default pickup directory is <code class="literal">$SERVER_HOME/pickup</code> and the default scan interval is <code class="literal">1000</code>.
            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-user-region"></a>Configuring the User Region</h3></div></div></div><p>
			The User Region is the subsystem of Virgo that
			supports deployed applications, both your own user applications and
			those of the server itself, such as the Admin Console. The User Region
			is deliberately isolated from the kernel, which protects the kernel from interference by applications.
		</p><p>
			You configure the User Region by updating properties in the
			<code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.kernel.userregion.properties</code>
			file; these properties are described in the following table.  
		</p><p>
			<span class="bold"><strong>WARNING:</strong></span>
			We strongly recommend that you update only the
			<code class="literal">initialArtifacts</code>
			property; updating other properties could cause
			Virgo to fail. These properties are documented for your
			information.
		</p><div class="table"><a name="configuring-user-region-table"></a><p class="title"><b>Table&nbsp;13.10.&nbsp;User Region Configuration Properties</b></p><div class="table-contents"><table summary="User Region Configuration Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Property</th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">baseBundles</code></td><td style="border-bottom: 1.0pt solid ; ">Specifies the hard-coded list of bundles that Virgo installs directly into the User Region.
					Virgo does not perform any automatic dependency satisfaction for these bundles; in other words, you only get the bundles
					in the list and nothing more. </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">bundleImports</code></td><td style="border-bottom: 1.0pt solid ; ">
					<p>
						Specifies the bundles in the kernel that Virgo imports into the User Region so that they are visible to bundles in the User Region.
						This property supports an optional <code class="literal">bundle-version</code> attribute which specifies a version range.
						By default only the system bundle is imported.
					</p>
					<p>
						Note that packages exported by these bundles are <span class="emphasis"><em>not</em></span> automatically made available in the User Region: these must be specified using the
						<code class="literal">packageImports</code> property.
					</p>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">packageImports</code></td><td style="border-bottom: 1.0pt solid ; ">
					<p>
						Specifies the packages in the kernel that Virgo imports into the User Region so that they are in turn available to be
						imported by bundles in the User Region.
						This property supports a <code class="literal">.*</code> wildcard which is expanded based on the packages available in the kernel
						when the User Region is created.
						For example, <code class="literal">org.eclipse.virgo.util.*</code> will import all packages that start with
						<code class="literal">org.eclipse.virgo.util.</code> (but <span class="emphasis"><em>not</em></span> the package <code class="literal">org.eclipse.virgo.util</code>
						which would need to be specified separately to be imported).
					</p>
					<p>
						The property also supports matching attributes such as <code class="literal">version</code>, <code class="literal">bundle-symbolic-name</code>,
				 		<code class="literal">bundle-version</code>, and user-defined attributes. This can be used to import all the packages of a bundle imported using the
						<code class="literal">bundleImports</code> property.
						For example the following imports all the packages of the system bundle:
						</p><pre class="programlisting">packageImports=*;bundle-symbolic-name="org.eclipse.osgi",\
 ...</pre><p>
						Note that if a package is specified more than once in <code class="literal">packageImports</code>, the last occurrence is used and the earlier
						occurrences are ignored.
						For this reason, it is recommended that imports specifying matching attributes are placed earlier in the list than other imports so that
						if an import is	specified with and without matching attributes, the form without the matching attributes is used.
					</p>
				</td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">serviceImports</code></td><td style="border-bottom: 1.0pt solid ; ">Specifies the services in the kernel that are imported into the User Region so they are available to bundles in the User Region.  </td></tr><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">serviceExports</code></td><td style="border-bottom: 1.0pt solid ; ">Specifies the services in the User Region that are exported to the kernel so they are available to bundles in the kernel.  </td></tr><tr><td style="border-right: 1.0pt solid ; "><code class="literal">initialArtifacts</code></td><td style="">
					<p>
						Specifies the artifacts that Virgo deploys into the User Region when the server starts.
						Virgo performs dependency satisfaction when it deploys these artifacts.
						This means that you only need to list the top-level artifacts that you care about; Virgo automatically installs,
						from the repository, any other artifacts upon which they depend.
					</p>
					<p>
						The artifacts are specified as a comma separated list of URI strings of the form:
						</p><pre class="programlisting">repository:type/name[/version]</pre><p>
						where <code class="literal">type</code> is the artifact type (e.g. "plan", "par", "bundle",
						"configuration"), <code class="literal">name</code> is the (symbolic) name of the artifact, and, optionally,
						<code class="literal">version</code> is the version of the artifact.
						If <code class="literal">version</code> is omitted and there is at least one artifact in the repository with the given type and name, then the
						artifact with the highest version is selected.
						So, for example, the following entries are valid:
						</p><pre class="programlisting">initialArtifacts=...,\
 repository:plan/APlan,\
 repository:bundle/ABundle/1.0</pre><p>
					</p>
				</td></tr></tbody></table></div></div><br class="table-break"><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="configuring-user-region-consoles"></a>Configurating User Region Consoles</h4></div></div></div><p>The configuration of the User Region consoles is located by default in the <code class="literal">$SERVER_HOME/repository/ext</code> directory:</p><div class="table"><a name="configuring-user-region-consoles-table"></a><p class="title"><b>Table&nbsp;13.11.&nbsp;User Region Console Configuration Files </b></p><div class="table-contents"><table summary="User Region Console Configuration Files " style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">Property File</th><th style="border-bottom: 1.0pt solid ; ">Description</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; "><code class="literal">osgi.console.ssh.properties</code></td><td style="border-bottom: 1.0pt solid ; ">Configures the User Region SSH console. See <a class="xref" href="#admin-shell-enable" title="8.1&nbsp;Enabling the Equinox Console">Section&nbsp;8.1, &#8220;Enabling the Equinox Console&#8221;</a>.</td></tr><tr><td style="border-right: 1.0pt solid ; "><code class="literal">osgi.console.telnet.properties</code></td><td style="">Configures the User Region telnet console. See <a class="xref" href="#admin-shell-enable" title="8.1&nbsp;Enabling the Equinox Console">Section&nbsp;8.1, &#8220;Enabling the Equinox Console&#8221;</a>.</td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-authentication"></a>Configuring Authentication</h3></div></div></div><p>
		Virgo uses the
		<a class="ulink" href="http://java.sun.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html" target="_top">Java Authentication and Authorization Service (JAAS)</a>
		framework to authenticate the administration user that connects to Web
		Servers using the Admin Console. This section describes
		how the authentication mechanism is configured by default, and the
		files that you need to update if you want to change the administration
		user, change their password, and so on.
	</p><p>The <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.kernel.authentication.config</code> file configures the underlying authentication technology for Virgo.  The short file consists of the following entries:</p><pre class="programlisting">virgo-kernel {
        org.eclipse.virgo.kernel.authentication.KernelLoginModule REQUIRED;
};
equinox_console {
	org.eclipse.virgo.kernel.authentication.KernelLoginModule REQUIRED;
};</pre><p>The entry named <code class="literal">virgo-kernel</code> corresponds to the <code class="literal">&lt;Realm&gt;</code> element in the <code class="literal">$SERVER_HOME/configuration/tomcat-server.xml</code> file that configures the JAAS authentication mechanism for the <code class="literal">Catalina</code> service of the <a class="link" href="#configuring-tomcat" title="13.7&nbsp;Configuring the Embedded Tomcat Servlet Container">Tomcat servlet container</a>.  The <code class="literal">virgo-kernel</code> entry specifies that the JAAS LoginModule that Virgo uses to authenticate users is <code class="literal">org.eclipse.virgo.kernel.authentication.KernelLoginModule</code> and that this <code class="literal">KernelLoginModule</code> is required to "succeed" in order for authentication to be considered successful. The <code class="literal">KernelLoginModule</code> succeeds only if the name and password supplied by the user are the ones it expects.  The default administration username/password pair for VTS is <code class="literal">admin/springsource</code>. </p><p>
			The entry named <code class="literal">equinox_console</code> controls ssh authentication for the Virgo shell. It also uses the <code class="literal">KernelLoginModule</code>.
		</p><p>You configure the administration user in the <code class="literal">org.eclipse.virgo.kernel.users.properties</code> file.  The default file for a freshly installed Virgo is as follows:</p><pre class="programlisting">##################
# User definitions
##################
user.admin=springsource

##################
# Role definitions
##################
role.admin=admin</pre><p>
		The administration user that connect to the Admin Console must have the
		<code class="literal">admin</code>
		role. The preceding file shows how, by default, the
		<code class="literal">admin</code>
		role is assigned the
		<code class="literal">admin</code>
		user with password
		<code class="literal">springsource</code>.
	</p><p>If you want to change the administration user, update the <code class="literal">org.eclipse.virgo.kernel.users.properties</code> file.  For example, if you want the <code class="literal">juliet</code> user, with password <code class="literal">supersecret</code>, to be the new adminstration user, update the file as shown:</p><pre class="programlisting">##################
# User definitions
##################
user.juliet=supersecret

##################
# Role definitions
##################
role.admin=juliet</pre><p>Be sure to restart Virgo after you make this change for it to take effect.</p><p>The final file involved in Virgo authentication is <code class="literal">$SERVER_HOME/configuration/org.eclipse.virgo.kernel.jmxremote.access.properties</code>.  This file specifies the JMX access privileges that the administration user has; by default they are read and write, as shown in the following listing:</p><pre class="programlisting">admin=readwrite</pre><p>
		The only other value you can enter is
		<code class="literal">readonly</code>, which means that the adminstration user would only be able to <span class="emphasis"><em>view</em></span>
		information using the Admin Console.
	</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-tomcat"></a>13.7&nbsp;Configuring the Embedded Tomcat Servlet Container</h2></div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.gif"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">Virgo Nano uses the default Gemini Web configuration. The details described below may still apply.</td></tr></table></div><p>
			Virgo
			embeds an OSGi-enhanced version of the <a class="ulink" href="http://tomcat.apache.org/" target="_top">Tomcat Servlet Container</a>
			in order to provide support for deploying Java EE WARs and OSGi <span class="emphasis"><em>Web Application Bundles</em></span>. 
			You configure the embedded Servlet container using the standard Apache Tomcat configuration.   The main difference is that the configuration file is called <code class="filename">tomcat-server.xml</code> rather than <code class="literal">server.xml</code>.  As with the other Virgo configuration files, the <code class="literal">tomcat-server.xml</code> file is located in the <code class="literal">$SERVER_HOME/configuration</code> directory.
			Another difference is that not all standard Apache Tomcat configuration is supported in Virgo Server for Apache Tomcat: the restrictions are described in the
			remainder of this section.
		</p><p>Here's an extract of the default configuration distributed with the VTS.
		</p><pre class="programlisting">&lt;<span class="hl-tag">?xml version='1.0' encoding='utf-8'?</span>&gt;
&lt;<span class="hl-tag">Server</span> <span class="hl-attribute">port</span>=<span class="hl-value">"8005"</span> <span class="hl-attribute">shutdown</span>=<span class="hl-value">"SHUTDOWN"</span>&gt;

	&lt;<span class="hl-tag">Listener</span> <span class="hl-attribute">className</span>=<span class="hl-value">"org.apache.catalina.core.AprLifecycleListener"</span> <span class="hl-attribute">SSLEngine</span>=<span class="hl-value">"on"</span> /&gt;
	&lt;<span class="hl-tag">Listener</span> <span class="hl-attribute">className</span>=<span class="hl-value">"org.apache.catalina.core.JasperListener"</span> /&gt;
	&lt;<span class="hl-tag">Listener</span> <span class="hl-attribute">className</span>=<span class="hl-value">"org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"</span> /&gt;

	&lt;<span class="hl-tag">Listener</span> <span class="hl-attribute">className</span>=<span class="hl-value">"org.eclipse.virgo.web.tomcat.ServerLifecycleLoggingListener"</span>/&gt;

	&lt;<span class="hl-tag">Service</span> <span class="hl-attribute">name</span>=<span class="hl-value">"Catalina"</span>&gt;
		&lt;<span class="hl-tag">Connector</span> <span class="hl-attribute">port</span>=<span class="hl-value">"8080"</span> <span class="hl-attribute">protocol</span>=<span class="hl-value">"HTTP/1.1"</span>
			<span class="hl-attribute">connectionTimeout</span>=<span class="hl-value">"20000"</span>
			<span class="hl-attribute">redirectPort</span>=<span class="hl-value">"8443"</span> /&gt;

		&lt;<span class="hl-tag">Connector</span> <span class="hl-attribute">port</span>=<span class="hl-value">"8443"</span> <span class="hl-attribute">protocol</span>=<span class="hl-value">"HTTP/1.1"</span> <span class="hl-attribute">SSLEnabled</span>=<span class="hl-value">"true"</span>
			<span class="hl-attribute">maxThreads</span>=<span class="hl-value">"150"</span> <span class="hl-attribute">scheme</span>=<span class="hl-value">"https"</span> <span class="hl-attribute">secure</span>=<span class="hl-value">"true"</span>
			<span class="hl-attribute">clientAuth</span>=<span class="hl-value">"false"</span> <span class="hl-attribute">sslProtocol</span>=<span class="hl-value">"TLS"</span>
			<span class="hl-attribute">keystoreFile</span>=<span class="hl-value">"configuration/keystore"</span>
			<span class="hl-attribute">keystorePass</span>=<span class="hl-value">"changeit"</span>/&gt;

		&lt;<span class="hl-tag">Connector</span> <span class="hl-attribute">port</span>=<span class="hl-value">"8009"</span> <span class="hl-attribute">protocol</span>=<span class="hl-value">"AJP/1.3"</span> <span class="hl-attribute">redirectPort</span>=<span class="hl-value">"8443"</span> /&gt;

		&lt;<span class="hl-tag">Engine</span> <span class="hl-attribute">name</span>=<span class="hl-value">"Catalina"</span> <span class="hl-attribute">defaultHost</span>=<span class="hl-value">"localhost"</span>&gt;
			&lt;<span class="hl-tag">Realm</span> <span class="hl-attribute">className</span>=<span class="hl-value">"org.apache.catalina.realm.JAASRealm"</span> <span class="hl-attribute">appName</span>=<span class="hl-value">"virgo-kernel"</span>
					<span class="hl-attribute">userClassNames</span>=<span class="hl-value">"org.eclipse.virgo.kernel.authentication.User"</span>
					<span class="hl-attribute">roleClassNames</span>=<span class="hl-value">"org.eclipse.virgo.kernel.authentication.Role"</span>/&gt;

			&lt;<span class="hl-tag">Host</span> <span class="hl-attribute">name</span>=<span class="hl-value">"localhost"</span>  <span class="hl-attribute">appBase</span>=<span class="hl-value">"webapps"</span>
					<span class="hl-attribute">unpackWARs</span>=<span class="hl-value">"false"</span> <span class="hl-attribute">autoDeploy</span>=<span class="hl-value">"false"</span>
					<span class="hl-attribute">deployOnStartup</span>=<span class="hl-value">"false"</span> <span class="hl-attribute">createDirs</span>=<span class="hl-value">"false"</span>&gt;

				&lt;<span class="hl-tag">Valve</span> <span class="hl-attribute">className</span>=<span class="hl-value">"org.apache.catalina.valves.AccessLogValve"</span> <span class="hl-attribute">directory</span>=<span class="hl-value">"serviceability/logs/access"</span>
					<span class="hl-attribute">prefix</span>=<span class="hl-value">"localhost_access_log."</span> <span class="hl-attribute">suffix</span>=<span class="hl-value">".txt"</span> <span class="hl-attribute">pattern</span>=<span class="hl-value">"common"</span> <span class="hl-attribute">resolveHosts</span>=<span class="hl-value">"false"</span>/&gt;

				&lt;<span class="hl-tag">Valve</span> <span class="hl-attribute">className</span>=<span class="hl-value">"org.eclipse.virgo.web.tomcat.ApplicationNameTrackingValve"</span>/&gt;
			&lt;<span class="hl-tag">/Host</span>&gt;
		&lt;<span class="hl-tag">/Engine</span>&gt;
	&lt;<span class="hl-tag">/Service</span>&gt;
&lt;<span class="hl-tag">/Server</span>&gt;</pre><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="overview-tomcat-servlet-container"></a>Description of the Default Apache Tomcat Configuration</h3></div></div></div><p>
		  The following bullets describe the main elements and attributes in the default <code class="literal">tomcat-server.xml</code> file; for details about updating this file to further configure the embedded Apache Tomcat server, see the <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/config/index.html" target="_top">Apache Tomcat Configuration Reference</a>.
		</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip: Relative paths"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.gif"></td><th align="left">Relative paths</th></tr><tr><td align="left" valign="top"><p>If the configured path to a directory or file does not represent an absolute path, Virgo typically interprets it as a path relative to the <code class="filename">$SERVER_HOME</code> directory.</p></td></tr></table></div><div class="itemizedlist"><ul type="disc"><li><p>The root element of the <code class="literal">tomcat-server.xml</code> file is <code class="literal">&lt;Server&gt;</code>. The attributes of this element represent the characteristics of the entire embedded Tomcat servlet container. The <code class="literal">shutdown</code> attribute specifies the command string that the shutdown port number receives via a TCP/IP connection in order to shut down the servlet container. The <code class="literal">port</code> attribute specifies the TCP/IP port number that listens for a shutdown message.</p></li><li><p>The <code class="literal">&lt;Listener&gt;</code> XML elements specify the list of lifecycle listeners that monitor and manage the embedded Tomcat servlet container. Each listener class is a Java Management Extensions (JMX) MBean that listens to a specific component of the servlet container and has been programmed to do something at certain lifecycle events of the component, such as before starting up, after stopping, and so on.</p><p> The first four <code class="literal">&lt;Listener&gt;</code> elements configure standard Tomcat lifecycle listeners. The listener implemented by the <code class="literal">org.eclipse.virgo.web.tomcat.ServerLifecycleLoggingListener</code> class is specific to Virgo Server for Apache Tomcat and manages server lifecycle logging.
		</p></li><li><p>The <code class="literal">&lt;Service&gt;</code> XML element groups together one or more connectors and a single engine. Connectors define a transport mechanism, such as HTTP, that clients use to to send and receive messages to and from the associated service. There are many transports that a client can use, which is why a <code class="literal">&lt;Service&gt;</code> element can have many <code class="literal">&lt;Connector&gt;</code> elements. The engine then defines how these requests and responses that the connector receives and sends are in turn handled by the servlet container; you can define only a single <code class="literal">&lt;Engine&gt;</code> element for any given <code class="literal">&lt;Service&gt;</code> element.</p><p> The sample <code class="literal">tomcat-server.xml</code> file above includes three <code class="literal">&lt;Connector&gt;</code> elements: one for the HTTP transport, one for the HTTPS transport, and one for the AJP transport. The file also includes a single <code class="literal">&lt;Engine&gt;</code> element, as required.
		</p></li><li><p>The first connector listens for HTTP requests at the <code class="literal">8080</code> TCP/IP port. The connector, after accepting a connection from a client, waits for a maximum of 20000 milliseconds for a request URI; if it does not receive one from the client by then, the connector times out. If this connector receives a request from the client that requires the SSL transport, the servlet container automatically redirects the request to port <code class="literal">8443</code>. </p></li><li><p>The second connector is for HTTPS requests.  The TCP/IP port that users specify as the secure connection port is <code class="literal">8443</code>. Be sure that you set the value of the <code class="literal">redirectPort</code> attribute of your non-SSL connectors to this value to ensure that users that require a secure connection are redirected to the secure port, even if they initially start at the non-secure port.  The <code class="literal">SSLEnabled</code> attribute specifies that SSL is enabled for this connector.  The <code class="literal">secure</code> attribute ensures that a call to <code class="literal">request.isSecure()</code> from the connecting client always returns <code class="literal">true</code>. The <code class="literal">scheme</code> attribute ensures that a call to <code class="literal">request.getScheme()</code> from the connecting client always returns <code class="literal">https</code> when clients use this connector. </p><p>The <code class="literal">maxThreads</code> attribute specifies that the servlet container creates a maximum of 150 request processing threads, 
		which determines the maximum number of simultaneous requests that can be handled. 
		The <code class="literal">clientAuth</code> attribute specifies that the servlet container does not require a certificate chain 
		unless the client requests a resource protected by a security constraint that uses CLIENT-CERT authentication.  
		</p><p>The <code class="literal">keystoreFile</code> attribute specifies the name of the file that contains the servlet container&#8217;s 
                private key and public certificate used in the SSL handshake, encryption, and decryption. 
                You use an alias and password to access this information. 
                In the example, this file is <code class="literal">$SERVER_HOME/configuration/keystore</code>.  
                The <code class="literal">keystorePass</code> attributes specify the password used to access the keystore. 
                </p></li><li><p>The third AJP Connector element represents a Connector component that communicates with a web connector via the AJP protocol. 
		</p></li><li><p>The engine has a logical name of <code class="literal">Catalina</code>; 
		this is the name used in all log and error messages so you can easily identify problems. 
		The value of the <code class="literal">defaultHost</code> attribute refers to the name of a <code class="literal">&lt;Host&gt;</code> 
		child element of <code class="literal">&lt;Engine&gt;</code>; 
		this host processes requests directed to host names on this servlet container.
		</p></li><li><p>The <code class="literal">&lt;Realm&gt;</code> child element of <code class="literal">&lt;Engine&gt;</code> represents a database of 
		users, passwords, and mapped roles used for authentication in this service.  Virgo Web Server uses an implementation of the Tomcat 6 Realm interface that authenticates users through the Java Authentication and Authorization Service (JAAS) framework which is provided as part of the standard J2SE API.</p><p>With the JAASRealm, you can combine practically any conceivable security realm with Tomcat's container managed authentication.  For details, see <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html" target="_top">Realm Configuration</a>.</p></li><li><p>The <code class="literal">&lt;Host&gt;</code> child element represents a virtual host, 
		which is an association of a network name for a server (such as <code class="literal">www.mycompany.com</code>) with the particular 
		server on which Catalina is running.  
		The servlet container unpacks Web applications into a directory hierarchy if they are deployed as WAR files. 
		</p><p>
			Note that multiple <code class="literal">&lt;Host&gt;</code> elements are not supported in Virgo Server for Apache Tomcat.
		</p></li><li><p>Finally, the <code class="literal">org.apache.catalina.valves.AccessLogValve</code> valve creates log files 
		in the same format as those created by standard web servers.   
		The servlet container creates the log files in the <code class="literal">$SERVER_HOME/serviceability/logs/access</code> directory.  
		The log files are prefixed with the string <code class="literal">localhost_access_log.</code>, have a suffix of <code class="literal">.txt</code>, 
		use a standard format for identifying what should be logged, and do not include DNS lookups of the IP address of the remote host.
		</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-tomcat-connectors"></a>Connector Configuration</h3></div></div></div><p> The Virgo Server for Apache Tomcat supports the configuration of any connector supported by Apache Tomcat. 
			See the default configuration above for syntax examples, and for further details of the configuration properties 
			supported for various <code class="literal">&lt;Connector&gt;</code> implementations, 
			consult the official <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/config/http.html" target="_top">Tomcat HTTP Connector</a> documentation.
			</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip: Configuring SSL for Tomcat"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.gif"></td><th align="left">Configuring SSL for Tomcat</th></tr><tr><td align="left" valign="top"><p> The Virgo Server for Apache Tomcat distribution includes a preconfigured <code class="filename">$SERVER_HOME/configuration/keystore</code> 
				file that contains a single self-signed SSL Certificate. 
				The password for this <code class="filename">keystore</code> file is <code class="literal">changeit</code>.  
				This <code class="filename">keystore</code> file is intended for testing purposes only. 
				For detailed instructions on how to configure Tomcat&#8217;s SSL support, 
				consult the official <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html" target="_top">Tomcat SSL Configuration HOW-TO</a>.
				</p></td></tr></table></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-tomcat-clustering"></a>Cluster Configuration</h3></div></div></div><p>
				Virgo Server for Apache Tomcat supports standard Apache Tomcat cluster configuration.
				By default, clustering of the embedded servlet container is disabled, 
				and the default configuration does not include any clustering information.  
				See  <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html" target="_top">Tomcat Clustering/Session Replication HOW-TO</a> 
				for detailed information about enabling and configuring clustering.
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-default-web-xml"></a>Default web.xml Configuration</h3></div></div></div><p>
				Java Servlet specification enables web applications to provide deployment descriptor (<code class="literal">web.xml</code>) in the <code class="literal">WEB-INF</code> directory.
				Apache Tomcat introduces a default <code class="literal">web.xml</code> which is similar to web application's <code class="literal">web.xml</code>, but provides configurations that are applied to all web applications.
				When deploying a web application, Apache Tomcat uses the default <code class="literal">web.xml</code> file as a base configuration. 
				If the web application provides its own configurations via <code class="literal">web.xml</code> (the one located in the web application's <code class="literal">WEB-INF</code>) or annotations, they overwrite the default ones.
				In Virgo Server for Apache Tomcat you can also provide default configurations for all web applications.
				If you want to change/extend the default configurations, you can provide the default <code class="literal">web.xml</code> file located in the <code class="literal">VTS_HOME/configuration</code> directory. 
			</p><p>
				</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.gif"></td><th align="left">Tip</th></tr><tr><td align="left" valign="top">Be careful when changing/extending the default <code class="literal">web.xml</code> as this will affect all web applications.</td></tr></table></div><p>
			</p><p>
				Here's an extract of the default configuration distributed with the VTS.
			</p><pre class="programlisting">&lt;<span class="hl-tag">?xml version="1.0" encoding="ISO-8859-1"?</span>&gt;
&lt;<span class="hl-tag">web-app</span> <span class="hl-attribute">xmlns</span>=<span class="hl-value">"http://java.sun.com/xml/ns/javaee"</span>
    <span class="hl-attribute">xmlns:xsi</span>=<span class="hl-value">"http://www.w3.org/2001/XMLSchema-instance"</span>
    <span class="hl-attribute">xsi:schemaLocation</span>=<span class="hl-value">"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"</span>
    <span class="hl-attribute">version</span>=<span class="hl-value">"3.0"</span>&gt;

    &lt;<span class="hl-tag">servlet</span>&gt;
        &lt;<span class="hl-tag">servlet-name</span>&gt;default&lt;<span class="hl-tag">/servlet-name</span>&gt;
        &lt;<span class="hl-tag">servlet-class</span>&gt;org.apache.catalina.servlets.DefaultServlet&lt;<span class="hl-tag">/servlet-class</span>&gt;
        &lt;<span class="hl-tag">init-param</span>&gt;
            &lt;<span class="hl-tag">param-name</span>&gt;debug&lt;<span class="hl-tag">/param-name</span>&gt;
            &lt;<span class="hl-tag">param-value</span>&gt;0&lt;<span class="hl-tag">/param-value</span>&gt;
        &lt;<span class="hl-tag">/init-param</span>&gt;
        &lt;<span class="hl-tag">init-param</span>&gt;
            &lt;<span class="hl-tag">param-name</span>&gt;listings&lt;<span class="hl-tag">/param-name</span>&gt;
            &lt;<span class="hl-tag">param-value</span>&gt;false&lt;<span class="hl-tag">/param-value</span>&gt;
        &lt;<span class="hl-tag">/init-param</span>&gt;
        &lt;<span class="hl-tag">load-on-startup</span>&gt;1&lt;<span class="hl-tag">/load-on-startup</span>&gt;
    &lt;<span class="hl-tag">/servlet</span>&gt;

    &lt;<span class="hl-tag">servlet</span>&gt;
        &lt;<span class="hl-tag">servlet-name</span>&gt;jsp&lt;<span class="hl-tag">/servlet-name</span>&gt;
        &lt;<span class="hl-tag">servlet-class</span>&gt;org.apache.jasper.servlet.JspServlet&lt;<span class="hl-tag">/servlet-class</span>&gt;
        &lt;<span class="hl-tag">init-param</span>&gt;
            &lt;<span class="hl-tag">param-name</span>&gt;fork&lt;<span class="hl-tag">/param-name</span>&gt;
            &lt;<span class="hl-tag">param-value</span>&gt;false&lt;<span class="hl-tag">/param-value</span>&gt;
        &lt;<span class="hl-tag">/init-param</span>&gt;
        &lt;<span class="hl-tag">init-param</span>&gt;
            &lt;<span class="hl-tag">param-name</span>&gt;xpoweredBy&lt;<span class="hl-tag">/param-name</span>&gt;
            &lt;<span class="hl-tag">param-value</span>&gt;false&lt;<span class="hl-tag">/param-value</span>&gt;
        &lt;<span class="hl-tag">/init-param</span>&gt;
        &lt;<span class="hl-tag">load-on-startup</span>&gt;3&lt;<span class="hl-tag">/load-on-startup</span>&gt;
    &lt;<span class="hl-tag">/servlet</span>&gt;

    &lt;<span class="hl-tag">servlet-mapping</span>&gt;
        &lt;<span class="hl-tag">servlet-name</span>&gt;default&lt;<span class="hl-tag">/servlet-name</span>&gt;
        &lt;<span class="hl-tag">url-pattern</span>&gt;/&lt;<span class="hl-tag">/url-pattern</span>&gt;
    &lt;<span class="hl-tag">/servlet-mapping</span>&gt;

    &lt;<span class="hl-tag">servlet-mapping</span>&gt;
        &lt;<span class="hl-tag">servlet-name</span>&gt;jsp&lt;<span class="hl-tag">/servlet-name</span>&gt;
        &lt;<span class="hl-tag">url-pattern</span>&gt;*.jsp&lt;<span class="hl-tag">/url-pattern</span>&gt;
    &lt;<span class="hl-tag">/servlet-mapping</span>&gt;

    &lt;<span class="hl-tag">servlet-mapping</span>&gt;
        &lt;<span class="hl-tag">servlet-name</span>&gt;jsp&lt;<span class="hl-tag">/servlet-name</span>&gt;
        &lt;<span class="hl-tag">url-pattern</span>&gt;*.jspx&lt;<span class="hl-tag">/url-pattern</span>&gt;
    &lt;<span class="hl-tag">/servlet-mapping</span>&gt;

    &lt;<span class="hl-tag">session-config</span>&gt;
        &lt;<span class="hl-tag">session-timeout</span>&gt;30&lt;<span class="hl-tag">/session-timeout</span>&gt;
    &lt;<span class="hl-tag">/session-config</span>&gt;

    &lt;<span class="hl-tag">mime-mapping</span>&gt;
        &lt;<span class="hl-tag">extension</span>&gt;abs&lt;<span class="hl-tag">/extension</span>&gt;
        &lt;<span class="hl-tag">mime-type</span>&gt;audio/x-mpeg&lt;<span class="hl-tag">/mime-type</span>&gt;
    &lt;<span class="hl-tag">/mime-mapping</span>&gt;
    ......
    &lt;<span class="hl-tag">mime-mapping</span>&gt;
        &lt;<span class="hl-tag">extension</span>&gt;ppt&lt;<span class="hl-tag">/extension</span>&gt;
        &lt;<span class="hl-tag">mime-type</span>&gt;application/vnd.ms-powerpoint&lt;<span class="hl-tag">/mime-type</span>&gt;
    &lt;<span class="hl-tag">/mime-mapping</span>&gt;

    &lt;<span class="hl-tag">welcome-file-list</span>&gt;
        &lt;<span class="hl-tag">welcome-file</span>&gt;index.html&lt;<span class="hl-tag">/welcome-file</span>&gt;
        &lt;<span class="hl-tag">welcome-file</span>&gt;index.htm&lt;<span class="hl-tag">/welcome-file</span>&gt;
        &lt;<span class="hl-tag">welcome-file</span>&gt;index.jsp&lt;<span class="hl-tag">/welcome-file</span>&gt;
    &lt;<span class="hl-tag">/welcome-file-list</span>&gt;

&lt;<span class="hl-tag">/web-app</span>&gt;
</pre><p>
				The following bullets describe the main elements in the default <code class="literal">web.xml</code> file.
				</p><div class="itemizedlist"><ul type="disc"><li><p>The <code class="literal">&lt;Servlet&gt;</code> XML element declares a given servlet and its configurations. The sample <code class="literal">web.xml</code> file above includes two &lt;Servlet&gt; elements.</p><div class="itemizedlist"><ul type="circle"><li><p>
									The default servlet serves static resources and processes the requests that are not mapped to any servlet.
									For details about default servlet configuration, see the <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html" target="_top">Apache Tomcat Default Servlet Reference.</a>.
								</p></li><li><p>
									The jsp servlet serves the requests to JavaServer Pages. It is mapped to the URL pattern "*.jsp" and "*.jspx".
									For details about jsp servlet configuration, see the <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html" target="_top">Apache Tomcat Jasper 2 JSP Engine.</a>.
								</p></li></ul></div></li><li><p>The <code class="literal">&lt;servlet-mapping&gt;</code> XML element specifies the mapping between the servlet and URL pattern.</p></li><li><p>
							The <code class="literal">&lt;session-config&gt;</code> XML element defines the session configuration for one web application. 
							The sample <code class="literal">web.xml</code> file above specifies that the session timeout for all web applications will be 30 minutes by default.
						</p></li><li><p>
							The <code class="literal">&lt;mime-mapping&gt;</code> XML element defines a mapping between a filename extension and a mime type. 
							When serving static resources, a "Content-Type" header will be generated based on these mappings.
						</p></li><li><p>
							The <code class="literal">&lt;welcome-file-list&gt;</code> XML element specifies a list of welcome files. 
							When a request URI refers to a directory, the default servlet looks for a "welcome file" within that directory.
							If the "welcome file" exists it will be served, otherwise 404 status or directory listing will be returned, depending on the default servlet configuration.
						</p></li></ul></div><p>
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-tomcat-contexts"></a>Context Configuration</h3></div></div></div><p>
					Virgo Server for Apache Tomcat supports standard Apache Tomcat web application context configuration.
					The <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/config/index.html" target="_top">Apache Tomcat Configuration Reference</a> has a section on
					<a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/config/context.html" target="_top">The Context Container</a> which describes the mechanism that
					is used in VTS for searching context configuration files and details the context configuration properties.
				</p><p>
					Context configuration files may be placed in the following locations,
					where <code class="literal">[enginename]</code> is the name of Tomcat's engine ('Catalina' by default) and <code class="literal">[hostname]</code> names
					a virtual host ('localhost' by default), both of which are configured in <code class="literal">tomcat-server.xml</code>:
					</p><div class="itemizedlist"><ul type="disc"><li><p>
							<code class="literal">$SERVER_HOME/configuration/context.xml</code> provides the default context configuration file for all web applications.
						</p></li><li><p>
							The <code class="literal">$SERVER_HOME/configuration/[enginename]/[hostname]</code> directory may contain:
					  		</p><div class="itemizedlist"><ul type="circle"><li><p>
									The default context configuration for all web applications of a given virtual host in the file <code class="literal">context.xml.default</code>.
								</p></li><li><p>
									Individual web applications' context configuration files as described in the Apache Tomcat Configuration Reference.
									For example, the context for a web application with
									context path <code class="literal">foo</code> may be configured in <code class="literal">foo.xml</code>.
					   			</p></li></ul></div><p>
						</p></li></ul></div><p>
				</p><p>
					Note that the following context configuration features are not supported in Virgo Server for Apache Tomcat:
					</p><div class="itemizedlist"><ul type="disc"><li><p>
							Custom class loaders.
						</p></li><li><p>
							Specifying the context path. This is specified using the <code class="literal">Web-ContextPath</code> header in the web application's
							<code class="literal">MANIFEST.MF</code> file.
						</p></li><li><p>
							Specifying the document base directory.
						</p></li></ul></div><p>
				</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-jsp-compilation"></a>JSP Compilation</h3></div></div></div><p>
					By default Apache Tomcat compiles JSP files in web applications agains Java 1.6.
					In order to enable JSP compilation against Java 1.7 for your web application,
					additional init parameters (<code class="literal">compilerSourceVM</code> and <code class="literal">compilerTargetVM</code>) should be added for the <code class="literal">org.apache.jasper.servlet.JspServlet</code> configuration.
					For details about <code class="literal">org.apache.jasper.servlet.JspServlet</code> configuration, see the <a class="ulink" href="http://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html" target="_top">Apache Tomcat Jasper 2 JSP Engine</a>.
					<code class="literal">org.apache.jasper.servlet.JspServlet</code> configuration can be provided with the web application's web.xml.
				</p><pre class="programlisting">&lt;<span class="hl-tag">?xml version="1.0" encoding="ISO-8859-1"?</span>&gt;
&lt;<span class="hl-tag">servlet</span>&gt;
    &lt;<span class="hl-tag">servlet-name</span>&gt;jsp&lt;<span class="hl-tag">/servlet-name</span>&gt;
    &lt;<span class="hl-tag">servlet-class</span>&gt;org.apache.jasper.servlet.JspServlet&lt;<span class="hl-tag">/servlet-class</span>&gt;
    &lt;<span class="hl-tag">init-param</span>&gt;
        &lt;<span class="hl-tag">param-name</span>&gt;compilerSourceVM&lt;<span class="hl-tag">/param-name</span>&gt;
        &lt;<span class="hl-tag">param-value</span>&gt;1.7&lt;<span class="hl-tag">/param-value</span>&gt;
    &lt;<span class="hl-tag">/init-param</span>&gt;
    &lt;<span class="hl-tag">init-param</span>&gt;
        &lt;<span class="hl-tag">param-name</span>&gt;compilerTargetVM&lt;<span class="hl-tag">/param-name</span>&gt;
        &lt;<span class="hl-tag">param-value</span>&gt;1.7&lt;<span class="hl-tag">/param-value</span>&gt;
    &lt;<span class="hl-tag">/init-param</span>&gt;
    &lt;<span class="hl-tag">init-param</span>&gt;
        &lt;<span class="hl-tag">param-name</span>&gt;fork&lt;<span class="hl-tag">/param-name</span>&gt;
        &lt;<span class="hl-tag">param-value</span>&gt;false&lt;<span class="hl-tag">/param-value</span>&gt;
    &lt;<span class="hl-tag">/init-param</span>&gt;
    &lt;<span class="hl-tag">init-param</span>&gt;
        &lt;<span class="hl-tag">param-name</span>&gt;xpoweredBy&lt;<span class="hl-tag">/param-name</span>&gt;
        &lt;<span class="hl-tag">param-value</span>&gt;false&lt;<span class="hl-tag">/param-value</span>&gt;
    &lt;<span class="hl-tag">/init-param</span>&gt;
    &lt;<span class="hl-tag">load-on-startup</span>&gt;3&lt;<span class="hl-tag">/load-on-startup</span>&gt;
&lt;<span class="hl-tag">/servlet</span>&gt;
&lt;<span class="hl-tag">servlet-mapping</span>&gt;
    &lt;<span class="hl-tag">servlet-name</span>&gt;jsp&lt;<span class="hl-tag">/servlet-name</span>&gt;
        &lt;<span class="hl-tag">url-pattern</span>&gt;*.jsp&lt;<span class="hl-tag">/url-pattern</span>&gt;
        &lt;<span class="hl-tag">url-pattern</span>&gt;*.jspx&lt;<span class="hl-tag">/url-pattern</span>&gt;
    &lt;<span class="hl-tag">/servlet-mapping</span>&gt;
</pre></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-web"></a>13.8&nbsp;Configuring the Web Integration Layer</h2></div></div></div><p>
			Virgo Server for Apache Tomcat integrates an OSGi-enhanced version of the <a class="ulink" href="http://tomcat.apache.org/" target="_top">Tomcat Servlet Container</a>
			in order to provide support for deploying Java EE WARs and OSGi <span class="emphasis"><em>Web Application Bundles</em></span>.
		</p><p>
			For Virgo Server for Apache Tomcat you 
			configure the behaviour of the Web Integration Layer using the properties file called <code class="literal">org.eclipse.virgo.web.properties</code>.
			The <code class="literal">org.eclipse.virgo.web.properties</code> file is located in the <code class="literal">$SERVER_HOME/repository/ext</code> directory. 
		</p><p>The following table describes the properties.  </p><div class="table"><a name="configuring-web-integration-layer"></a><p class="title"><b>Table&nbsp;13.12.&nbsp;Web Integration Layer Properties</b></p><div class="table-contents"><table summary="Web Integration Layer Properties" style="border-collapse: collapse;border-top: 1.0pt solid ; border-bottom: 1.0pt solid ; border-left: 1.0pt solid ; border-right: 1.0pt solid ; "><colgroup><col><col><col></colgroup><thead><tr><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
							Property
						</th><th style="border-right: 1.0pt solid ; border-bottom: 1.0pt solid ; ">
							Description
						</th><th style="border-bottom: 1.0pt solid ; ">
							Default Value
						</th></tr></thead><tbody><tr><td style="border-right: 1.0pt solid ; ">
							<code class="literal">WABHeaders</code>
						</td><td style="border-right: 1.0pt solid ; ">
							<p>
								Specifies how Web Application Bundle manifest headers are processed.
								See "Web Application Manifest Processing" in the
								<a class="ulink" href="../../virgo-programmer-guide/html/index.html" target="_top">Programmer Guide</a> for details.
							</p>
							<p>
								A value of <code class="literal">strict</code> causes VTS to interpret certain headers in strict compliance with
								the OSGi Web Applications specification if they are not specified.
							</p>
							<p>
								A value of <code class="literal">defaulted</code> causes VTS to set certain headers to default values if they are not specified.
								This was how VTS behaved prior to version 3.
								<span class="emphasis"><em>This value is provided as a migration aid and may not be supported in future releases.</em></span>
								A warning event log message (WE0006W) is generated if this value is specified.
							</p>
							<p>
								The Virgo Jetty Server will always operate in <code class="literal">strict</code> mode.
							</p>
							<p>
                    			Virgo Nano Web does not have a Web Integration Layer, but has a corresponding kernel property.
                    			See <a class="link" href="#configuring-deployment" title="Configuring Deployment">Configuring Deployment</a>.
							</p>
						</td><td style="">
							<code class="literal">strict</code>
						</td></tr></tbody></table></div></div><br class="table-break"><p>
			There is no Web Integration Layer in Virgo Jetty Server. The relevant configuration is described in
			<a class="link" href="#configuring-jetty" title="13.9&nbsp;Configuring the Embedded Jetty Servlet Container">Configuring the Embedded Jetty Servlet Container</a>.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-jetty"></a>13.9&nbsp;Configuring the Embedded Jetty Servlet Container</h2></div></div></div><p>
			Virgo Jetty Server supports <span class="emphasis"><em>Web Application Bundles</em></span>, but does not provide support for Java EE WARs.
		</p><p>
			The Virgo Jetty Server contains a standard Jetty configuration file at <code class="literal">SERVER_HOME/jetty/etc/jetty.xml</code>. 
			This has been tailored to the Virgo Runtime Environment. To make modifications please refer to the
			<a class="ulink" href="http://wiki.eclipse.org/Jetty/Howto/Configure_Jetty#Using_Jetty_XML" target="_top">Jetty documentation</a>.
		</p></div></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="log-codes"></a>Appendix&nbsp;A.&nbsp;Event log codes</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="event-log-codes-format"></a>A.1&nbsp;Format of the event log codes</h2></div></div></div><p>
Event log codes issued by Virgo have the general syntax
<code class="literal">&lt;XXnnnnL&gt;</code> where:
</p><div class="informaltable"><table style="border: none;"><colgroup><col><col></colgroup><tbody><tr><td style=""><code class="literal">XX</code></td><td style="">
is a two-letter code (upper-case) identifying the area of the Virgo code which issued the log message;
</td></tr><tr><td style=""><code class="literal">nnnn</code></td><td style="">
is a four-digit message number; and 
</td></tr><tr><td style=""><code class="literal">L</code></td><td style="">
is a single-letter (upper-case) code identifying the level of the message.
</td></tr></tbody></table></div><p>
</p><p>
The two-letter codes are (this list is not complete):
</p><div class="informaltable"><table style="border: none;"><colgroup><col><col></colgroup><tbody><tr><td style=""><code class="literal">AG</code></td><td style=""><code class="literal">org.eclipse.virgo.kernel.agent.dm</code></td></tr><tr><td style=""><code class="literal">DE</code></td><td style=""><code class="literal">org.eclipse.virgo.kernel.deployer.core</code></td></tr><tr><td style=""><code class="literal">HD</code></td><td style=""><code class="literal">org.eclipse.virgo.kernel.deployer.hot</code></td></tr><tr><td style=""><code class="literal">HR</code></td><td style=""><code class="literal">org.eclipse.virgo.apps.repository.core</code></td></tr><tr><td style=""><code class="literal">KE</code></td><td style=""><code class="literal">org.eclipse.virgo.kernel.core</code></td></tr><tr><td style=""><code class="literal">KS</code></td><td style=""><code class="literal">org.eclipse.virgo.kernel.services</code></td></tr><tr><td style=""><code class="literal">OF</code></td><td style=""><code class="literal">org.eclipse.virgo.kernel.osgi</code></td></tr><tr><td style=""><code class="literal">RP</code></td><td style=""><code class="literal">org.eclipse.virgo.repository</code></td></tr><tr><td style=""><code class="literal">TC</code></td><td style=""><code class="literal">org.eclipse.virgo.web.tomcat</code></td></tr><tr><td style=""><code class="literal">UR</code></td><td style=""><code class="literal">org.eclipse.virgo.kernel.userregion</code></td></tr><tr><td style=""><code class="literal">WE</code></td><td style=""><code class="literal">org.eclipse.virgo.web.core</code></td></tr></tbody></table></div><p>

</p><p>
The four-digit numbers identify the message text (with placeholders for inserted values). These are not listed here, but can be discovered by examining the files called 
<code class="literal">EventLogMessages.properties</code>, found in the relevant packages.
</p><p>
The single-digit level code is one of:
</p><div class="informaltable"><table style="border: none;"><colgroup><col><col></colgroup><tbody><tr><td style=""><code class="literal">E</code></td><td style="">Error level: enabled if level is <code class="literal">ERROR</code>.</td></tr><tr><td style=""><code class="literal">W</code></td><td style="">Warning level: enabled if level is <code class="literal">WARNING</code> or above.</td></tr><tr><td style=""><code class="literal">I</code></td><td style="">Info level: enabled if level is <code class="literal">INFO</code> or above.</td></tr><tr><td style=""><code class="literal">D</code></td><td style="">Debug level: enabled if level is <code class="literal">DEBUG</code> or above.</td></tr><tr><td style=""><code class="literal">T</code></td><td style="">Trace level: always enabled.</td></tr></tbody></table></div><p>
There are never two messages with the same prefix and number, but with different levels.
</p></div></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="known-issues"></a>Appendix&nbsp;B.&nbsp;Known Issues</h2></div></div></div><p>This section describes known issues that you might run into, along with corresponding workarounds.  </p><p>For the full list of known issues, see <a class="ulink" href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;order=Importance;classification=RT;product=Virgo" target="_top">Virgo bugs in Eclipse Bugzilla</a>.  The bugs are organised by component as well as by release.  You can also use bugzilla to enter a new issue if you cannot find an existing issue that describes the problem you are running into, but it's probably worth asking on the <a class="ulink" href="http://www.eclipse.org/forums/index.php?t=thread&amp;frm_id=159" target="_top">Virgo community forum</a> first.</p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="known-issues-firewall-timeout"></a>B.1&nbsp;Timeout During Startup Due to Firewall Settings</h2></div></div></div><p>
			Virgo will fail to start correctly if it is prevented from 
			connecting to needed ports by the firewall. Typically this manifests 
			as error <code class="literal">SPPM0003E</code> . Configuring the firewall to
			allow Virgo process to bind to the necessary ports will prevent
			this error from occurring.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="known-issues-startup-timeout"></a>B.2&nbsp;Timeout During Startup Due to Insufficient Resources</h2></div></div></div><p>
            Virgo will fail to start correctly if it is running on slow hardware or
            on a system with insufficient resources. Typically this manifests as error <code class="literal">KE0004E</code> .
            Configuring the <a class="link" href="#configuring-kernel-properties" title="Configuring the Kernel">startup wait limit</a> will provide
            Virgo with more time for initialisation.
        </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="known-issues-perm-gen-sun-vm"></a>B.3&nbsp;OutOfMemoryError: PermGen Space Running on Sun JVM</h2></div></div></div><p>
			As a result of Sun Java bug
			<a class="ulink" href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4957990" target="_top">4957990</a>,
			the Virgo may consume more PermGen space than expected when running with the
			server HotSpot compiler. This problem may be resolved by configuring the
			<code class="literal">JAVA_OPTS</code> environment variable to specify an increased
			<code class="literal">MaxPermSize</code>, for example <code class="literal">-XX:MaxPermSize=128M</code>.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="alternate-serviceability-work"></a>B.4&nbsp;Alternate <code class="literal">serviceability</code> and <code class="literal">work</code> Directories</h2></div></div></div><p>
			Although an alternate <code class="literal">configuration</code> directory may be specified on startup, there is no way to specify
			alternate <code class="literal">serviceability</code> or <code class="literal">work</code> directories. This is covered by
			<a class="ulink" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=307737" target="_top">bug 307737</a> which also describes a workaround.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="windows-deletion"></a>B.5&nbsp;Problem Deleting Installation Directory under Windows</h2></div></div></div><p>
			Sometimes Microsoft Windows won't let you delete the Virgo Server installation directory, typically because of long paths
			inside the <code class="literal">work</code> directory.
	 	</p><p>
			You can return the Virgo instance to a clean state by stopping Virgo if necessary and then running the startup script with the options
			<code class="literal">-clean -noStart</code>, after which you should be able to delete the installation directory.
			See <a class="link" href="#cleaning-without-starting" title="7.7&nbsp;Cleaning Virgo Server for Apache Tomcat without Starting it">Cleaning Virgo Server for Apache Tomcat without Starting it</a> for more information.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="long-work-paths"></a>B.6&nbsp;Long Work Directory Paths under Windows</h2></div></div></div><p>
			Problems can arise under Windows when long paths are created in the <code class="literal">work</code> directory as artefacts are deployed.
	 	</p><p>
			You can shorten some of these paths by preventing bundles from being unpacked during deployment.
			See <a class="link" href="#configuring-deployment" title="Configuring Deployment">Configuring Deployment</a> for more information.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="known-issues-jetty-restrictions"></a>B.7&nbsp;Virgo Jetty Server Restrictions</h2></div></div></div><p>
			When using the Virgo Jetty Server the Hosted Repository application and the Snaps modular web technology are not supported.
		</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="known-issues-shutdown-logs-shell"></a>B.8&nbsp;Shutdown Log Messages in Telnet Shell</h2></div></div></div><p>
	    When you use the <code class="literal">shutdown</code> shell command to stop Virgo Tomcat Server, the shutdown log messages appear in the shell terminal instead of in the terminal in which Virgo runs. 
      See <a class="link" href="#admin-shell-enable" title="8.1&nbsp;Enabling the Equinox Console">Enabling Equinox Console</a> for more information. This is covered also by <a class="ulink" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351533" target="_top">bug 351533</a>.
	  </p></div></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="furtherreading"></a>Appendix&nbsp;C.&nbsp;
		Further Reading
	</h2></div></div></div><p>
		<a class="ulink" href="../../virgo-programmer-guide/html/index.html" target="_top">
			Virgo Server for Apache Tomcat Programmer Guide
		</a>
	</p><p>
		<a class="ulink" href="http://static.springframework.org/spring/docs/2.5.x/reference/index.html" target="_top">
			Spring Framework Reference Guide
		</a>
	</p><p>
		<a class="ulink" href="http://static.springframework.org/osgi/docs/current/reference/html/" target="_top">
			Spring Dynamic Modules Reference Guide
		</a>
	</p><p>
		<a class="ulink" href="http://www.osgi.org/Specifications/HomePage" target="_top">
			Blueprint Container Specification
		</a>
		 (in the OSGi 4.2 and 5.0 Enterprise Specifications)
	</p><p>
		<a class="ulink" href="http://logback.qos.ch/manual" target="_top">
			The Logback Manual
		</a>
	</p></div></div><!--Begin LoopFuse code--><script src="http://loopfuse.net/webrecorder/js/listen.js" type="text/javascript"></script><script type="text/javascript">
			_lf_cid = "LF_48be82fa";
			_lf_remora();
		</script><!--End LoopFuse code--></body></html>