Implementieren von OSGi-Bundles in einem JVM-Server

Um eine Java™-Anwendung in einem JVM-Server zu implementieren, müssen Sie die OSGi-Bundles für die Anwendung im OSGi-Framework des JVM-Zielservers installieren.

Vorbereitende Schritte

Die CICS-Bundles, die die OSGi-Bundles für die Anwendung enthalten, müssen auf dem z/OS-Dateisystem implementiert werden. Der JVM-Zielserver muss für die Ausführung eines OSGi-Frameworks konfiguriert und in der CICS-Region aktiviert sein. Sie müssen über CICS Explorer mit der CICS-Region verbunden sein, um die CICS-Ressourcen zu erstellen.

Informationen zu diesem Vorgang

Ein CICS-Bundle kann ein oder mehrere OSGi-Bundles und OSGi-Services enthalten. Da das CICS-Bundle die Implementierungseinheit bildet, werden alle OSGi-Bundles und -Services gemeinsam als Teil der BUNDLE-Ressource verwaltet. Das OSGi-Framework verwaltet auch den Lebenszyklus der OSGi-Bundles und -Services, was auch das Management der Abhängigkeiten und die Versionssteuerung beinhaltet.

Es ist ein bewährtes Verfahren, dass alle OSGi-Bundles, die eine Java-Anwendungskomponente bilden, gemeinsam in einem CICS-Bundle implementiert werden. Wenn Abhängigkeiten zwischen OSGi-Bundles bestehen, implementieren Sie diese in demselben CICS-Bundle. Wenn Sie die CICS-BUNDLE-Ressource installieren, stellt CICS sicher, dass alle Abhängigkeiten zwischen den OSGi-Bundles aufgelöst werden.

Wenn Abhängigkeiten von einem OSGi-Bundle bestehen, das eine Bibliothek mit einheitlichem Code enthält, besteht ein bewährtes Verfahren darin, ein separates CICS-Bundle für die Bibliothek zu erstellen. In diesem Fall ist es wichtig, dass die CICS-BUNDLE-Ressource, in der die Bibliothek enthalten ist, zuerst installiert wird. Wenn Sie die Java-Anwendung vor den CICS-Bundles installieren, von denen sie abhängt, ist das OSGi-Framework nicht in der Lage, die Abhängigkeiten der Java-Anwendung aufzulösen.

Vorgehensweise

  1. Erstellen Sie eine BUNDLE-Ressource, die das Verzeichnis des Bundles in zFS angibt:
    1. Klicken Sie in der CICS-SM-Perspektive auf der Menüleiste in CICS Explorer auf Definitionen > Bundledefinitionen, um die Ansicht "Bundledefinitionen" zu öffnen.
    2. Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in der Ansicht und klicken Sie auf Neu, um den Assistenten "Neue Bundledefinition" zu öffnen. Geben Sie in den Feldern des Assistenten die Details für die BUNDLE-Ressource ein.
    3. Installieren Sie die BUNDLE-Ressource. Sie können die Ressource in aktiviertem oder in inaktiviertem Zustand installieren:
      • Wenn Sie die Ressource im Status INAKTIVIERT installieren, installiert CICS die OSGi-Bundles im Framework und löst die Abhängigkeiten auf, versucht aber nicht, die Bundles zu starten.
      • Wenn Sie die Ressource im Status AKTIVIERT installieren, installiert CICS die OSGi-Bundles, löst die Abhängigkeiten auf und startet die OSGi-Bundles. Wenn das OSGi-Bundle einen verzögerten Bundleaktivator enthält, versucht das OSGi-Framework nicht, das Bundle zu starten, bis es zuerst durch ein anderes OSGi-Bundle aufgerufen wurde.
  2. Optional: Wenn sich die BUNDLE-Ressource nicht bereits im Status AKTIVIERT befindet, dann aktivieren Sie sie, damit die OSGi-Bundles im Framework gestartet werden.
  3. Klicken Sie auf der Menüleiste in CICS Explorer auf Operationen > Bundles, um die Ansicht "Bundles" zu öffnen. Überprüfen Sie den Status der BUNDLE-Ressource.
    • Wenn sich die BUNDLE-Ressource im Status AKTIVIERT befindet, konnte CICS alle Ressourcen im Bundle erfolgreich installieren.
    • Wenn sich die BUNDLE-Ressource im Status INAKTIVIERT befindet, konnte CICS mindestens eine der Ressourcen im Bundle nicht installieren.
    Wenn die BUNDLE-Ressource nicht im Status AKTIVIERT installiert werden konnte, dann überprüfen Sie die Bundlekomponenten für die BUNDLE-Ressource. Wenn sich einzelne Bundlekomponenten im Status UNBRAUCHBAR befinden, konnte CICS die OSGi-Bundles nicht erstellen. In der Regel weist dieser Status darauf hin, dass ein Problem mit dem CICS-Bundle in zFS vorliegt. Sie müssen dann die BUNDLE-Ressource löschen, das Problem beseitigen und anschließend die BUNDLE-Ressource noch einmal installieren.
  4. Klicken Sie auf der Menüleiste in CICS Explorer auf Operationen > Java > OSGi-Bundles, um die Ansicht "OSGi-Bundles" zu öffnen. Überprüfen Sie den Status der installierten OSGi-Bundles und -Services im OSGi-Framework. In der folgenden Tabelle sind die Statusangaben zusammengefasst:
    BUNDLEPART OSGIBUNDLE OSGISERVICE
    ENABLED WIRD GESTARTET Nicht zutreffend
    ENABLED ACTIVE ACTIVE
    ENABLED ACTIVE INACTIVE
    DISABLED AUFGELÖST Nicht zutreffend
    DISABLED INSTALLIERT Nicht zutreffend
    UNBRAUCHBAR Nicht zutreffend Nicht zutreffend
    • Wenn sich das OSGi-Bundle im Status WIRD GESTARTET befindet, wurde der Bundleaktivator aufgerufen, aber noch nicht zurückgegeben. Wenn für das OSGi-Bundle eine Richtlinie mit verzögerter Aktivierung gilt, bleibt das Bundle in diesem Zustand, bis es im OSGi-Framework aufgerufen wurde.
    • Wenn die OSGi-Bundles und OSGi-Services aktiv sind, ist die Java-Anwendung bereit.
    • Wenn der OSGi-Service inaktiv ist, hat CICS festgestellt, dass ein OSGi-Service mit diesem Namen bereits im OSGi-Framework vorhanden ist.
    • Wenn Sie die BUNDLE-Ressource inaktivieren, wird das OSGi-Bundle in den Status RESOLVED versetzt.
    • Wenn sich das OSGi-Bundle im Status INSTALLED befindet, wurde es entweder nicht gestartet oder konnte nicht gestartet werden, da die Abhängigkeiten im OSGi-Bundle nicht aufgelöst werden konnten.

Ergebnisse

Das BUNDLE wurde aktiviert, die OSGi-Bundles wurden erfolgreich im OSGi-Framework installiert und OSGi-Services sind aktiv. Die OSGi-Bundles und -Services sind für weitere Bundles im Framework verfügbar.