In Deshmukh's SCWCD exam Study Kit (page: 324), it specifies EVAL_BODY_BUFFERED as one of the return values of doAfterBody. I can't find this as a return value of this method in the specs or API. Is it a mistake or a change in the latest specs ?
BodyTag interface The BodyTag interface extends IterationTag by defining additional methods that let a tag handler manipulate the content of evaluating its body:
* The doStartTag() method can return SKIP_BODY, EVAL_BODY_INCLUDE, or EVAL_BODY_BUFFERED.
* If EVAL_BODY_INCLUDE or SKIP_BODY is returned, then evaluation happens as in IterationTag.
* If EVAL_BODY_BUFFERED is returned, setBodyContent() is invoked, doInitBody() is invoked, the body is evaluated, doAfterBody() is invoked, and then, after zero or more iterations, doEndTag() is invoked. The doAfterBody() element returns EVAL_BODY_AGAIN or EVAL_BODY_BUFFERED to continue evaluating the page and SKIP_BODY to stop the iteration.
I have another question troubling me. I thought that request attributes are thread safe because the request object is scoped within the service method. But section SRV.18.104.22.168 in the specs state that the "Implementations of the request and response objects are not guaranteed to be thread safe. This means that they should only be used within the scope of the request handling thread." How can they be used in any other threads ? Are we talking about the threads started by the programmer from within the service method ? Can someone please explain ?