<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
        "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<chapter id="admin-shell">
    <title>Equinox Console</title>

    <section id="admin-shell-enable" xreftext="Enabling the Equinox Console">
        <title>Enabling the Equinox Console</title>

		<para>
			Shells are provided for both user region and kernel, although they are disabled by default and need enabling before
			they can be used.
		</para>
		<para>
			The user region shell ports may be reconfigured by editing the file 		
			<literal>osgi.console.properties</literal> in the <literal>repository/ext</literal> directory, and
			then restarting Virgo. The telnet properties in the file are prefixed with <emphasis>telnet.</emphasis>, and the ssh properties are prefixed with <emphasis>ssh.</emphasis>.
			The kernel shell ports may be reconfigured by editing the file <literal>osgi.console.properties</literal> in the <literal>configuration</literal> directory, and then restarting Virgo.
        </para>
        <para>
			To enable any of these shell ports, change the <literal>enabled</literal> setting from <literal>false</literal> to <literal>true</literal>
            <programlisting><![CDATA[enabled=true]]></programlisting>
            in the corresponding properties files.
        </para>
        <para>
			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.
        </para>
        <para>			
			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.
<programlisting><![CDATA[prompt$ telnet localhost 2501
Trying ::1...
Connected to localhost.
Escape character is '^]'.

osgi> ]]></programlisting>
		</para>
        <para>
			Alternatively, you can ssh to port 2502 or 2402 for user region or kernel, respectively.
			The users and passwords for ssh are configured in <literal>configuration/org.eclipse.virgo.kernel.users.properties</literal> as described
			in <link linkend="configuring-authentication">Configuring Authentication</link>. The default user and password are <literal>admin</literal>
			and <literal>springsource</literal>.
		</para>
		
		<note>
			Currently the @nano.product.name@ Equinox Console is enabled by default. Telnet is accesible on <emphasis>2401</emphasis> and SSH on <emphasis>2402</emphasis>. In future these will be configurable.
		</note>
		
		<para>
		  <note>
		    If you use the <literal>shutdown</literal> 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.
      </note> 
		</para>
    </section>

	<section id="admin-shell-using-vsh">
		<title>Using Virgo Shell Commands</title>
		<note>
			 This section is not applicable to @nano.product.name@.
		</note>
        <para>Virgo provides shell commands
		that allow you to examine artifacts
        currently installed in a particular @kernel.product.name@ instance, manage the lifecycle of the installed artifacts, install new artifacts, and shut down
        the @kernel.product.name@. You can install, examine, and manage the lifecycle of the following artifacts:
        <itemizedlist>
          <listitem><para>Bundles</para></listitem>
          <listitem><para>Configuration Artifacts</para></listitem>
          <listitem><para>PARs</para></listitem>
          <listitem><para>Plans</para></listitem>
        </itemizedlist>
        </para>
		<para>
        and can examine:
        <itemizedlist>
          <listitem><para>Exported packages</para></listitem>
          <listitem><para>Services in the OSGi service registry</para></listitem>
        </itemizedlist>
        </para>
        <para>
			Virgo also provides shell commands to list all bundles that contain, export, or load a particular class.
        </para>
        <para>
			These commands are provided <emphasis>for the user region shells only</emphasis> and are grouped together in
			the <literal>vsh</literal> <emphasis>scope</emphasis>.
        </para>
        <para>You invoke commands using the <literal>vsh:</literal> scope. For example:</para>
		<programlisting><![CDATA[
osgi> 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> ]]></programlisting>

	    <section id="admin-shell-vsh-using-command-list">
		<title>Virgo Shell Commands</title>

		<para>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. </para>

        	<table id="admin-shell-vsh-commands-table" colsep="1" frame="all" rowsep="1">
            	  <title>Virgo Shell Commands</title>
                    <tgroup cols="2">
                      <thead>
                        <row>
                                <entry>Command </entry>
                                <entry>Description</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
				<entry><link linkend="admin-shell-vsh-bundle-command">bundle</link></entry>
                                <entry>Manages and displays information about bundle artifacts.</entry>
                        </row>
                        <row>
                <entry><link linkend="admin-shell-cl-clhas">clhas</link></entry>
                                <entry>Lists all bundles that <emphasis role="bold">contain</emphasis> a class or resource.</entry>
                        </row>
                        <row>
                <entry><link linkend="admin-shell-cl-clexport">clexport</link></entry>
                                <entry>Lists all bundles that <emphasis role="bold">export</emphasis> a class or package.</entry>
                        </row>
                        <row>
                <entry><link linkend="admin-shell-cl-clload">clload</link></entry>
                                <entry>Lists all bundles that can <emphasis role="bold">load</emphasis> a class.</entry>
                        </row>
                        <row>
				<entry><link linkend="admin-shell-vsh-config-command">config</link></entry>
                                <entry>Manages and displays information about configuration artifacts.</entry>
                        </row>
                        <row>
				<entry><link linkend="admin-shell-vsh-package-command">packages</link></entry>
                                <entry>Displays information about exported packages.</entry>
                        </row>
                        <row>
				<entry><link linkend="admin-shell-vsh-par-command">par</link></entry>
                                <entry>Manages and displays information about PAR artifacts.</entry>
                        </row>
                        <row>
				<entry><link linkend="admin-shell-vsh-plan-command">plan</link></entry>
                                <entry>Manages and displays information about plan artifacts.</entry>
                        </row>
                        <row>
				<entry><link linkend="admin-shell-vsh-service-command">service</link></entry>
                                <entry>Displays information about services in the OSGi service registry.</entry>
                        </row>
                        <row>
				<entry><link linkend="admin-shell-vsh-install-command">install</link></entry>
                                <entry>Installs an artifact to @kernel.product.name@. </entry>
                        </row>
                        <row>
				<entry><link linkend="admin-shell-vsh-shutdown-command">shutdown</link></entry>
                                <entry>Shuts down the @kernel.product.name@ instance to which the Equinox Console is connected.</entry>
                        </row>
		      </tbody>
                    </tgroup>
		</table>
	     </section>

	</section>

	<section id="admin-shell-vsh-command-reference">
	  <title>Virgo Shell Command Reference</title>

	  <para>
	  	This section contains reference information about the Virgo shell commands
		<link linkend="admin-shell-vsh-bundle-command">bundle</link>,
		<link linkend="admin-shell-cl-clhas">clhas</link>,
        <link linkend="admin-shell-cl-clexport">clexport</link>,
        <link linkend="admin-shell-cl-clload">clload</link>,
		<link linkend="admin-shell-vsh-config-command">config</link>,
		<link linkend="admin-shell-vsh-package-command">packages</link>,
		<link linkend="admin-shell-vsh-par-command">par</link>,
		<link linkend="admin-shell-vsh-plan-command">plan</link>,
		<link linkend="admin-shell-vsh-service-command">service</link>,
		<link linkend="admin-shell-vsh-install-command">install</link>,
		<link linkend="admin-shell-vsh-shutdown-command">shutdown</link>,
		<link linkend="admin-shell-vsh-help-command">help</link>, and
		<link linkend="admin-shell-vsh-exit-command">exit</link>.
	  </para>


	  <section id="admin-shell-vsh-bundle-command">
		<title>bundle Command</title>

		<para>Use the <literal>bundle</literal> command to manage the lifecycle of bundles deployed in @kernel.product.name@ and to gather information about deployed bundles, such as diagnostic information, header information, and so on. </para>
		<para>The following table lists the options you can specify for this command.</para>

        	<table id="admin-shell-vsh-bundle-command-table" colsep="1" frame="all" rowsep="1">
            	  <title>Options of the bundle Command</title>
                    <tgroup cols="2">
                      <thead>
                        <row>
                                <entry>Option </entry>
                                <entry>Description</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
				<entry>list</entry>
                                <entry>Displays the list of bundles that are currently installed in the current @kernel.product.name@ instance.  With the exception of a few kernel bundles and their services, which @kernel.product.name@ 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.
				  <para>Each bundle is identified by an internal <literal>ID</literal> which you can then use with the other <literal>bundle</literal> commands that manage a particular bundle, such as <literal>start </literal><emphasis><literal>id</literal></emphasis>.   The <literal>list</literal> command also displays the version of the bundle, along with its state, which is one of the following standard OSGi lifecycle states:</para>
			        <itemizedlist>
				  <listitem><para><emphasis role="bold">Installed</emphasis>: The bundle is installed but its dependencies have not yet been resolved.</para></listitem>
				  <listitem><para><emphasis role="bold">Resolved</emphasis>: The bundle is resolved and you can now start it.</para></listitem>
				  <listitem><para><emphasis role="bold">Uninstalled</emphasis>: The bundle is uninstalled and you cannot use it.</para></listitem>
				  <listitem><para><emphasis role="bold">Starting</emphasis>:  The bundle is in the process of starting.</para></listitem>
				  <listitem><para><emphasis role="bold">Active</emphasis>: The bundle is running and you can now use it.</para></listitem>
				  <listitem><para><emphasis role="bold">Stopping</emphasis>: The bundle is in the process of stopping.</para></listitem>
			        </itemizedlist>
			     <para>Use one of the other <literal>bundle</literal> commands to change the state of a bundle.  For example, use the <literal>bundle start </literal><emphasis><literal>id</literal></emphasis> command to change the state of a bundle from <literal>Installed</literal> to <literal>Active</literal>.</para>
			   </entry>
                        </row>
                        <row>
				<entry>examine <emphasis>id</emphasis></entry>
                                <entry>Displays detailed information about the specified bundle.  Use the <literal>bundle list</literal> command to get the internal id of a particular bundle.
			         <para>In addition to the information provided by the <literal>bundle list</literal> command (id, full name, version, and state), the <literal>examine</literal> command specifies whether the bundle includes a Spring application context (or is <emphasis>Spring Powered</emphasis>) and the exact physical location of the bundle JAR file.  </para>
				<para>The <literal>examine</literal> 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.  </para>
			    </entry>
                        </row>
                        <row>
				<entry>start <emphasis>id</emphasis></entry>
                                <entry>Starts the specified bundle.  Use the <literal>bundle list</literal> command to get the internal id of a particular bundle.
				<para>After @kernel.product.name@ successfully starts the bundle, it is listed in the <literal>Active</literal> state. </para>
				</entry>
                        </row>
                        <row>
				<entry>stop <emphasis>id</emphasis></entry>
                                <entry>Stops the specified bundle.  Use the <literal>bundle list</literal> command to get the internal id of a particular bundle.
				  <para>When you stop a bundle, it goes from the <literal>Active</literal> state to the <literal>Resolved</literal> state, and you must re-start it if you want to use the application that the bundle contains.</para> </entry>
                        </row>
                        <row>
				<entry>refresh <emphasis>id</emphasis></entry>
                                <entry>Updates the contents of the specified bundle. Use the <literal>bundle list</literal> 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.
				</entry>
                        </row>
                        <row>
				<entry>uninstall <emphasis>id</emphasis></entry>
                                <entry>Uninstalls the specified bundle from @kernel.product.name@.   Use the <literal>bundle list</literal> command to get the internal id of a particular bundle.
				  <para>When the uninstall process is complete, the bundle does not show up in the list of bundles displayed by the <literal>bundle list</literal> command.  If you want to use the application in the bundle, you must re-install it using the <literal>install</literal> command.</para>
				</entry>
                        </row>
                        <row>
							<entry>diag <emphasis>id</emphasis></entry>
                          	<entry>
								<para>
									Provides diagnostic information about the specified bundle.
									In particular, this command displays information about the imported packages that @kernel.product.name@ could not resolve.
									Use the <literal>bundle list</literal> command to get the internal id of a particular bundle.
								</para>
								<para>
									Note that @project.name@ 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 @project.name@ after an update operation.
								</para>
							</entry>
                        </row>
                        <row>
				<entry>headers <emphasis>id</emphasis></entry>
                                <entry>Displays the complete list of manifest headers of the specified bundle.  Use the <literal>bundle list</literal> command to get the internal id of a particular bundle.
				  <para>The manifest headers include: <literal>Import-Package</literal>, <literal>Export-Package</literal>, <literal>Bundle-SymbolicName</literal>, and so on.  </para>
				</entry>
                        </row>
		      </tbody>
		   </tgroup>
		</table>

		<para>The following examples show how to use this command.</para>

		<para>First, use the <literal>bundle list</literal> command to view all the installed bundles:</para>

		<programlisting>osgi> 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> </programlisting>

		<para>The following example shows how to view the headers of the <literal>org.springframework.osgi.extender</literal> bundle (only the first few lines are shown):</para>

		<programlisting>osgi> 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> </programlisting>

	  </section>
	  <section id="admin-shell-vsh-config-command">
		<title>config Command</title>

		<para>Use the <literal>config</literal> command to view and manage the configuration artifacts that have been installed in @kernel.product.name@.  A <emphasis>configuration artifact</emphasis> 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. </para>
		<para>The following table lists the options you can specify for this command.</para>

        	<table id="admin-shell-vsh-config-command-table" colsep="1" frame="all" rowsep="1">
            	  <title>Options of the config Command</title>
                    <tgroup cols="2">
                      <thead>
                        <row>
                                <entry>Option </entry>
                                <entry>Description</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
				<entry>list</entry>
                                <entry>Lists the configuration artifacts that are currently installed in @kernel.product.name@.
			          <para>The <literal>list</literal> 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 <link linkend="admin-shell-bundle-command">the bundle command</link> for the list of possible states. </para>
			        </entry>
                        </row>
                        <row>
				<entry>examine <emphasis>name [version]</emphasis></entry>
                                <entry>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 <literal>config list</literal> command to view all configuration artifacts and versions currently installed in @kernel.product.name@.
				<para>A configuration artifact must be active for you to examine it; if it is not currently active, use <literal>config start</literal> to start it and thus change its state to <literal>Active</literal>.</para>
				<para>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. </para> </entry>
                        </row>
                        <row>
							<entry>start <emphasis>name [version]</emphasis></entry>
                            <entry>
								<para>
									Starts the specified configuration artifact and makes it visible to @kernel.product.name@.
									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 @project.name@ does not currently support).
									Use the <literal>config list</literal> command to view all configuration artifacts and versions currently installed in @kernel.product.name@.
								</para>
								<para>
									Starting the configuration sets its state to <literal>Active</literal>.
								</para>
							</entry>
                        </row>
                        <row>
				<entry>stop <emphasis>name [version]</emphasis></entry>
                                <entry>Stops the specified configuration artifact and makes it invisible to @kernel.product.name@.  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 @project.name@ does not currently support).  Use the <literal>config list</literal> command to view all configuration artifacts and versions currently installed in @kernel.product.name@.

				<para>Stopping the configuration sets its state to <literal>Resolved</literal>.</para></entry>
                        </row>
                        <row>
				<entry>refresh <emphasis>name [version]</emphasis></entry>
                                <entry>Updates the contents of the specified configuration artifact to @kernel.product.name@.  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 @project.name@ does not currently support).  Use the <literal>config list</literal> command to view all configuration artifacts and versions currently installed in @kernel.product.name@.

				<para>Use this command if you have changed the contents of the configuration artifact, and you want to make this information known to @kernel.product.name@ and the associated bundle. </para></entry>
                        </row>
                        <row>
				<entry>uninstall <emphasis>name [version]</emphasis></entry>
                                <entry>Uninstalls the specified configuration artifact and make it completely unavailable to @kernel.product.name@.  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 @project.name@ does not currently support).  Use the <literal>config list</literal> command to view all configuration artifacts and versions currently installed in @kernel.product.name@.

				<para>Stopping the configuration  removes it from @kernel.product.name@'s list of deployed artifacts and it will not show up when you perform a <literal>config list</literal>.</para></entry>
                        </row>
		      </tbody>
		   </tgroup>
		</table>

		<para>The following example shows how to use this command to list the installed configuration artifacts.</para>
		<programlisting>osgi> 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> </programlisting>

		<para>To view the properties of a configuration artifact, and their current values, use <literal>config examine</literal>:</para>

		<programlisting>osgi> vsh:config examine org.eclipse.virgo.repository

