Details

    • Type: Enhancement
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: 5.9.2.Final
    • Fix Version/s: 5.9.5.Final
    • Component/s: JTA
    • Labels:
      None

      Description

      It would be beneficial to have the CDI-specific wrapper around Narayana's TransactionManagerImple that fires an @Initialized(TransactionScoped.class)-qualified event.

      For the CDI, it's a good practice. The all built-in scopes have to provide this behaviour.

      The CDI specification says (in section 6.7):

      Portable extensions are encouraged to synchronously fire:

      • an event with qualifier @Initialized(X.class) when a custom context is initialized, i.e. ready for use,
      • an event with qualifier @BeforeDestroyed(X.class) when a custom context is about to be destroyed, i.e. before the actual destruction,
      • an event with qualifier @Destroyed(X.class) when a custom context is destroyed, i.e. after the actual destruction,

      where X is the scope type associated with the context.

      A suitable event payload should be chosen.

      The begin() method a Narayana-supplied but CDI-specific transaction manager wrapping Narayana's "ordinary" one should do:

      @Inject
      @Initialized(TransactionScoped.class)
      private Event<Transaction> initializationBroadcaster;
      
      @Inject @BeforeDestroyed(TransactionScoped.class)
      private Event<Transaction> beforeDestructionBroadcaster;
      
      @Inject @Destroyed(TransactionScoped.class)
      private Event<TransactionManager> destructionBroadcaster;
      
      // in its begin() method:
      super.begin();
      initializationBroadcaster.fire(this.getTransaction());
      
      // in its commit() and rollback() methods and anywhere else I'm forgetting: 
      beforeDestructionBroadcaster.fire(this.getTransaction());
      super.commit(); // or rollback or whatever
      destructionBroadcaster.fire(this);
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  ljnelson Laird Nelson
                  Reporter:
                  ochaloup Ondrej Chaloupka
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: