<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>2.2&nbsp;Obtaining GreenPages</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="A Guide to the GreenPages Sample"><link rel="up" href="ch02.html" title="2.&nbsp;Installing and Running GreenPages"><link rel="prev" href="ch02.html" title="2.&nbsp;Installing and Running GreenPages"><link rel="next" href="ch02s03.html" title="2.3&nbsp;Building and Installing GreenPages"><!--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">2.2&nbsp;Obtaining GreenPages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Prev</a>&nbsp;</td><th width="60%" align="center">2.&nbsp;Installing and Running GreenPages</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s03.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="installing.greenpages.obtaining"></a>2.2&nbsp;Obtaining GreenPages</h2></div></div></div><p>This document provides instructions for building the complete GreenPages application and running it in Virgo Tomcat Server. 
    </p><p>To get the completed GreenPages application, including tests and explanatory skeleton parts:
    </p><div class="orderedlist"><ol type="1"><li><p>download the latest Zip file from </p><pre class="programlisting">http://eclipse.org/virgo/download/</pre></li><li><p>extract all the files from the Zip file to a convenient directory (preserving the directory structure).</p></li></ol></div><p>
</p><p>To extract the files on Windows:
</p><pre class="programlisting">prompt&gt; mkdir c:\springsource\samples
prompt&gt; cd c:\springsource\samples
prompt&gt; jar xf c:\path\to\greenpages-3.0.0.RELEASE.zip
prompt&gt; set GREENPAGES_HOME=c:\springsource\samples\greenpages-3.0.0.RELEASE</pre><p>
</p><p>To extract the files on Unix systems:
</p><pre class="programlisting">prompt$ mkdir -p /opt/springsource/samples 
prompt$ cd /opt/springsource/samples 
prompt$ unzip /path/to/greenpages-3.0.0.RELEASE.zip 
prompt$ export GREENPAGES_HOME=/opt/springsource/samples/greenpages-3.0.0.RELEASE
</pre><p>
</p><p>The environment variable <code class="literal">GREENPAGES_HOME</code> set here is not used by the projects, but is used as a shorthand
    in the instructions that follow.
</p><p>The GreenPages Zip file contains several directories with names that start <code class="literal">greenpages</code>.
    They contain the completed application which can be built and tested (as described in the next section).
</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="ch02.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.&nbsp;Installing and Running GreenPages&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;2.3&nbsp;Building and Installing GreenPages</td></tr></table></div></body></html>