Factory pid:     
Bundle Location: file:plugins/org.eclipse.virgo.kernel.services-@bundle.version@.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> </programlisting>

	  </section>
	  <section id="admin-shell-vsh-package-command">
		<title>packages Command</title>

		<para>Use the <literal>packages</literal> command to view the complete list of packages exported by all bundles installed in @kernel.product.name@, as well as examine a particular exported package in more detail.</para>

		<para>The following table lists the options you can specify for this command.</para>

        	<table id="admin-shell-vsh-package-command-table" colsep="1" frame="all" rowsep="1">
            	  <title>Options of the packages Command</title>
                    <tgroup cols="2">
                      <thead>
                        <row>
                                <entry>Option </entry>
                                <entry>Description</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
				<entry>list</entry>
                                <entry>Displays all the exported packages for all bundles in the uer region of @kernel.product.name@.  In addition to the package name, the command displays the version of the exported package and the <literal>id</literal> of the bundle that contains the exported package.  You can examine the bundle by using the command <literal>bundle examine </literal><emphasis><literal>id</literal></emphasis>.</entry>
                        </row>
                        <row>
				<entry>examine <emphasis>name version</emphasis></entry>
                                <entry>Displays details about the exported package.  You must specify both the name of the exported package and its version; use <literal>packages list</literal> to view the exact names and version.
				  <para>This command provides the following additional information about the exported package:</para>

				  <itemizedlist>
				    <listitem><para>The name and version of the bundle that exports the package.  This means that the package name is explicitly listed in the bundle's <literal>MANIFEST.MF</literal> file as part of the <literal>Export-Package</literal> header.</para></listitem>
				    <listitem><para>Any attributes that are part of the <literal>Export-Package</literal>, in addition to <literal>version</literal>.</para></listitem>
				    <listitem><para>The directives that are part of the <literal>Export-Package</literal> header.  A typical directive is <literal>uses</literal>, which declares up-front constraints on a number of other packages.</para></listitem>
				    <listitem><para>The list of all bundles that import the package.</para></listitem>
				  </itemizedlist>
				</entry>
                        </row>
		      </tbody>
		   </tgroup>
		</table>

		<para>The following example shows how to list all the exported packages for all bundles installed:</para>
		<programlisting>osgi> 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> </programlisting>

		<para>The following example shows how to examine a particular exported package:</para>
		<programlisting>osgi> 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> </programlisting>


	  </section>
	  <section id="admin-shell-vsh-par-command">
		<title>par Command</title>

		<para>Use the <literal>par</literal> command to view all the PARs currently installed in @kernel.product.name@, view details about a particular PAR and manage its lifecycle, such as starting, stopping, refreshing, and uninstalling it.</para>
		<para>The following table lists the options you can specify for this command.</para>

        	<table id="admin-shell-vsh-par-command-table" colsep="1" frame="all" rowsep="1">
            	  <title>Options of the par Command</title>
                    <tgroup cols="2">
                      <thead>
                        <row>
                                <entry>Option </entry>
                                <entry>Description</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
				<entry>list</entry>
                                <entry>Displays all the PARs that are currently installed in @kernel.product.name@.
			          <para>The <literal>list</literal> 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 <link linkend="admin-shell-bundle-command">the bundle command</link> for the list of possible states. </para></entry>
                        </row>
                        <row>
				<entry>examine <emphasis>name version</emphasis></entry>
                                <entry>Displays information about the specified PAR; you are required to identify the PAR with both its name and its version.  Use the <literal>par list</literal> command to view all installed PAR files and their versions.  The command displays the following information:
			         <itemizedlist>
				    <listitem><para>The current state of the PAR (see <link linkend="admin-shell-vsh-bundle-command">the bundle command</link> for the full list of possible states).</para></listitem>
				  <listitem><para>Whether the PAR is <emphasis>scoped</emphasis>.  Scoping specifies whether @kernel.product.name@ should deploy the members of the PAR in their own scope; when scoping is disabled, @kernel.product.name@ deploys the artifacts into the global scope and they are accessible for access by all other artifacts.</para></listitem>
				  <listitem><para>Whether the PAR is <emphasis>atomic</emphasis>.  When a PAR is atomic, @kernel.product.name@ manages the lifecycle of all its member artifacts as a single entity, which means if one artifact member is started, then @kernel.product.name@ starts <emphasis>all</emphasis> the PAR artifacts. If one artifact fails to start, then @kernel.product.name@ stops all other artifacts in the PAR.</para></listitem>
				  <listitem><para>The individual members, or children, of the PAR. These could be plans, bundles, configuration artifacts, and so on.</para></listitem>
			         </itemizedlist>
			   </entry>
                        </row>
                        <row>
				<entry>start <emphasis>name version</emphasis></entry>
                                <entry>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 <literal>par list</literal> command to get the list of PARs currently installed in @kernel.product.name@.
				<para>To start a PAR, it must have already been resolved by @kernel.product.name@, or in other words, be in the <literal>Resolved</literal> state.  After @kernel.product.name@ successfully starts the PAR, it is listed in the <literal>Active</literal> state. </para></entry>
                        </row>
                        <row>
				<entry>stop <emphasis>name version</emphasis></entry>
                                <entry>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 <literal>par list</literal> command to get the list of PARs currently installed in @kernel.product.name@.
				  <para>When you stop a PAR, it goes from the <literal>Active</literal> state to the <literal>Resolved</literal> state, and you must re-start it if you want to use the application that the PAR contains.</para> </entry>
                        </row>
                        <row>
				<entry>refresh <emphasis>name version</emphasis></entry>
                                <entry>Updates the contents of the specified PAR. You must specify both the name and version of the PAR you want to refresh.  Use the <literal>par list</literal> command to this information.
				<para>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.</para></entry>
                        </row>
                        <row>
				<entry>uninstall <emphasis>name version</emphasis></entry>
                                <entry>Uninstalls the specified PAR. You must specify both the name and version of the PAR you want to refresh.  Use the <literal>par list</literal> command to this information.
				  <para>When the uninstall process is complete, the PAR will not show up in the list of PARs displayed by the <literal>par list</literal> command.  If you want to use the application in the PAR, you must re-install it using the <literal>install</literal> command.</para></entry>
                        </row>
		      </tbody>
		   </tgroup>
		</table>

		<para>The following example shows how to list the PARs that have been installed in @kernel.product.name@:</para>
		<programlisting>osgi> vsh:par list

