Successfully reported this slideshow.

Dynamic and modular Web Applications with Equinox and Vaadin

3

Share

Loading in …3
×
1 of 29
1 of 29

Dynamic and modular Web Applications with Equinox and Vaadin

3

Share

Download to read offline

This presentation introduces a little demo application that uses OSGi (Equixox) on the server. The demo uses Vaadin as UI technology and shows how you can create dynamicly changing UIs within a server-side OSGi Web application.

This presentation introduces a little demo application that uses OSGi (Equixox) on the server. The demo uses Vaadin as UI technology and shows how you can create dynamicly changing UIs within a server-side OSGi Web application.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Dynamic and modular Web Applications with Equinox and Vaadin

  1. 1. Dynamic modular Web applications with Equinox and Vaadin Kai Tödter Siemens Corporate Technology
  2. 2. Who am I?  Software Architect/Engineer at Siemens Corporate Technology  Eclipse RCP expert and OSGi enthusiast  Open Source advocate  Committer at e4 and Platform UI  E-mail: kai.toedter@siemens.com  Twitter: twitter.com/kaitoedter  Blog: toedter.com/blog 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 2
  3. 3. Outline  Demo  Server-side OSGi  Vaadin  Whiteboard Pattern  OSGi Declarative Services (DS)  Code deep dive  Discussion 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 3
  4. 4. Demo 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 4
  5. 5. Download & Blog  You can download the demo projects (6,8 MB, including the target platform) at http://www.toedter.com/download/vaadin/os gi-vaadin-demo.zip  See also my blog “Dynamic modular Web Applications with Vaadin and OSGi” http://www.toedter.com/blog/?p=412 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 5
  6. 6. Server-side OSGi Picture from http://www.sxc.hu/photo/1043923 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 6
  7. 7. Server-side OSGi  For this demo I use Equinox as OSGi container  To run server-side Equinox there’s 2 choices:  Embed Equinox in a servlet container  Embed a HTTP server in Equinox 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 7
  8. 8. Embed Equinox in a Servlet Container  Needed bundles:  org.eclipse.equinox.servletbridge  org.eclipse.equinox.servletbridge.http  org.eclipse.equinox.http.servlet  [optional] org.eclipse.equinox.http.registry  See http://www.eclipse.org/equinox/server/ http_in_container.php 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 8
  9. 9. Embed Jetty in Equinox  Needed bundles:  org.eclipse.equinox.http.jetty  org.eclipse.equinox.http.servlet  org.mortbay.jetty  org.apache.commons.logging  javax.servlet  [optional] org.eclipse.equinox.http.registry  See http://www.eclipse.org/equinox/server/ http_in_equinox.php 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 9
  10. 10. Hello, JAX! OSGi Servlet Demo Picture by Office Online, iStockPhoto http://office.microsoft.com/en-us/images/results.aspx?qu=world#ai:MP900444203| 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 10
  11. 11. 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 11
  12. 12. What is Vaadin?  Server-based RIA Framework  Uses Google Web Toolkit (GWT) as rendering engine  Pure Java, no JavaScript, no configuration  Rich widget set  Out of the box OSGi support  Only one JAR file, already an OSGi bundle 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 12
  13. 13. Demo 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 13
  14. 14. The Whiteboard Pattern  Problem: Often a service provides an implementation of the publisher/subscriber design pattern and provides methods to register listeners for notifications  The OSGi service model provides a service registry with these notification mechanisms already!  So:  Don’t get a service and register as listener  Be a service yourself and register with the OSGi service registry! 14
  15. 15. Example: The Listener Pattern  Clients use ApplicationService to register view and action contributions  Client is responsible for handling dynamic behavior 15
  16. 16. Example: The Whiteboard Pattern  Clients register view and action contributions as services  Application manager is responsible for handling dynamic behavior 16
  17. 17. Whiteboard Pattern in Vaadin Demo  The Action and View contribution managers are NOT services  Instead, they are wrapped in a OSGi Declarative Services (DS) component  All action and view contributions are OSGi services and implement  IActionContribution  IViewContribution 17
  18. 18. OSGi Declarative Services Active Bundle Active Bundle Component Component Service Component Component Instance reference Instance provide Component Component Description Description 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 18
  19. 19. Life Cycle DS-powered Bundle Service Component Runtime (SCR) Component Component Component create 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 19
  20. 20. Declaring a Component  Specify component description(s) via Service-Component manifest header Service-Component: OSGI-INF/treeView.xml  Specify the implementation class <component xmlns="http://www.osgi.org/xmlns/scr/v1.1.0"> <implementation class="...TreeView"/> </component> 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 20
  21. 21. Providing a Service  Specify each service interface  By default components providing a service are created on demand (lazy) <service> <provide interface="...IViewContribution"/> <provide interface="...IActionContribution"/> </service> 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 21
  22. 22. Referencing Services  Specify the service interface  Specify bind and unbind methods  Specify the cardinality <reference interface="...IPersonManager" bind="setPersonManager" unbind="removePersonManager" cardinality="1..1"/> 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 22
  23. 23. Further Reading  Chris Brind:  In Bed with Vaadin and OSGi  http://www.perplentropy.com/2010/02/in-bed-with- vaadin-and-osgi.html  I use Chris’ bundles in this demo  Neil Bartlett:  Vaadin OSGi bridge at GitHub  https://github.com/njbartlett/VaadinOSGi  Petter Holmström:  Creating a Modular Vaadin Application with OSGi  http://vaadin.com/wiki/- /wiki/Main/Creating%20a%20Modular%20Vaadin%20 Application%20with%20OSGi 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 23
  24. 24. Putting it all together…  Main demo application is a DS component  factory='vaadin.app' => used Chris Brind’s implementation  0..n service references to  IViewContribution  IActionContribution  Source code will be shown soon…  5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 24
  25. 25. Resources, Images and Themes  Resources (e.g. images) have to be put in a fragment with the com.vaadin bundle as host  See project com.siemens.ct.osgi.vaadin.pm.theme 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 25
  26. 26. Code Deep Dive Picture from http://www.sxc.hu/photo/1159613 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 26
  27. 27. Picture from http://www.sxc.hu/photo/922004 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 27
  28. 28. License  This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License  See http://creativecommons.org/licenses/by-nc- nd/3.0/de/deed.en_US 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 28
  29. 29. Picture Index Many thanks to the authors of the following pictures:  Slide „Server-side OSGi“: http://www.sxc.hu/photo/1043923  Slide „Hello JAX!“: http://office.microsoft.com/en- us/images/results.aspx?qu=world#ai:MP900444203|  Slide „Reindeer“ Animation: http://www.sxc.hu/photo/1138596  Slide „Code Browsing“: http://www.sxc.hu/photo/1159613  Slide “Discussion”: http://www.sxc.hu/photo/922004 5/9/2011 © Kai Tödter and others, Licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License. 29

×