<?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>admin</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>