Name                                         Version                      State

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

osgi> </programlisting>

		<para>The following example shows how to examine a particular PAR file:</para>
		<programlisting>osgi> 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> </programlisting>

		<para>Finally, the following example shows how to refresh an installed PAR file:</para>
		<programlisting>osgi> vsh:par refresh my.exciting.par 1.2.0

par my.exciting.par 1.2.0 refreshed successfully

osgi> </programlisting>

	  </section>
	  <section id="admin-shell-vsh-plan-command">
		<title>plan Command</title>

		<para>Use the <literal>plan</literal> command to view all the plans currently installed in @kernel.product.name@, view details about a particular plan and manage its lifecycle, such as starting, stopping, refreshing, and uninstalling it.</para>
		<para>The following table lists the options you can specify for this command.</para>

        	<table id="admin-shell-vsh-plan-command-table" colsep="1" frame="all" rowsep="1">
            	  <title>Options of the plan Command</title>
                    <tgroup cols="2">
                      <thead>
                        <row>
                                <entry>Option </entry>
                                <entry>Description</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
				<entry>list</entry>
                                <entry>Displays all the plans that are currently installed in @kernel.product.name@.
			          <para>The <literal>list</literal> 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 <link linkend="admin-shell-bundle-command">the bundle command</link> for the list of possible states. </para></entry>
                        </row>
                        <row>
				<entry>examine <emphasis>name version</emphasis></entry>
                                <entry>Displays information about the specified plan; you are required to identify the plan with both its name and its version.  Use the <literal>plan list</literal> command to view all installed plans and their versions.  The command displays the following information:
			         <itemizedlist>
						<listitem><para>The current state of the plan (see <link linkend="admin-shell-vsh-bundle-command">the bundle command</link> for the full list of possible states).</para></listitem>
				    	<listitem><para>Whether the plan is <emphasis>scoped</emphasis>.  Scoping specifies whether @kernel.product.name@ should deploy the members of the plan in their own scope; when scoping is disabled, @kernel.product.name@ deploys the artifacts into the global scope and they are accessible for access by all other artifacts.</para></listitem>
				    	<listitem><para>Whether the plan is <emphasis>atomic</emphasis>.  When a plan is atomic, @kernel.product.name@ manages the lifecycle of all its member artifacts as a single entity, which means if one artifact member is started, then @kernel.product.name@ starts <emphasis>all</emphasis> the plan artifacts. If one artifact fails to start, then @kernel.product.name@ stops all other artifacts in the plan.</para></listitem>
				    	<listitem><para>The individual members, or children, of the plan.  These could be other plans, PARs, bundles, configuration artifacts, and so on.</para></listitem>
			         </itemizedlist>
			   </entry>
                        </row>
                        <row>
				<entry>start <emphasis>name version</emphasis></entry>
                                <entry>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 <literal>plan list</literal> command to get the list of plans currently installed in @kernel.product.name@.
				<para>To start a plan, it must have already been resolved by @kernel.product.name@, or in other words, be in the <literal>Resolved</literal> state.  After @kernel.product.name@ successfully starts the plan, it is listed in the <literal>Active</literal> state. </para></entry>
                        </row>
                        <row>
				<entry>stop <emphasis>name version</emphasis></entry>
                                <entry>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 <literal>plan list</literal> command to get the list of plans currently installed in @kernel.product.name@.
				  <para>When you stop a plan, it goes from the <literal>Active</literal> state to the <literal>Resolved</literal> state, and you must re-start it if you want to use the application that the plan contains.</para> </entry>
                        </row>
                        <row>
				<entry>refresh <emphasis>name version</emphasis></entry>
                                <entry>Updates the contents of the specified plan. You must specify both the name and version of the plan you want to refresh.  Use the <literal>plan list</literal> command to this information.
				<para>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.</para></entry>
                        </row>
                        <row>
				<entry>uninstall <emphasis>name version</emphasis></entry>
                                <entry>Uninstalls the specified plan. You must specify both the name and version of the plan you want to refresh.  Use the <literal>plan list</literal> command to this information.
				  <para>When the uninstall process is complete, the plan will not show up in the list of plans displayed by the <literal>plan list</literal> command.  If you want to use the application in the plan, you must re-install it using the <literal>install</literal> command.</para></entry>
                        </row>
		      </tbody>
		   </tgroup>
		</table>

		<para>The following example shows how to list the plans that have been installed in @kernel.product.name@:</para>
		<programlisting><![CDATA[
osgi> 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> ]]></programlisting>

		<para>The following example shows how to examine a particular plan:</para>
		<programlisting>osgi> 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> </programlisting>

		<para>The following example shows how to stop a currently Active plan:</para>
		<programlisting>osgi> vsh:plan stop org.eclipse.virgo.web 2.1.0

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

