Biblioteki współużytkowane i pliki Java

Pliki Java™ można przechowywać w bibliotekach współużytkowanych. Pliki JAR są spakowane w bibliotekach współużytkowanych.

Klasy Java wdrożone w bibliotece współużytkowanej nie są dostępne dla programu ładującego klasy serwera integracyjnego. Podczas wdrażania biblioteki współużytkowanej zawierającej pliki Java tworzony jest nowy program ładujący klasy dla tej biblioteki współużytkowanej. Ten program ładujący klasy zawiera wszystkie klasy Java w bibliotece współużytkowanej, a także klasy Java ze wszystkich przywoływanych bibliotek współużytkowanych. Nie istnieje delegacja z jednego programu ładującego klasy biblioteki współużytkowanej do innego programu ładującego klasy biblioteki współużytkowanej. Na poniższym diagramie przedstawiono bibliotekę współużytkowaną shlib1zawierającą plik Java o nazwie JavaA. Biblioteka współużytkowana shlib1 odwołuje się do innej biblioteki współużytkowanej, shlib2, która zawiera plik Java o nazwie JavaB. Po wdrożeniu pliku shlib1 tworzony jest program ładujący klasy dla plików Java w tej bibliotece współużytkowanej oraz dla przywoływanej biblioteki współużytkowanej.

Klasa Java może istnieć w wielu programach ładujących klasy, jeśli ta klasa Java jest zawarta w bibliotece współużytkowanej, do której odwołują się inne biblioteki współużytkowane. Po zaktualizowaniu tej klasy Java przez ponowne wdrożenie biblioteki współużytkowanej, która ją zawiera, wszystkie programy ładujące klasy dla wszystkich bibliotek współużytkowanych, które zawierają tę klasę Java, zostaną usunięte i ponownie utworzone.

Klasy Java w całym programie ładującym klasy serwera integracyjnegosą izolowane od klas Java w dowolnych programach ładujących klasy bibliotek współużytkowanych. Podobnie klasy Java w programach ładujących klasy bibliotek współużytkowanych są izolowane od klas Java w całym programie ładującym klasy serwera integracyjnego.

Węzeł JavaCompute w przepływie komunikatów lub podprzepływie może uzyskać dostęp do klas Java w bibliotece współużytkowanej i wszystkich przywoływanych bibliotekach współużytkowanych. Na poniższym diagramie przedstawiono węzeł JavaCompute w przepływie komunikatów w aplikacji, ale węzeł JavaCompute może znajdować się w podprzepływie w bibliotece współużytkowanej.
Diagram przedstawia sposób, w jaki aplikacja odwołuje się do biblioteki współużytkowanej, a biblioteka współużytkowana odwołuje się do drugiej biblioteki współużytkowanej. Węzeł JavaCompute w aplikacji może uzyskać dostęp do klas Java w obu bibliotekach współużytkowanych.
Aby uzyskać dostęp do tych klas Java, należy określić kwalifikator biblioteki współużytkowanej dla strategii programu ładującego klasy Java w węźle JavaCompute . Kwalifikator biblioteki współużytkowanej znajduje się w nawiasach klamrowych {}, jak pokazano w poniższym przykładzie:
Na diagramie przedstawiono, że właściwość usługi programu ładującego klasy Java w węźle JavaCompute jest ustawiona na wartość {sharedLibraryName}.
W przypadku odwołania do biblioteki współużytkowanej zawierającej klasy Java wszystkie klasy Java mogą zostać załadowane do wielu programów ładujących klasy. Klasy Java mogą zostać załadowane do programu ładującego klasy dla tej biblioteki współużytkowanej oraz do programu ładującego klasy dla wszystkich innych bibliotek współużytkowanych, które odwołują się do tej biblioteki współużytkowanej. Na poniższym diagramie przedstawiono, w jaki sposób trzy różne aplikacje odwołują się do trzech bibliotek współużytkowanych. Aplikacja 1 odwołuje się do biblioteki współużytkowanej 1, która również odwołuje się do biblioteki współużytkowanej A. Aplikacja 2 odwołuje się do biblioteki współużytkowanej 2, która również odwołuje się do biblioteki współużytkowanej A. Aplikacja 3 odnosi się tylko do biblioteki współużytkowanej A.
Diagram jest opisany w tekście otaczającym.
Poniższy diagram przedstawia sposób, w jaki aplikacje uzyskują dostęp do klas Java w czasie wykonywania. Biblioteki współużytkowane 1 i 2 mają własną załadowaną kopię klas z pliku JAR_A w pamięci. Aplikacje 1, 2 i 3 widzą różne kopie pliku JAR_A.
Diagram jest opisany w tekście otaczającym.
Aby aplikacje 1 i 3 miały dostęp do tej samej załadowanej kopii klas z pliku JAR_A, aplikacja 1 musi używać kwalifikatora biblioteki współużytkowanej dla biblioteki współużytkowanej A. Zmienne statyczne w bibliotece współużytkowanej są duplikowane dla każdego kwalifikatora biblioteki współużytkowanej. Węzły JavaCompute uzyskują dostęp do tych samych zmiennych statycznych przy użyciu tego samego kwalifikatora biblioteki współużytkowanej. Jednak po ponownym wdrożeniu biblioteki współużytkowanej, programów ładujących klasy Java dla tej biblioteki współużytkowanej i wszystkich innych bibliotek współużytkowanych, które odwołują się do tej biblioteki współużytkowanej, przeładuj klasy Java.

Kod ESQL w aplikacjach lub bibliotekach współużytkowanych może również wywoływać statyczne metody Java w przywoływanych bibliotekach współużytkowanych przy użyciu kwalifikatora biblioteki współużytkowanej w klauzuli CLASSLOADER. Więcej informacji na ten temat zawiera przykład 4 procedury Java w sekcji Instrukcja CREATE PROCEDURE.

Oto kilka przykładów możliwych scenariuszy:
  • Węzeł JavaCompute w podprzepływie w bibliotece współużytkowanej może uzyskać dostęp do klas Java w tej samej bibliotece współużytkowanej lub w przywoływanych bibliotekach współużytkowanych.
  • Jeśli przepływ komunikatów zawiera wiele węzłów JavaCompute , każdy węzeł JavaCompute może odwoływać się do innej biblioteki współużytkowanej.
  • Wiele aplikacji może używać klas Java w pojedynczej bibliotece współużytkowanej.

Klasy Java w aplikacjach, bibliotekach statycznych lub niezależnych projektach nie mogą uzyskać dostępu do klas Java w bibliotekach współużytkowanych.