Application-Profiling-Tasks

Tasks sind benannte Arbeitseinheiten. Sie sind der Mechanismus, durch den die Laufzeitumgebung feststellt, welche Richtlinien für Zugriffsarten angewendet werden sollen, wenn die Daten einer Entity-Bean vom Back-End-System geladen werden.

Mit Anwendungsprofilen können die Entwickler eine Entity-Bean mit mehreren Richtlinien für Zugriffsarten konfigurieren. Enthält eine Anwendung n Instanzen von Profilen, dann kann jede Bean mit n Richtlinien für Zugriffsarten konfiguriert werden.

Beim Start einer Arbeitseinheit wird einer Transaktion bzw. einer ActivitySession eine Task zugeordnet. Die Task, die nicht geändert werden kann, solange die Arbeitseinheit ausgeführt wird, ist stets im Geltungsbereiche dieser Arbeitseinheit verfügbar, um die für diese Arbeitseinheit konfigurierte Richtlinie für Zugriffsarten anzuwenden.

Wenn in einer Unternehmensanwendung an irgendeiner Stelle für die Erstellung von Anwendungsprofilen konfiguriert ist, ist die Erstellung von Anwendungsprofilen aktiv, und Konfigurationen für Zugriffsarten auf Methodenebene werden ignoriert, wenn bekannten Anwendungstasks Arbeitseinheiten zugeordnet werden.

Wird eine Entity-Bean in eine Arbeitseinheit geladen, der keine Task zugeordnet ist oder der eine Task zugeordnet ist, die zu keinem Anwendungsprofil gehört, wird die Standardzugriffsart auf Bean-Ebene oder die Konfigurations für Zugriffsarten auf Methodenebene angewendet. Falls einer Arbeitseinheit eine Task zugeordnet ist, die mit einem Anwendungsprofil konfiguriert ist, dann wird die Konfiguration für Zugriffsarten auf Bean-Ebene im entsprechenden Anwendungsprofil angewendet.

Anmerkung: In der Konfiguration des Anwendungsprofils sind die anwendungsbezogenen Konfigurationsdaten enthalten. Wenn ein EJB-Modul eine Anwendungsprofilkonfiguration enthält, werden alle anderen EJB-Module implizit vom Service für die Erstellung von Anwendungsprofilen reguliert, selbst wenn sie keine Konfigurationsdaten für das Anwendungsprofil enthalten.

Beispiel: Eine Anwendung enthält zwei EJB-Module: EJBModule1 und EJBModule2.

EJBModule1 hat ein Anwendungsprofil mit dem Namen AppProfile1. AppProfile1 wird von einer Task mit dem Namen "task1" registriert. "task1" wird zu einer der Anwendung bekannten Task und verarbeitet, wenn sie einer Arbeitseinheit in dieser Anwendung zugeordnet wird. Wenn eine der Anwendung bekannte Task vorhanden ist, werden alle Konfigurationen für Zugriffsarten auf Methodenebene ignoriert, und es werden nur die Konfigurationen für Zugriffarten auf Bean-Ebene angewendet.

EJBModule2 enthält keine Konfigurationsdaten für das Anwendungsprofil. Die Entity-Beans sind nicht explizit mit einer Zugriffsart auf Bean-Ebene konfiguriert, aber einige Methoden haben Konfigurationen für Zugriffsarten auf Methodenebene. Wenn eine Entity-Bean in EJBModule2 in eine Arbeitseinheit geladen wird, die task1 zugeordnet ist, wird die Konfiguration für Zugriffsarten auf Bean-Ebene angewendet und die Konfiguration für Zugriffsarten auf Methodenebene ignoriert. Da die Zugriffsart auf Bean-Ebene nicht explizit definiert ist, wird die Standardzugriffsart auf Bean-Ebene, wsPessimisticUpdate-WeakestLockAtLoad, angewendet.

Die aktive Task richtet sich nach dem Mechanismus der aktuellen Arbeitseinheit. Wenn die aktuelle Arbeitseinheit eine globale Transaktion ist, ist die Task der Name, der dieser Transaktion zugeordnet ist. Falls die globale Transaktion beim Instanzieren nicht benannt wurde, ist keine aktive Task im Bereich dieser Transaktion verfügbar.