osgi> </programlisting>

		<para>The following example shows how to start a plan:</para>

		<programlisting>osgi> vsh:plan start org.eclipse.virgo.web 2.1.0

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

osgi> </programlisting>

	  </section>
	  <section id="admin-shell-vsh-service-command">
		<title>service Command</title>

		<para>Use the <literal>service</literal> command to view all the services that have been registered in the OSGi service registry of @kernel.product.name@. You can also examine a specific service to discover its properties, the bundle that publishes the service, and any bundles that consume the service.</para>
		<para>The following table lists the options you can specify for this command.</para>

        	<table id="admin-shell-vsh-service-command-table" colsep="1" frame="all" rowsep="1">
            	  <title>Options of the service Command</title>
                    <tgroup cols="2">
                      <thead>
                        <row>
                                <entry>Option </entry>
                                <entry>Description</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
				<entry>list</entry>
                                <entry>Displays the list of services that are currently registered in the OSGi service registry of @kernel.product.name@.
				  <para>Each service is identified by an internal <literal>ID</literal> which you can then use with the <literal>service examine</literal> command to view the details about a particular service. The <literal>list</literal> option also displays the object class that implements the service and the internal <literal>id</literal> of the bundle that provides the service. </para></entry>
                        </row>
                        <row>
				<entry>examine <emphasis>id</emphasis></entry>
                                <entry>Displays detailed information about the specified service.  Use the <literal>service list</literal> command to get the internal id of a particular service.
				<para>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. </para></entry>
                        </row>
		      </tbody>
		   </tgroup>
		</table>

		<para>The following example shows how to list the services currently registered in the OSGi service registry:</para>
		<programlisting>osgi> 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> </programlisting>

		<para>The following example shows how to examine a particular service:</para>
		<programlisting>osgi> 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> </programlisting>

	  </section>
	  <section id="admin-shell-vsh-install-command">
		<title>install Command</title>

		<para>Use the <literal>install</literal> command to deploy an artifact to @kernel.product.name@.  The artifact can be a bundle, PAR, plan, or configuration artifact.</para>

		<para>The <literal>install</literal> 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 <literal>file</literal> scheme:</para>

		<programlisting>file://full-pathname-to-artifact</programlisting>

		<para>After you execute the <literal>install</literal> command, @kernel.product.name@ attempts to resolve the artifact's dependencies, and if it is successful, puts it in the <literal>Resolved</literal> state.  At that point, you must start the artifact to be able to actually use it. </para>

		<para>The following example shows how to install a bundle called <literal>swf-booking-mvc.war</literal> located in the <literal>/home/apps</literal> directory of the computer on which the Equinox Console Extension is being run:</para>

		<programlisting>osgi> vsh:install file://home/apps/swf-booking-mvc.war
