Wie benutze ich Servlet mit osgi?

8

Ich möchte einen Webdienst für den OSGi-Container erstellen und bereitstellen. Veröffentlichen Sie den Dienst beispielsweise unter der folgenden Adresse:

%Vor%

Der Dienst generiert eine HTML-Antwort in einem Servlet.

Ich habe viel gesucht und habe:

%Vor%

}

Das Werkzeug, das ich verwenden muss:

  1. maven um das Projekt zu erstellen

  2. Fuse ESB karaf als OSGi-Container

Die Frage ist, dass ich Maven nicht kenne, um einen solchen Web-Service zu erstellen und zu implementieren, wie:

wie man webapp / web.xml spezifiziert

Wie pom.xml angegeben wird: Abhängigkeiten, Pakettyp, Plugin

So registrieren Sie den Service: Implementieren Sie BundlActivator oder konfigurieren Sie die Spring XML-Datei

Kann mir jemand dabei helfen? Gibt es ein detailliertes Tutorial für Neulinge?

    
Li' 01.05.2013, 06:21
quelle

6 Antworten

4

Wenn Sie bndtools verwenden, erstellen Sie ein deklaratives Dienstprojekt, und fügen Sie diese Anmerkung Ihrem Servlet hinzu:

%Vor%

Dann erstellen Sie einen bnd run-Deskriptor mit 'Apache Felix 4 mit Web Console und Gogo', fügen Sie einfach das Apache Felix Http Whiteboard-Bundle hinzu und Sie können loslegen. Sie finden Ihr Servlet unter http://localhost:8080/hello

Wie es funktioniert. Die @ Component-Annotation macht Ihre Klasse zu einem Service (in diesem Fall aufgrund des Bereitstellungsattributs ein Servlet-Service). Dies wird mit der Serviceeigenschaft 'Alias' registriert. Das Apache Felix Http Whiteboard-Paket nimmt diese Dienste auf und registriert sie als Servlets. Ich denke nicht, dass es einfacher werden kann.

    
Peter Kriens 01.05.2013 06:52
quelle
3

Überprüfen Sie dies, möglicherweise kann es Ihnen helfen Erstellen Sie ein Servlet, das auf einen OSGi-Service zugreift

    
MonTy Adel 01.05.2013 06:28
quelle
2

Ich möchte die Antwort von Peter Kriens nachverfolgen. Wenn die @Component -Anmerkungen in der OSGi-Spezifikation verfügbar sind, könnte das Beispiel wie folgt aussehen:

%Vor%

Die Annotation @Component wird aus org.osgi.service.component importiert und die Eigenschaft, die den implementierten Service angibt, hat ihren Namen in service geändert.

Trotz seines Namens kann property mehrere Eigenschaften enthalten, beispielsweise

%Vor%

oder Sie könnten properties verwenden, um eine oder mehrere Eigenschaftendateien wie folgt anzugeben:

%Vor%

Das Obige wurde mit dem HttpService getestet, der mit Apache Felix geliefert wird. Die Dokumentation des Apache Felix HTTP Service finden Sie hier: Ссылка

    
Rüdiger Herrmann 05.12.2016 19:41
quelle
1

Sie können das folgende Tutorial hilfreich finden: Ссылка . Es basiert auf Kapitel 2 von Enterprise OSGi in Action . Kapitel acht hat auch eine Diskussion darüber, wie Build-Tools wie Maven verwendet werden, um die richtige Bundle-Struktur zu erhalten, und Ссылка hat auch wirklich hilfreiche maven Anweisungen.

Auf einer hohen Ebene ist es wahrscheinlich die beste Route, etwas wie Apache Aries oder Eclipse Gemini zu nutzen, um es Ihnen zu ermöglichen, ein WAB (ein Web-Bundle) auszuführen. Ein WAB ist fast genau wie ein WAR strukturiert, außer dass das Manifest OSGi-Metadaten enthält. Ihre Servlet-Klasse selbst wäre identisch mit dem Nicht-OSGi-Fall. Das Framework behandelt das Erkennen und Starten Ihres Servlets.

    
Holly Cummins 01.05.2013 14:59
quelle
0

Um Ihre Frage zu beantworten, werfen Sie einen Blick auf Pax Web für weitere Details, wie es funktioniert und wahrscheinlich am besten für Sie in den mehr als 100 Integrationstests von Pax Web, um Ihnen eine Idee zu geben, wie Sie es verwenden können. Es gibt auch Beispiele , die Ihnen zeigen, wie Sie mit std arbeiten können. Http-Service, über Whiteboard-Extender oder als WAR / WAB.

    
Achim Nierbeck 02.05.2013 06:35
quelle
0

Ich nehme an, Sie benötigen eine Servlet-Bridge, um auf den Dienst zuzugreifen. Ihr Dienst sollte als OSGI-Paket implementiert werden. Servlet-Bridge muss ein eingebettetes OSGI-Framework haben. Befolgen Sie dieses Beispiel für Details: Ссылка

    
Victor Bashurov 08.07.2014 06:39
quelle

Tags und Links