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:
maven um das Projekt zu erstellen
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?
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.
Überprüfen Sie dies, möglicherweise kann es Ihnen helfen Erstellen Sie ein Servlet, das auf einen OSGi-Service zugreift
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:
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
oder Sie könnten properties
verwenden, um eine oder mehrere Eigenschaftendateien wie folgt anzugeben:
Das Obige wurde mit dem HttpService getestet, der mit Apache Felix geliefert wird. Die Dokumentation des Apache Felix HTTP Service finden Sie hier: Ссылка
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.
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.
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: Ссылка