...
Artifact bundle swf-booking-mvc.war 0.0.0 installed</programlisting>

		<para>
			This command is particularly useful for installing an artifact from the @project.name@ repository, in which case use the <literal>repository:</literal> scheme:
			<programlisting>repository:artifact-type/bundle-symbolic-name/bundle-version</programlisting>
			For example:
		</para>
		<programlisting>osgi> vsh:install repository:bundle/my.bundle/1.0
... 
Artifact bundle my.bundle 1.0.0 installed
osgi></programlisting>

		<para>The following example shows how to use the <literal>bundle list</literal> command to ensure that the bundle was indeed installed in @kernel.product.name@; if you had installed a different kind of artifact, for example a plan, then you would use the appropriate command (such as <literal>plan list</literal>):</para>

		<programlisting>osgi> 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> </programlisting>

		<para>Note that the <literal>swf-booking-mvc.war</literal> file is in the <literal>Resolved</literal> state.   The following examples start the bundle, and then examine it to ensure that it is in the <literal>Active</literal> state:</para>
		<programlisting>osgi> vsh:bundle start 60

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


osgi> 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> </programlisting>

	  </section>
	  <section id="admin-shell-vsh-shutdown-command">
		<title>shutdown Command</title>

		<para>Use the <literal>shutdown</literal> command to shut down the @kernel.product.name@ instance to which you are connected. When @kernel.product.name@ is shut down, the shell returns you to the operating system prompt. </para>
		<para>The <literal>shutdown</literal> command does not have any options.</para>

		<para>The following example shows how to use this command.</para>

		<programlisting>osgi> vsh:shutdown
