• Type: Improvement Improvement
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 6.0.8
    • Fix Version/s: 7.0.0
    • Component/s: examples
    • Labels:


      In the async EJB example (doc: the async.web.MailerManagedBean's send() method contains the following code:

      while (!mailStatus.isDone()) {       // line x+1
          this.setStatus("Processing..."); // line x+2
      }                                    // line x+3

      This seems problematic to me on various levels.

      1. We are unnecessarily setting the status to "Processing..." numerous times.
      2. We are unnecessarily occupying the processor until mailStatus.isDone().
      3. Immediately after this code, we call mailStatus.get(), which has the same effect as the while-loop (here too we wait for mailStatus.isDone())

      My proposal would be to delete the first and last line from the three lines of code pasted above, leaving only the middle line (which never produces any visible result, by the way):

          this.setStatus("Processing..."); // line x+2


      Furthermore, in my local code I reworked the example a bit,

      • using @ManagedBean @SessionScoped instead of @Named @RequestScoped.
      • making Future<String> mailStatus a class member instead of a local variable.
      • removing the try-catch block containing this.setStatus(mailStatus.get() out of the send() method and into the getStatus() method, protected by an additional if (mailStatus.isDone()) check.
      • changing the response value of the send() method from "response" to "response?faces-redirect=true"

      This allows me to actually see the "Processing..." status in the browser as well as to refresh the page manually until the status changes. Personally, I find this gives me more of a feeling for the asynchronous nature of the code underneath, rather than experiencing a simple long-running synchronous response in the browser.


        swiss-chris created issue -
        Ian Evans made changes -
        Field Original Value New Value
        Assignee Ian Evans [ ievans ]
        Ian Evans made changes -
        Status Open [ 1 ] In Progress [ 3 ]
        Ian Evans made changes -
        Status In Progress [ 3 ] Resolved [ 5 ]
        Fix Version/s 7.0.0 [ 15607 ]
        Resolution Fixed [ 1 ]


          • Assignee:
            Ian Evans
          • Votes:
            0 Vote for this issue
            0 Start watching this issue


            • Created:

              Time Tracking

              Original Estimate - 5 minutes
              Remaining Estimate - 5 minutes
              Time Spent - Not Specified
              Not Specified