<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>2.2&nbsp;Installing from the ZIP Download</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="Gemini Web User Guide"><link rel="up" href="ch02.html" title="2.&nbsp;Installing Gemini Web"><link rel="prev" href="ch02.html" title="2.&nbsp;Installing Gemini Web"><link rel="next" href="ch03.html" title="3.&nbsp;Configuration"><!--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;Installing from the ZIP Download</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 Gemini Web</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03.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="installation-zip"></a>2.2&nbsp;Installing from the ZIP Download</h2></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
					<a class="ulink" href="http://download.eclipse.org/equinox/" target="_top">Download</a> the Equinox JAR, for example <a class="ulink" href="http://download.eclipse.org/equinox/drops/R-LunaSR2-201502041700/download.php?dropFile=org.eclipse.osgi_3.10.2.v20150203-1939.jar" target="_top">org.eclipse.osgi_3.10.2.v20150203-1939.jar</a>, and move it to a suitable directory (e.g. ~/gemini-web-test).
					On the <a class="ulink" href="http://download.eclipse.org/equinox/" target="_top">Download</a> page, first choose the desired Release or Build, then download the JAR from the 'Framework Only' section.
				</p></li><li><p>
					<a class="ulink" href="http://download.eclipse.org/equinox/" target="_top">Download</a> the Equinox Console, for example <a class="ulink" href="http://download.eclipse.org/equinox/drops/R-LunaSR2-201502041700/download.php?dropFile=equinox-SDK-LunaSR2.zip" target="_top">equinox-SDK-LunaSR2.zip</a>.
					You will need the bundles listed below:
					</p><div class="itemizedlist"><ul type="circle"><li>org.apache.felix.gogo.command_0.10.0.v201209301215.jar</li><li>org.apache.felix.gogo.runtime_0.10.0.v201209301036.jar</li><li>org.apache.felix.gogo.shell_0.10.0.v201212101605.jar</li><li>org.eclipse.equinox.console_1.1.0.v20140131-1639.jar</li></ul></div><p>
					Move them to a suitable directory (e.g. ~/gemini-web-test).
					On the <a class="ulink" href="http://download.eclipse.org/equinox/" target="_top">Download</a> page, first choose the desired Release or Build, then download the ZIP from the 'All of Equinox' section. Bundles can be found in the plugins folder.
				</p></li><li><p>
					Gemini Web Container is distributed as a ZIP file.
					<a class="ulink" href="http://www.eclipse.org/gemini/web/download" target="_top">Download</a> Gemini Web Container and unzip it to ~/gemini-web-test/gemini-web. 
				</p></li><li><p>
					Configure Equinox by creating a directory ~/gemini-web-test/configuration and create a file config.ini in the configuration directory. 
					Example file which works with 3.0.0.RELEASE is available in <a class="ulink" href="http://wiki.eclipse.org/images/5/5e/Config.ini.zip" target="_top">config.ini.zip</a>.
					Essentially config.ini ensures that the dependencies of Gemini Web Container, which come in the dep directory, are installed and then the Gemini Web Container bundles are installed and started. 
				</p></li><li><p>
					Start Equinox as follows:
					</p><pre class="programlisting">java -jar org.eclipse.osgi_3.10.2.v20150203-1939.jar -console</pre></li><li><p>
					You can then deploy WAR files (a trivial example is available in <a class="ulink" href="https://wiki.eclipse.org/images/a/a0/Simple-war.war.zip" target="_top">Simple-war.war.zip</a>) and web bundles using the install and start commands from the console.
					</p><pre class="programlisting">osgi&gt; install webbundle:file:simple-war.war?Web-ContextPath=/simple-war
Bundle id is 43
osgi&gt; start 43</pre></li><li><p>
					Drive the WAR or web bundle using a web browser, e.g. http://localhost:8080/simple-war should display "Hello World!". 
				</p></li><li><p>
					Stop Gemini Web Container as follows:
					</p><pre class="programlisting">osgi&gt; close</pre><p>
					</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="images/tip.gif"></td><th align="left">Tip</th></tr><tr><td align="left" valign="top">
						You need to stop any old instance of Gemini Web before starting it again. Otherwise, the new instance will not start correctly, because the old one still occupies the http port (and, perhaps, other system resources).
					</td></tr></table></div><p>
				</p></li></ul></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="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="ch03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.&nbsp;Installing Gemini Web&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;3.&nbsp;Configuration</td></tr></table></div></body></html>