osgi> ... 
Connection closed by foreign host.
prompt$</programlisting>

	  </section>
       <section id="admin-shell-cl-clhas">
            <title>clhas command</title>
            <para>Use the <literal>clhas</literal> command to list the entries contained in the bundles deployed in @project.name@ and to solve class loading issues.</para>
            <para>The command accepts as a parameter a search pattern in the form <emphasis>path/resource</emphasis>. The resource part of the pattern can contain wildcards.</para>
            <para>The output contains all bundles that have resources or classes matching the pattern. Since wildcards are allowed, the matching entities are listed as well.</para>

            <para>The following examples show how to use this command.</para>
            <para>Use the <literal>clhas</literal> to view all bundles that contain <literal>Servlet</literal> class:</para>
            <programlisting>osgi>clhas /javax/servlet/Servlet.class

Bundles containing [/javax/servlet/Servlet.class]:
  76    javax.servlet
            /javax/servlet/Servlet.class</programlisting>

            <para>Use the wildcard <literal>*</literal> with <literal>clhas</literal> to view all classes starting with <literal>Servlet</literal>:</para>
            <programlisting>osgi> 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;</programlisting>

            <para>The <literal>clhas</literal> command can also be used with class name instead of resource path:</para>
            <programlisting>osgi> clhas javax.servlet.Servlet

