<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>5.2&nbsp;Repository Page</title><link rel="stylesheet" href="css/stylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="5.&nbsp;Server Editor"><link rel="prev" href="ch05.html" title="5.&nbsp;Server Editor"><link rel="next" href="ch05s03.html" title="5.3&nbsp;Bundle Overview Page"><!--Begin Google Analytics code--><script type="text/javascript">
			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
			document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script><script type="text/javascript">
			var pageTracker = _gat._getTracker("UA-2728886-3");
			pageTracker._setDomainName("none");
			pageTracker._setAllowLinker(true);
			pageTracker._trackPageview();
		</script><!--End Google Analytics code--></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">5.2&nbsp;Repository Page</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch05.html">Prev</a>&nbsp;</td><th width="60%" align="center">5.&nbsp;Server Editor</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch05s03.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e422"></a>5.2&nbsp;Repository Page</h2></div></div></div><p>The Repository Browser allows you to see what bundles and libraries are available on the @product.instance and
			to very easily install bundles and libraries from the remote Enterprise Bundle Repository. To view resources
			installed on the Server select the "Repository" tab in the server editor.
		</p><p>
			<img src="images/editor-repository-page.png">
		</p><p>The left section of the Repository Browser allows the user to run searches against the SpringSource Enterprise Bundle Repository and displays
			matching results. The search can take parts of bundle symbolic names, class or package names and allows wildcards
			such as &#8216;?&#8217; and &#8216;*&#8217;. By selecting the checkbox left to a matching bundle and/or library and
			clicking the "Download" button it is very easy to install new bundles in the Virgo Runtime. For your
			convenience JARs containing the bundle source code can be automatically downloaded as well.
		</p><p>Clicking the "Download" button will trigger an Eclipse background job that will download the selected repository
			artifacts and -- if desired -- the source JARs one after another.
		</p><p>The section on the right displays the bundles and libraries that exist on the server. Bundles with available
			sources are visually marked. You can very easily download missing source JARs by using the "Install Sources" button.
			Note that these bundles may or may not be actually "installed" on the Virgo Runtime in the sense that
			they are known to it -- they may simply exist in the respective directories.
		</p></div><!--Begin LoopFuse code--><script src="http://loopfuse.net/webrecorder/js/listen.js" type="text/javascript"></script><script type="text/javascript">
			_lf_cid = "LF_48be82fa";
			_lf_remora();
		</script><!--End LoopFuse code--><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch05.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch05s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">5.&nbsp;Server Editor&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;5.3&nbsp;Bundle Overview Page</td></tr></table></div></body></html>