2016-06-30 14 views
2

Karaf 4.0.3Apache Karaf verfügen Voraussetzung

Ich habe folgende pseudo-Eigenschaft:

<features name="my-feature" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0"> 
<feature name="C" version="${project.version}" start-level="25" install="auto"> 
    <bundle start-level="25">...BundleC1...</bundle> 
</feature> 

<feature name="A" version="${project.version}" start-level="30" install="auto"> 
    <feature prerequisite="true">C</feature> 
    <bundle start-level="30">...BundleA1...</bundle> 
</feature> 

<feature name="B" version="${project.version}" start-level="35" install="auto"> 
    <feature prerequisite="true">C</feature> 
    <bundle start-level="35">...BundleB1...</bundle> 
</feature> 

C unabhängig ist
A auf C hängt
B auf C hängt

In diesem Beispiel importiert das Bundle 'BundleB1' die falsche Hauptversion von 'BundleC1' und wir erhalten die, fehlende ' Anforderung "Fehler (wie erwartet). Wenn ich mich jedoch bei der Karaf-Konsole anmelde und "feature: list" starte, sehe ich, dass C gestartet ist, A deinstalliert ist und B deinstalliert ist.

Ich erwarte, dass A, da es nur Abhängigkeiten gestartet werden, um C. Eine feine startet hat, wenn ich die gesamte C-Funktion Kommentar oder wenn ich feature:install A

danach laufen Wenn ich jede dieser drei Funktionen in separaten setzen feature.xml files Ich bekomme das erwartete Ergebnis von C + A als Started und B als Uninstalled.

Was mache ich falsch?

Bin ich falsch verstanden, wie das vorausgesetzte Attribut funktioniert? Wenn ich das vorausgesetzte Attribut alle zusammen überspringe, dann wird kein Feature installiert. Whatsover ...

Antwort

3

Dies ist das erwartete Verhalten in Karaf 4: Karaf erstellt ein Subsystem mit allen Features zur Installation. Dieses Subsystem ist in einem Durchgang gelöst: Entweder es ist erfolgreich oder es versagt als Ganzes.

Das Attribut prerequisite weist Karaf an, diese Funktion in einem unabhängigen Subsystem zu installieren: Alle Pakete werden installiert und gestartet, bevor versucht wird, die anderen Funktionen aufzulösen.

In Ihrem Fall:

  • C installiert ist/gestartet;
  • A + B gelöst ist, aber es funktioniert nicht
+0

Ok, also den einzigen Weg, C + A erhalten installiert/Begonnen und B werden zu deinstallierende/fehlgeschlagen ist jede Unter Funktion in separate Funktion zu extrahieren .xml-Dateien? Auf diese Weise werden sie in ihrem eigenen Kontext/Prozess installiert? – stromvap

+0

Es hängt davon ab, wie Sie Ihre Funktionen installieren. Wenn Sie den Ordner deploy verwenden, dann müssen Sie diese in verschiedene Dateien aufteilen. Wenn Sie die Datei 'org.apache.karaf.features.cfg' verwenden, können Sie angeben, welches Feature installiert werden soll, und Gruppen mit Klammern erstellen , wie: (C), (A), (B) –

+2

Könntest du bitte erläutern, wie man 'org.apache.karaf.features.cfg' und "groups" benutzt oder mich in die Richtung einer Dokumentation zeige? Ich finde die Karaf-Dokumentation ziemlich mangelhaft und es ist schwierig, relevante Beispiele zu finden. – stromvap

Verwandte Themen