Wenn die aktuelle Arbeitseinheit eine lokale Transaktion ist, die einer ActivitySession zugeordnet ist, ist die Task der Name, der dieser ActivitySession zugeordnet ist. Falls die ActivitySession bei der Instanzierung nicht benannt wurde, ist keine aktive Task für eine lokale Transaktion verfügbar, die an diese ActivitySession gebunden ist. Wenn die aktuelle Arbeitseinheit eine lokale Transaktion ist, die keiner ActivitySession zugeordnet ist, ist die Task der Name, der dieser lokalen Transaktion zugeordnet ist. Falls die lokale Transaktion bei der Instanzierung keiner Task zugeordnet wurde, ist für die Dauer dieser lokalen Transaktion keine Task verfügbar. In anderen Worten, die aktive Task ist die Task, die der Arbeitseinheit im Thread zugeordnet ist, der die Datenbankressourcen koordiniert. Wenn die steuernde Arbeitseinheit bei der Instanzierung keiner Task zugeordnet wurde, ist keine aktive Task im Bereich dieser Arbeitseinheit verfügbar.

Angenommen, über eine Anwendung wird eine Session-Bean aufgerufen, um mit den Datensätzen der Schüler zu arbeiten. Eine Methode der Session-Bean erlaubt es den Administratoren, die Datensätze der Schüler zu ändern. Eine weitere Methode unterstützt die Anforderungen der Schüler zum Anzeigen Ihrer eigenen Datensätze. Ohne Application Profiling würden die zwei Tasks anonym ausgeführt werden, und die Laufzeitumgebung wäre nicht in der Lage, zwischen der Arbeit, die für die eine Task ausgeführt wird, und der Arbeit, die für die andere Task ausgeführt wird, zu unterscheiden. Zwecks Optimierung der Anwendung kann ein Entwickler eine der Methoden der Session-Bean mit der Task "updateRecords" konfigurieren und die andere Methode der Session-Bean mit der Task "readRecords". Wird die Task "updateRecords" mit einem Anwendungsprofil registriert, in dem die Student-Bean mit der geeigneten Zugriffsart Intent für Sperren konfiguriert ist, dann wird sichergestellt, dass die Task "updateRecords" nicht unnötig Transaktionen blockiert, mit denen Datensätze lediglich gelesen werden.Weitere Informationen zu den Beziehungen zwischen Tasks und Arbeitseinheiten finden Sie im Artikel Hinweise zu Tasks und Arbeitseinheiten.

Tasks können vom Container verwaltet oder über das Programm von der Anwendung eingerichtet werden. Containergesteuerte Tasks können in Servlets, JSP-Dateien, Application Clients und Methoden von Enterprise JavaBeans (EJB) konfiguriert werden. Konfigurierte containergesteuerte Tasks werden nur solchen Arbeitseinheiten zugeordnet, die der Container nach Definition des Tasknamens einleitet. Anwendungsgestützte Tasks können in allen J2EE-Komponenten konfiguriert werden. Bei Enterprise-Beans müssen es Bean-gesteuerte Transaktionen sein.

Bewährte Verfahren: Wenn Sie auf der Konsolenseite "Service für die Erstellung von Anwendungsprofilen" das Attribut "5.x-Kompatibilitätsmodus" auswählen, werden die in den J2EE 1.3-Anwendungen konfigurierten Tasks nicht zwingenderweise Arbeitseinheiten zugeordnet und können beliebig angewendet und überschrieben werden. Dieser Betriebsmodus wird nicht empfohlen, weil er zu unerwarteten Deadlocks (gegenseitiges Sperren) bei Datenbankzugriffen führen kann. Tasks werden in Anforderungen zwischen Anwendungen, die im 5.x-Kompatibilitätsmodus des Service für die Erstellung von Anwendungsprofilen ausgeführt werden, und Anwendungen, die nicht im Kompatibilitätsmodus ausgeführt werden, nicht übertragen.

Wenn ein Client der Version 6.x mit Anwendungen, die im 5.x-Kompatibilitätsmodus des Service für die Erstellung von Anwendungsprofilen ausgeführt werden, interagieren soll, müssen Sie die Systemeigenschaft appprofileCompatibility im Clientprozess auf true setzen. Geben Sie hierfür die Eigenschaft -CCDappprofileCompatibility=true beim Aufruf des Befehls "launchClient" an.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=capp_tasks
Dateiname:capp_tasks.html