Difference between revisions of "EclipseRT for Amazon EC2"

From Eclipsepedia

Jump to: navigation, search
(Accessing the OSGi console via Telnet)
Line 94: Line 94:
You can now start Jetty using the following commands:
You can now start Jetty using the following commands:
'''cd /env/osgi_eclipsert36_sb_p2_jetty_7_0_1_linux_x86/jetty-distribution-7.0.1.v20091125'''  
'''cd /env/osgi_eclipsert36_sb_p2_jetty_7_0_1_linux_x86/jetty-distribution-7.0.1.v20091125'''  
'''nohup ./eclipsert36.sh &'''  
'''nohup ./eclipsert36.sh &'''  

Revision as of 04:01, 9 April 2010



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
Manifest: eclipsert/osgi_eclipsert36_20100311_jetty_linux_x86.manifest.xml

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:

cd /env/osgi_eclipsert36_sb_p2_jetty_7_0_1_linux_x86/jetty-distribution-7.0.1.v20091125

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.
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
2010-03-11 16:11:29.628:INFO::Extract jar:file:/env/osgi_eclipsert36_sb_p2_jetty
k.x86.war!/ to /tmp/Jetty_0_0_0_0_8080_eclipsert36.linux.gtk.x86.war____hjvowd/w
2010-03-11 16:11:30.218:INFO::NO JSP Support for /, did not find org.apache.jasp


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:

osgi> help

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:

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:


and change them to

  <param-value>-console 7777</param-value>

This will make the OSGi console available on port 7777.

You can now start Jetty using the following commands:

cd /env/osgi_eclipsert36_sb_p2_jetty_7_0_1_linux_x86/jetty-distribution-7.0.1.v20091125

nohup ./eclipsert36.sh &

Now, connect to the OSGi console using telnet:

telnet localhost 7777