Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-2487

Incorrect acknowledge mode returned by JmsActivationSpec

    XMLWordPrintable

Details

    Description

      The JmsActivationSpec implementation defaults the acknowledgeMode to javax.jms.Session.SESSION_TRANSACTED, or 0, seemingly by mistake. setAcknowledgeMode() does not honor the value "SESSION_TRANSACTED". getAcknowledgeMode() assumes that the acknowledgeMode is either DUPS_OK_ACKNOWLEDGE (explicit) or AUTO_ACKNOWLEDGE (everything else).

      This caused consternation when I was debugging. My log file informed me that I was using the wrong acknowledge mode (ack=AUTO_ACKNOWLEDGE) for the transaction mode (tx=false).

      There are two possible fixes:
      1. Default acknowledgeMode to Session.AUTO_ACKNOWLEDGE. This would make getAcknowledgeMode() and toString() return consistent results.
      2. Add support for all four Session acknowledge modes. This would make the default acceptable, but the accessors would need to be modified.

      One other note: Depending on the solution, it may be wise to change setSessionTransacted() to update acknowledgeMode. For instance, it seems weird to allow the JmsActivationSpec to be in a state such that sessionTransaction=false but acknowledgeMode=Session.SESSION_TRANSACTED.

      Attachments

        Issue Links

          Activity

            People

              adrian.brock Adrian Brock (Inactive)
              pamdirac_jira John McNair (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - 4 minutes
                  4m
                  Remaining:
                  Remaining Estimate - 4 minutes
                  4m
                  Logged:
                  Time Spent - Not Specified
                  Not Specified