Contextes ActivitySession et contextes de transaction

Cette rubrique décrit les relations de la hiérarchie des contextes de transaction et des contextes ActivitySession. Ces relations, définies par le service ActivitySession, exigent que tout contexte de transaction soit entièrement à l'intérieur ou entièrement à l'extérieur d'un contexte ActivitySession.

Un contexte ActivitySession est très similaire à un contexte de transaction et permet de définir l'étendue des choix de cycle de vie de l'activation des beans enterprise. Il peut encapsuler une ou plusieurs transactions. Le contexte ActivitySession est un contexte réparti qui, comme le contexte de transaction, peut être géré par bean ou par conteneur. Un contexte ActivitySession permet principalement à un client de définir le cycle de vie d'un bean enterprise qu'il utilise au delà ou en l'absence de transactions particulières lancées par ce client.

Les sessions ActivitySession nécessitent moins de temps système que les transactions et peuvent être utilisées à la place des transactions qui sont uniquement utilisées pour définir le cycle de vie d'un bean enterprise appelé. Pour un bean associé à une règle d'activation du service ActivitySession, la durée de toute transaction locale du gestionnaire de ressources (transaction RMLT) lancée par ce bean peut être liée à la durée de la session ActivitySession au lieu de la méthode de bean dans laquelle est lancée la transaction RMLT. Cela apporte une flexibilité et un potentiel d'utilisation des transactions RMLT dans un bean enterprise au-delà des scénarios décrits dans les spécifications EJB (Enterprise JavaBeans). Les spécifications EJB indiquent que ces transactions RMLT doivent être effectuées avant la fin de la méthode bean car celle-ci est la seule frontière de confinement de transactions locales disponible dans ces spécifications.

Les règles suivantes définissent les relations entre les transactions et les sessions ActivitySession.
  • Le conteneur d'EJB ou Web utilise toujours un confinement de transaction local (LTC, Local Transaction Containment) en l'absence d'une transaction globale. Un confinement LTC peut être défini par méthode ou par ActivitySession.
  • Avant la distribution d'une méthode, le conteneur garantit la présence d'un contexte de confinement LTC ou d'un contexte de transaction globale, et jamais les deux contextes à la fois.
  • Les sessions ActivitySession ne peuvent pas être imbriquées les unes dans les autres. Toute tentative de lancement d'une session ActivitySession imbriquée entraîne une exception com.ibm.websphere.ActivitySession.NotSupportedException sur UserActivitySession.beginSession().
  • Une session ActivitySession peut encapsuler entièrement une ou plusieurs transactions globales.
  • L'application peut arrêter une session ActivitySession à l'aide d'une opération pour contrôler ou réinitialiser toutes les ressources. L'opération endSession(EndModeCheckpoint) applique un point de contrôle au travail coordonné sous la session ActivitySession, puis met fin au contexte. L'opération endSession(EndModeReset) réinitialise au dernier point de cohérence le travail coordonné sous la session ActivitySession, puis met fin au contexte.
  • Une session ActivitySession ne peut pas être encapsulée dans une transaction globale, de même qu'une session ActivitySession et une transaction globale ne peuvent se chevaucher. Toute tentative de lancement d'une session ActivitySession en présence d'un contexte de transaction globale aboutit à une exception com.ibm.websphere.ActivitySession.NotSupportedException sur UserActivitySession.beginSession(). Toute tentative d'appel de endSession(EndModeCheckpoint) sur une session ActivitySession contenant une transaction globale incomplète aboutit à une exception com.ibm.websphere.ActivitySession.ContextPendingException. Le contexte de transaction globale, comme celui de ActivitySession n'est pas affecté. Si endSession(EndModeReset) est appelé, la session ActivitySession est réinitialisée et les transactions globales sont marquées comme étant rollback_only.
  • Chaque transaction globale entièrement encapsulée dans une session ActivitySession est indépendante de toute autre transaction globale de cette session ActivitySession. L'annulation d'une transaction globale n'affecte pas les autres transactions globales, ni la session ActivitySession.
  • Un contexte ActivitySession et un contexte de transaction globale peuvent coexister avec une session ActivitySession encapsulant une ou plusieurs transactions globales à exécution en série.
  • Les méthodes Home EJB ne peuvent pas participer à une ActivitySession car cette situation risque d'entraîner des blocages. Les méthodes Home EJB s'exécutent dans leur propre LTC indépendant.

Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cas_ogtlt
Nom du fichier : cas_ogtlt.html