EclipseRT for Amazon EC2
The EclipseRT can be run as a lightweight application server on Amazon's EC2 service. Using the EclipseRT 3.6 development stream (currently on Milestone 5, with target release called Helios), an Amazon Image (AMI) was created using the most recently available build of the Equinox project, as well as Jetty 7.0.1 web server and the p2 provisioning platform.
Using the Amazon Image to Launch an EC2 Instance
This Amazon Image is a Community AMI, meaning that any EC2 user can retrieve/use this AMI to launch an EC2 instance.
AMI ID: ami-69d93600
See the AWS management console to launch instances, and then within the Community AMI tab, simply search for 'osgi' and select the AMI ID: ami-69d93600.
Starting the Jetty Server
Once the instance has been created and is running (as indicated by the AWS console), ssh to your new EC2 instance as described by the EC2 management console documentation. Be sure to login as root.
Once in the unix shell, type the following:
Once in this directory, to start the eclipsert server, simply type
to start the Jetty server. You will see output to the console something like this
2010-03-11 16:11:29.189:INFO::Logging to StdErrLog::DEBUG=false via org.eclipse. jetty.util.log.StdErrLog 2010-03-11 16:11:29.446:INFO::jetty-7.0.1.v20091125 2010-03-11 16:11:29.568:INFO::Deploy /env/osgi_eclipsert36_sb_p2_jetty_7_0_1_lin ux_x86/jetty-distribution-7.0.1.v20091125/contexts/eclipsert36.xml -> WebAppCont ext@1d2068d@1d2068d/,null,/env/osgi_eclipsert36_sb_p2_jetty_7_0_1_linux_x86/jett y-distribution-7.0.1.v20091125/webapps/eclipsert36.linux.gtk.x86.war 2010-03-11 16:11:29.628:INFO::Extract jar:file:/env/osgi_eclipsert36_sb_p2_jetty _7_0_1_linux_x86/jetty-distribution-7.0.1.v20091125/webapps/eclipsert36.linux.gt k.x86.war!/ to /tmp/Jetty_0_0_0_0_8080_eclipsert36.linux.gtk.x86.war____hjvowd/w ebapp 2010-03-11 16:11:30.218:INFO::NO JSP Support for /, did not find org.apache.jasp er.servlet.JspServlet osgi>
Note the OSGi console prompt. You may issue OSGi console commands into the running OSGi server via this prompt.
Included with this server is very simple example 'Hello World' application, and you can access this application on your EC2 instance by browsing to:
http://<your EC2 instance's public dns address>:8080/hello
For example, here is an EC2 instance running this application
This should result in an EclipseRT Hello World! page. On the page is some basic OSGi information about the Hello World application, along with a link to other EclipseRT pages, and a link to the source code for the Hello World application.
Using the OSGi console
By entering OSGi console commands into the osgi> prompt, you can examine and manipulate the state of the server as it is running. To get a listing of all of the supported console commands type:
Note that with the OSGi console, you may stop and start bundles. The Hello World application, for example reports it's Bundle Id on the output page, and so may be stopped and started from the OSGi console:
osgi> start <Bundle Id>
osgi> stop 41
If you then refresh the browser with this page, the page will no longer be available. But if you then start this application again:
osgi> start 41
and then refresh, the page will be accessible once again.
Accessing the OSGi console via Telnet
When starting Jetty as described above, it will terminate as soon as you quit your SSH client, which clearly is not want you want if you're intending to use this setup in production. Follow these steps to run Jetty permanently and still be able to access the OSGi console:
nohup ./eclipsert36.sh &
This makes sure the server is run in the background.
Now, connect to the OSGi console using telnet. The default port of the OSGi console is 2401, but you can change this (see below):
telnet localhost 2401
If you want to adjust the port the OSGi console is listening on, follow these steps:
Download the web application containing the OSGi base framework (/env/osgi_eclipsert36_sb_p2_jetty_7_0_1_linux_x86/jetty-distribution-7.0.1.v20091125/eclipsert36.linux.gtk.x86.war) and edit WEB-INF/web.xml. Look for the following lines:
<init-param> <param-name>commandline</param-name> <param-value>-console</param-value> </init-param>
and change them to
<init-param> <param-name>commandline</param-name> <param-value>-console 7777</param-value> </init-param>
This will make the OSGi console available on port 7777 (by the way, this parameter is documented in the Eclipse online help.