© Excellent backgrounds/Shutterstock.com
Eine JVM Runtime für REST Services

Swookiee


Die meisten großen datengetriebenen Anwendungen, die nicht auf Batchtechnologien wie Hadoop oder Ähnlichem beruhen, stellen ihre Services via REST bereit. Moderne Softwareprojekte haben die Aufgabe, solche Applikationen möglichst schnell zu entwickeln, zu dokumentieren und ihren Zustand zu überwachen. Insbesondere in dynamischen, agilen Umgebungen, in denen Continuous Delivery und Continuous Deployment den Erfolg garantieren, ist ein entsprechend detailliertes Monitoring der Anwendung unentbehrlich. Allerdings ist gerade dies für den Entwickler äußerst mühselig. Swookiee („shaved wookiee“ [1]) ist eine Open-Source-Laufzeitumgebung, die es sich zur Aufgabe gemacht hat, genau diese Prozedur für den Entwickler zu vereinfachen und zu verkürzen.

Die Services können, je nach Belieben, in Java, Groovy oder Scala geschrieben werden. In diesem Artikel wird demonstriert, wie sich JVM-basierte REST Services mit JAX-RS 2 und Jersey als dessen Implementierung zusammen mit Jetty, Jackson und der Equinox OSGi Runtime implementieren lassen. Außerdem wird veranschaulicht, wie diese Services unter Einsatz einer interaktiven Swagger-Dokumentation angereichert und verständlicher gemacht werden können. Im Folgenden wird diskutiert, wie man mithilfe von Werkzeugen wie Elasticsearch, Logstash, Kibana (ELK) und JSON Logging den Überblick über den Status seiner auf mehrere Knoten verteilten Applikation verbessert. Außerdem wird gezeigt, wie mithilfe des Java-Metrics-API tiefe Einblicke bis in die eigene Geschäftslogik gewonnen werden können.

Zudem soll demonstriert werden, wie sich die Swookiee Runtime durch eine simple Implementierung der OSGi-Cloud-Spezifikation RFC-182 via REST fernsteuern lässt.

OSGi

OSGi enthält eine Reihe von Spezifikationen, die ein dynamisches Komponenten- und Servicemodell für Java beschreiben [2]. Die Bundles bilden dabei den zentralen Bestandteil des OSGi-Komponentenmodells. Der Lebenszyklus der Bundles lässt sich beispielsweise durch Starten, Stoppen, Installieren und Deinstallieren steuern. Jedes einzelne Bundle gibt seine zu exportierenden Java-Pakete sowie die benötigten Abhängigkeiten in Form von Paketimporten an. Das ist ein wesentlicher Vorteil, denn API und Implementierung können auf diese Weise verborgen und entkoppelt werden. Hinzukommend wird so eine Abhängigkeit zwischen den Bundles klar definiert.

Innerhalb von Bundles ist eine Registrierung von OSGi Services möglich, sodass diese von anderen Komponenten referenziert werden können. Abhän...

Neugierig geworden?

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