Bundles containing [javax/servlet/Servlet.class]:
  76    javax.servlet
            /javax/servlet/Servlet.class</programlisting>
            <para>Please note that the command converts the class name to a path and appends <literal>class</literal> extension by default.</para>
            <para>To search for a resource with an extension different than <literal>class</literal> you should use the resource path form:</para>
            <programlisting>osgi> 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;</programlisting>

            <para>The following example shows how to identify a possible <literal>ClassCastException</literal> due to wrong packaging:</para>
            <programlisting>osgi>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</programlisting>
            <para>It's obvious that the <literal>javax.servlet</literal> package should not be present in <literal>myapp</literal> 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.</para>
        </section>
        <section id="admin-shell-cl-clexport">
            <title>clexport command</title>
            <para>Use the <literal>clexport</literal> command to list the bundles that export a class or package.</para>
            <para>The command accepts as a parameter the fully qualified class name (in the form <emphasis>package.class</emphasis>).</para>
            <para>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 <literal>[class not found, package only]</literal> is displayed.</para>

            <para>The following examples show how to use this command.</para>
            <para>Use the <literal>clexport</literal> to view all bundles that contain <literal>Servlet</literal> class:</para>
            <programlisting>osgi> clexport javax.servlet.Servlet

Bundles exporting [javax.servlet.Servlet]:
  14    com.springsource.javax.servlet</programlisting>

            <para>If a bundle exports a package but does not contain the requested class, the output of the command will be similar to this:</para>
            <programlisting>osgi> clexport javax.servlet.ServletX

Bundles exporting [javax.servlet.ServletX]:
  14    com.springsource.javax.servlet     [class not found, package only]</programlisting>
        </section>
        <section id="admin-shell-cl-clload">
            <title>clload command</title>
            <para>Use the <literal>clload</literal> command to list the bundles that can load a class or to check if a specific bundle can load a class.</para>
            <para>The command accepts as parameters either:
                <itemizedlist>
                    <listitem><para>the fully qualified class name (in the form <emphasis>package.class</emphasis>)</para></listitem>
                    <listitem><para>the fully qualified class name (in the form <emphasis>package.class</emphasis>) and the symbolic name or id of the bundle that is to be tested</para></listitem>
                </itemizedlist>
            </para>
            <para>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 <literal>[exported by 14 com.springsource.javax.servlet]</literal>.</para>

            <para>The following examples show how to use this command.</para>
            <para>You can use the <literal>clload</literal> to view all bundles that can load <literal>Servlet</literal> class:</para>
            <programlisting>osgi> 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;</programlisting>

            <para>If a bundle is to be tested, then its id can be used as a command parameter:</para>
            <programlisting>osgi> 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]</programlisting>
            <para>Or the same class load test can specify the symbolic name of the bundle:</para>
            <programlisting>osgi> 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]</programlisting>
        </section>


    </section>
    <section id="p2-commands">
    <title>Using the p2 for extending your @project.name@ installation</title>
    <section>
    <title>Extending with the p2 director</title>
    	<para>
    		You can provision new features on top of your @project.name@ installation using the p2 director. It can be used both for initial provisioning and extending an existing installtion.
    	</para>
    	<para>For extending an existing installation you can use these director arguments:
    	<screen>-repository http://download.eclipse.org/rt/ecf/3.5.3/site.p2
-installIU org.eclipse.ecf.remoteservice.feature.feature.group
-destination &lt;your @project.name@ installation folder&gt;</screen></para>
	    <para>This installs the <emphasis role="bold">latest</emphasis> version of the specified p2 feature in your @project.name@ installation's p2 profile.</para>
    </section>
    <section>
    <title>Extending via the p2 shell commands</title>
    	<para>Another way to achieve the same results is to use the p2 commands. The commands are available only in @nano.product.name.short@ as it includes p2 by default. 
    	<note>For the other distributions only the director is supported and the operation only extends their kernel region.</note>
    	</para>
    	<para>Here's a list of the most commonly used p2 commands:</para>
    	<table id="p2-common-commands-table" colsep="1" frame="all" rowsep="1">
		    <title>p2 Common Shell Commands</title>
				<tgroup cols="2">
			   		<thead>
						<row>
							<entry>Command</entry>
							<entry>Help</entry>
						</row>
			  		</thead>
			  		<tbody>
			  			<row>
							<entry><literal>provaddrepo &lt;repository URI&gt;</literal></entry>
							<entry>
								Add specified URI as metadata and artifact repository. Note that if you pass a wrong URL you'll get an error saying:
								<literal>Repository not modifiable: http://wrongURL</literal>. 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.
							</entry>
						</row>
						<row>
							<entry><literal>provdelrepo &lt;repository URI&gt;</literal></entry>
							<entry>
								Remove specified metadata and artifact repository.
							</entry>
						</row>
						<row>
							<entry><literal>provinstall &lt;InstallableUnit&gt; &lt;version&gt; &lt;profileid&gt;</literal></entry>
							<entry>
								Install an IU to the profileid.  If no profileid is given, installs into default profile.
							</entry>
						</row>
						<row>
							<entry><literal>provremove &lt;InstallableUnit&gt; &lt;version&gt; &lt;profileid&gt;</literal></entry>
							<entry>
								Uninstall an IU from the profileid.  If no profileid is given, uninstalls form default profile.
							</entry>
						</row>
						<row>
							<entry><literal>provlg [&lt;repository URI&gt; &lt;iu id | *&gt; &lt;version range | *&gt;]</literal></entry>
							<entry>
								Lists all IUs with group capabilities in the given repo or in all repos if URI is omitted.
							</entry>
						</row>
						<row>
							<entry><literal>provliu [&lt;repository URI | *&gt; &lt;iu id | *&gt; &lt;version range | *&gt;]</literal></entry>
							<entry>
								Lists the IUs that match the pattern in the given repo.  * matches all.
							</entry>
						</row>
						<row>
							<entry><literal>confapply</literal></entry>
							<entry>
								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.
							</entry>
						</row>
			  		</tbody>
				</tgroup>
		  	</table>
		  	<para>Here's an example showing how to install the ECF remote services but with the p2 commands this time:</para>
		  	<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</screen>
		<para>You can see that after applying the changes with <emphasis>confapply</emphasis> the remote services bundles and their dependencies are installed in @nano.product.name.short@.</para>
    </section>   
    </section>
</chapter>
