
Java-Anwendungen sind Objekte, die in einer Applikationsserver-Instanz mit aktivem VM Container laufen können.
Eingehende Requests werden von Bearbeitungsroutinen (Handler) bearbeitet. Erhält also der Applikationsserver einen Request, muss er den dazugehörenden Handler finden und die Anwendung aktivieren, zu der der Handler gehört. Des Weiteren müssen veraltete Anwendungen deaktiviert werden, damit nicht unnötig Ressourcen belegt werden.
Aktivierungen und Aktivierungsgruppen
Aktivierung
Aktivierung bedeutet, dass eine Anwendung im Applikationsserver aktiv, also ausführbar wird. Für den Applikationsserver ist eine Aktivierung eine Einheit, die aus folgenden Elementen besteht.
Identifikation (ID), instanzweit eindeutig
Name (Name der Komponente)
URL des Quellcodes der Komponente: diese URL identifiziert die gespeicherte Komponente eindeutig.
Class-Loader: Der Class-Loader ist ein Shared Classloader, der alle Klassen und Dateien der Komponente lädt.
Ressourcen: Registrierung aller Ressourcen, die während der Lebenszeit der Komponente angefordert werden
Bindungen: alle Bindungen der Komponente
Eine Komponente wird als Einheit aktiviert, einzelne Module einer Komponente können nicht aktiviert werden. Dies wird als Komponentenaktivierung bezeichnet.
Eine Aktivierung kann mehreren Aktivierungsgruppen zugeordnet sein.
Aktivierungsgruppe
Eine Aktivierungsgruppe ist eine Menge von Komponentenaktivierungen. Pro Komponente kann höchstens eine Version in der Aktivierungsgruppe vorliegen. Die Aktivierungsgruppe fasst somit genau jeweils eine Version einer Anwendung zusammen, sodass nicht verschiedene Versionen einer Anwendung gleichzeitig durch einen Benutzer verwendet werden können.
Eine Aktivierungsgruppe ist genau einer Sitzung zugeordnet (vgl. Sitzungen anzeigen und verwalten). Eine Sitzung enthält ihre eigene Aktivierungsgruppe sowie andere Sitzungsdaten.
Für den Applikationsserver ist eine Aktivierungsgruppe ein Objekt, das aus folgenden Elementen besteht:
Identifikation (ID), instanzweit eindeutig
Sitzungs-ID der entsprechenden Sitzung
Menge von Aktivierungen (s.o.)
Die Sitzungen bestimmen die Lebensdauer der Aktivierungen. Wenn ein eingehender Request zu einer bestehenden Sitzung gehört und der zur Requestbearbeitung gewählte Handler zu einer Aktivierung gehört, wird diese Aktivierung der entsprechenden Komponente in die Aktivierungsgruppe der Sitzung aufgenommen. Für jede Komponente hält der Applikationsserver genau eine aktuelle Aktivierung. Bei der Aktivierung einer neuen Version einer Komponente wird die Referenz zu der obsoleten Aktivierung gelöscht. Wenn dann alle Sitzungen, in die die obsolete Aktivierung eingeblendet ist, beendet sind, wird die Aktivierung beendet und gelöscht. Damit werden die zugehörigen Ressourcen (geladene Java-Klassen, Class-Loader) freigegeben.
Übersicht über Aktivierungen und Aktivierungsgruppen
Eine instanzweite Übersicht bekommen Sie in der VMC Systemadministration, wenn Sie
Anwendungen anzeigen wählen.
Component Repository
Ein Component Repository wird durch seine URL identifiziert und bietet folgende Services:
Zugriff auf Komponenten
Bindungs-Lookup
Hierbei liefert das Repository immer die neueste Version der Komponente bzw. der Bindung.
Die Komponente besitzt die folgenden Attribute:
Komponentenname
URL des Quelltextes der Komponente für das Classloading
Zeitstempel
Menge aller Bindungen
Es gibt datenbankbasierte und dateisystembasierte Component Repositories.
Der Applikationsserver kann für die Verwendung eines oder mehrerer Component Repositories konfiguriert werden, Standard ist genau ein datenbankbasiertes Repository.
Request Handler Lookup
Wenn der Applikationsserver einen Request bekommt, weiß der Dispatcher, ob es sich um einen RFC- oder einen HTTP-Request handelt und leitet ihn an die entsprechende Schicht weiter. Hierbei wird auch das Einblenden einer VM in den Workprozess angestoßen (vgl. Ressourcenverwaltung im VM Container).
Die verarbeitende Schicht ist abhängig vom Requesttyp und kann den Request-Schlüssel ermitteln. Dies ist bei RFC-Requests der Name der aufgerufenen Funktion, bei HTTP-Request ein Teil des Pfades. Der Handler-Lookup ermittelt den Handler, der diesen Request bearbeiten kann. Wird kein Handler gefunden, so wird ein Default-Handler verwendet.
Ressourcenverwaltung
Während der Lebenszeit einer Aktivierung beansprucht der Anwendungscode diverse Ressourcen wie z.B. den Cache. Diese Ressourcen werden in der Aktivierung registriert, sobald sie angefordert werden und spätestens beim Beenden der Aktivierung wieder freigegeben.
Löschen einer Aktivierung
Wenn eine Aktivierung nicht mehr referenziert wird, wird die entsprechende Java-Anwendung deaktiviert. Die Ressourcen werden zurückgegeben, die Shared Closures mit zugehörigen Anwendungsdaten gelöscht und die Aktivierung wird aus dem Shared Memory gelöscht. Der Shared Garbage Collector sorgt dann dafür, dass der Shared Classloader entfernt wird, sobald er, sowie Objekte von ihm geladener Klassen in keiner VM dieser Instanz mehr referenziert wird. Weitere Informationen zum Shared GC finden Sie unter Funktionsweise des Shared Garbage Collectors.