4 Replies Latest reply on Jan 28, 2019 4:23 AM by Gandhirajan N

    send jms message after tx commit

    Dieter Cailliau Newbie

      Example: after the invocation of a Person insertPerson() method on a @Stateless or @Service, i would like to broadcast this new person to a jms topic. But this notification should only happen if the transaction commits, not if it rolls back.

      EJB3 interceptors are always inbetween the container tx interception and the implementation, so they dont know whether the tx committed, since it has not yet been committed when they get control again, after the invocation.

      1. I read about the SessionSynchronisation interface, but it's for @Stateful ejbs only. Any particular way i could enable this on @Service?
      2. Perhaps the jms-sender code needs to be transaction-aware, and postpone the send until the tx commits? Is this possible?
      3. I could insert an ejb3 handcoded transaction interceptor, (and annotate the ejb "supports") so that i can order it after my jms-sending interceptor. Can i re-use jboss code, or do i have to reimplement this transaction-interceptor as ejb3 interceptor?
      4. Or i can make a "NotifyingEJB3" that has "supports", and takes care of forwarding to the actual implementation ("required"), and then sends out the jms message.

      Other possibilities?