<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>4.2&nbsp;Views</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="ch04.html" title="4.&nbsp;Server Perspective and Views"><link rel="prev" href="ch04.html" title="4.&nbsp;Server Perspective and Views"><link rel="next" href="ch04s03.html" title="4.3&nbsp;Virgo Server Projects"><!--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">4.2&nbsp;Views</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><th width="60%" align="center">4.&nbsp;Server Perspective and Views</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s03.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="views"></a>4.2&nbsp;Views</h2></div></div></div><p>
			You can explore the contents of installed servers using the Virgo Server Views. These views are designed to help you
			get to resources on the server without having to switch to the native file system, and integrate those resources with
			other Eclipse IDE tools. (You can also use the Virgo views from within other perspectives, of course. Select
			<span class="guimenu">Window</span> &#8594; <span class="guisubmenu">Show View</span> &#8594; <span class="guimenuitem">Other...</span>
			and then open the "Virgo" folder to display them.)
		</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="views-respository"></a>Repository View</h3></div></div></div><p>The Virgo Repository view allows you to work directly with the contents of installed bundles and libraries on
				Virgo Runtime instances.
			</p><p>
				<img src="images/views-repository.png">
			</p><p>To view resources, select a repository in the Servers View. You can customize what and how they are displayed
				using the view toolbar buttons.
			</p><p>You can select multiple respositories as well, allowing you to easily navigate and compare resources on
				multiple servers. You can double-click on items, open them, and even explore class hierchies and other Eclipse
				features by right clicking on the repository resources.
			</p><p>
				<span class="emphasis"><em>Hint:</em></span>
				In the example below we have selected the Flat Layout and can see that javax.ejb library is present in one
				Virgo Runtime, but not the other.
			</p><p>
				<img src="images/views-repository-example.png">
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="views-properties"></a>Properties View</h3></div></div></div><p>The Virgo Properties view allows you to inspect the properties of Virgo Runtime instances. Rather then digging
				through files on the server instance to find the parameters you need to adjust, simply select the server(s) you want
				to find parameters for, and a list of properties files will be displayed in the editor. To open a file in the
				appropriate Eclipse editor, just double-click on it. Or open a tree node and double-click on a specific property and
				the property value will be highlighted for editing.
			</p><p>
				<img src="images/views-properties-tree.png">
			</p><p>
				<span class="emphasis"><em>Hint:</em></span>
				Not sure where a given property is even located? You can easily see all properties within a given
				Virgo Runtime
				across all properties files, sorted by name. Click the "List" button in the view
				toolbar. You can even see properties across runtime instances by selecting multiple servers in the Server View.
			</p><p>
				<img src="images/views-properties-list.png">
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="views-logs"></a>Logs View</h3></div></div></div><p>The Virgo Logs view supports easy access to runtime log files. As with the other views, just select the
				Virgo Runtime instance(s) you are interested in. Then double-click to open the relevant log file.
			</p><p>
				<img src="images/views-logs.png">
			</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="views-console"></a>Console View</h3></div></div></div><p>The Console view is the same view that is used in the Java and other perspectives. It displays the console
				activity for the last server instance you launched, assuming that you haven't launched another console hosted
				process in the mean-time. (This view is not connected to the Server View -- if you want to examine consoles for
				differnt running servers, click the "Down Triangle" icon in the view toolbar and select the appropriate console.)
			</p><p>
				<img src="images/views-logs.png">
			</p></div></div><!--Begin LoopFuse code--><script src="http://loopfuse.net/webrecorder/js/listen.js" type="text/javascript"></script><script type="text/javascript">
			_lf_cid = "LF_48be82fa";
			_lf_remora();
		</script><!--End LoopFuse code--><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.&nbsp;Server Perspective and Views&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;4.3&nbsp;Virgo Server Projects</td></tr></table></div></body></html>