© Excellent backgrounds/Shutterstock.com
Java Magazin
Schnelle Entwicklung von Vaadin-Applikationen auf OSGi-Basis

OSGi fürs Web-UI

Vaadin 7 setzt in Bezug auf Web-UI-Technologien neue Maßstäbe. Allerdings fehlte bis vor Kurzem eine OSGi-Integration. Das Open-Source-Projekt „lunifera.org - OSGi-services for business applications“ hat es sich zur Aufgabe gemacht, der Community eine sehr flexible Implementierung zur Verfügung zu stellen. Vaadin-Applikationen lassen sich per OSGi Configuration Admin beschreiben und auf HttpServices deployen.

Florian Pirchner


Der OSGi-Spezifikation folgend, stehen dem Entwickler zwei Möglichkeiten zur Verfügung, um Webressourcen wie Servlets, Ressourcen etc. einem Webserver zugänglich machen zu können: zum einen die Web-Applications-Spezifikation und zum anderen die HTTP-Service-Spezifikation. Beide werden im OSGi Service Compendium beschrieben [1].

Diese beiden Spezifikation unterscheiden sich in ihren Modellen sehr stark. Die HTTP-Service-Spezifikation definiert einen OSGi Service, der dazu dient, Servlets, Filter und Ressourcen registrieren zu können. Allerdings stellt sie keine Möglichkeit zur Verfügung, um Konfigurationen analog einer web.xml vorzunehmen. Auf den ServletContext und evtl. Listener kann kein Einfluss genommen werden. Der HttpService wird von einem Provider zur Verfügung gestellt, wie bspw. org.eclipse.equinox.http.servlet. Einstellungen bzgl. Context Path müssen bereits beim Start des Jetty-Servers durch org.eclipse.equinox.http.jetty per context.path Property konfiguriert werden.

Um den in der JEE-Welt stark verwendeten Webapplikationen – die auf Basis von web.xml beschrieben werden – einen einfachen Zutritt in die OSGi-Welt zu bieten, wurde die „Web-Applications-Spezifikation“ definiert. Mithilfe dieser Spezifikation können web.xml-Dateien verwendet werden, um alle notwendigen Konfigurationen vorzunehmen. Die Basis bietet in diesem Fall ein Web-Bundle (WAB). Dieses entspricht einem normalen Bundle, angereichert mit zusätzlichen Headern im Bundle-Manifest. Durch die in einem WAB enthaltenen Informationen können Webapplikationen analog zum JEE-Ansatz gestartet werden.

In diesem Artikel wird ausschließlich auf die Verwendung der HTTP-Service-Spezifikation eingegangen. Im Zuge des Open-Source-Projekts lunifera.org – OSGi-­services for business applications gab es reifliche Überlegungen, ob die Web-Applications-Spezifikation verwendet werden soll. Wegen der höheren Flexibilität des HttpServices haben wir uns dagegen entschieden und eine Implementierung einer Vaadin-7-OSGi-Bridge auf Basis des HttpService umgesetzt.

Gerne möchte ich Ihnen nun einen Einblick geben, wie die Bridge implementiert wurde und wie einfach Sie diese in Ihren eigenen Projekten verwenden können. Ziel der Umsetzung war es, dem Entwickler eine möglichst einfache und dennoch sehr flexible Implementierung auf Basis von OSGi-Spezifikationen zu bieten, um Vaadin 7 optimal in OSGi-Umgebungen nutzen zu können.

Dieser Artikel setzt Basiswissen in OSGi und den Serviceerweiterungen OSGi-DS (Declarative...

Java Magazin
Schnelle Entwicklung von Vaadin-Applikationen auf OSGi-Basis

OSGi fürs Web-UI

Vaadin 7 setzt in Bezug auf Web-UI-Technologien neue Maßstäbe. Allerdings fehlte bis vor Kurzem eine OSGi-Integration. Das Open-Source-Projekt „lunifera.org - OSGi-services for business applications“ hat es sich zur Aufgabe gemacht, der Community eine sehr flexible Implementierung zur Verfügung zu stellen. Vaadin-Applikationen lassen sich per OSGi Configuration Admin beschreiben und auf HttpServices deployen.

Florian Pirchner


Der OSGi-Spezifikation folgend, stehen dem Entwickler zwei Möglichkeiten zur Verfügung, um Webressourcen wie Servlets, Ressourcen etc. einem Webserver zugänglich machen zu können: zum einen die Web-Applications-Spezifikation und zum anderen die HTTP-Service-Spezifikation. Beide werden im OSGi Service Compendium beschrieben [1].

Diese beiden Spezifikation unterscheiden sich in ihren Modellen sehr stark. Die HTTP-Service-Spezifikation definiert einen OSGi Service, der dazu dient, Servlets, Filter und Ressourcen registrieren zu können. Allerdings stellt sie keine Möglichkeit zur Verfügung, um Konfigurationen analog einer web.xml vorzunehmen. Auf den ServletContext und evtl. Listener kann kein Einfluss genommen werden. Der HttpService wird von einem Provider zur Verfügung gestellt, wie bspw. org.eclipse.equinox.http.servlet. Einstellungen bzgl. Context Path müssen bereits beim Start des Jetty-Servers durch org.eclipse.equinox.http.jetty per context.path Property konfiguriert werden.

Um den in der JEE-Welt stark verwendeten Webapplikationen – die auf Basis von web.xml beschrieben werden – einen einfachen Zutritt in die OSGi-Welt zu bieten, wurde die „Web-Applications-Spezifikation“ definiert. Mithilfe dieser Spezifikation können web.xml-Dateien verwendet werden, um alle notwendigen Konfigurationen vorzunehmen. Die Basis bietet in diesem Fall ein Web-Bundle (WAB). Dieses entspricht einem normalen Bundle, angereichert mit zusätzlichen Headern im Bundle-Manifest. Durch die in einem WAB enthaltenen Informationen können Webapplikationen analog zum JEE-Ansatz gestartet werden.

In diesem Artikel wird ausschließlich auf die Verwendung der HTTP-Service-Spezifikation eingegangen. Im Zuge des Open-Source-Projekts lunifera.org – OSGi-­services for business applications gab es reifliche Überlegungen, ob die Web-Applications-Spezifikation verwendet werden soll. Wegen der höheren Flexibilität des HttpServices haben wir uns dagegen entschieden und eine Implementierung einer Vaadin-7-OSGi-Bridge auf Basis des HttpService umgesetzt.

Gerne möchte ich Ihnen nun einen Einblick geben, wie die Bridge implementiert wurde und wie einfach Sie diese in Ihren eigenen Projekten verwenden können. Ziel der Umsetzung war es, dem Entwickler eine möglichst einfache und dennoch sehr flexible Implementierung auf Basis von OSGi-Spezifikationen zu bieten, um Vaadin 7 optimal in OSGi-Umgebungen nutzen zu können.

Dieser Artikel setzt Basiswissen in OSGi und den Serviceerweiterungen OSGi-DS (Declarative...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang