Remote Provisioning mit Eclipse RTP
Remote Provisioning
Das Remote Provisioning ist gerade während der Entwicklungsphase interessant, da es in die eigene Eclipse IDE integriert ist. Die Idee: Nach Installation der benötigten Pakete erscheint ein neuer Run Configuration Type: Cloud Applications (Abb. 2). Mit dessen Hilfe lassen sich Eclipse-Features auswählen und auf einem Remote-Server installieren als auch starten. Der Run-Befehl führt die Anwendung nicht wie oft üblich lokal aus, sondern führt lokal nur die Kompilierung und das Packaging aus. Daraufhin wird die fertige Anwendung automatisch auf den gewünschten Remote-Server geladen und gestartet. Sollte sie bereits zuvor gestartet worden sein, wird die bereits laufende Kopie ersetzt.

Dazu ein Beispiel: Listing 1 und Listing 2 enthalten eine feature.xml eines Beispielprojektes und eine OSGi-Komponente dieser Anwendung, die über deklarative Services gesteuert wird. Die Komponente verwendet den OSGi-HTTP-Service, um ein Servlet (das DemoServlet) auszuliefern. Das komplette Projekt kann unter [1] heruntergeladen werden. Legt man nun eine neue Run Configuration vom Type Cloud Application an, und wählt das gezeigte Feature einen Remote-Server mit installierter Eclipse RTP Runtime aus, kann man mit einem Klick auf RUN die Anwendung auf dem Remote-System installieren. Das Plug-in verwendet daraufhin den bereits installierten Jetty-Server als HTTP-Service und registriert das Servlet. Das erstellte Servlet ist sofort unter [server-url]/demo erreichbar. Aktualisiert man nun während der Entwicklung das Servlet und führt die Run-Configuration erneut aus, erscheint unter [server-url]/demo die neue Version des Servlets. Interessant hierbei ist, dass dieser Ansatz keinerlei Anpassungen an das eigentliche Projekt oder die Feature-Konfiguration benötigt. Die in Listing 1 und 2 gezeigten Dateien enthalten keine speziellen Anpassungen für das Remote Publishing. Somit können beispielsweise auch komplexe RAP-Anwendungen oder beliebige andere OSGi-basierte Anwendungen auf diese Weise installiert werden, ohne dass zuvor Anpassungen notwendig sind.
Listing 1
Listing 2
public class HttpComponent { private static final String ALIAS_SERVLET = "/demo"; private HttpService httpService; public void setHttpService(HttpService httpService) { this.httpService = httpService; } public void unsetHttpService(HttpService httpService) { this.httpService = null; } protected void startService() throws NamespaceException, ServletException { Servlet demoServlet = new DemoServlet(); httpService.registerServlet(ALIAS_SERVLET, demoServlet, null, null); } }
Hinterlasse einen Kommentar