aspose file tools*
The moose likes Web Component Certification (SCWCD/OCPJWCD) and the fly likes Async Listener and Request/Response objects Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Web Component Certification (SCWCD/OCPJWCD)
Bookmark "Async Listener and Request/Response objects" Watch "Async Listener and Request/Response objects" New topic
Author

Async Listener and Request/Response objects

Stoian Azarov
Ranch Hand

Joined: Jun 01, 2011
Posts: 113
I can't retrieve ServletResponse object from AsyncEvent. I am using AsyncEvent#getSuppliedResponse() but I am getting null. I am adding the listener programmatically by AsyncContext#addListener(AsyncListener).
Servlet 3.0 Specification
public void addListener(asyncListener) - Registers the given listener
for notifications of time out, error and complete with the most recent
asynchronous cycle by a call to one of the ServletRequest.startAsync
methods. If startAsync(req, res) or startAsync() is called on the
request, the exact same request and response objects are available from the
AsyncEvent when the AsyncListener is notified.

Am I misinterpreting the explanation of this method. What should I do to get access to request or response object from my listener?
Piyush Joshi
Ranch Hand

Joined: Jun 10, 2011
Posts: 207

The problem is that you are registering the listener using wrong method. Use AsyncContext#addListener(AsyncListener, ServletRequest, ServletResponse).

See the Javadocs for AsyncEvent#getSuppliedResponse():
public ServletResponse getSuppliedResponse()

Gets the ServletResponse from this AsyncEvent.
If the AsyncListener to which this AsyncEvent is being delivered was added using AsyncContext#addListener(AsyncListener, ServletRequest, ServletResponse), the returned ServletResponse will be the same as the one supplied to the above method. If the AsyncListener was added via AsyncContext#addListener(AsyncListener), this method must return null.


Piyush
Stoian Azarov
Ranch Hand

Joined: Jun 01, 2011
Posts: 113
Thansk Piuysh, It looks that I have to read more carefully the javadoc.
Now using the other #addListener() method I managed to retrieve the response.

I suppose that this sentence:
public void addListener(asyncListener)
...
If startAsync(req, res) or startAsync() is called on the
request, the exact same request and response objects are available from the
AsyncEvent when the AsyncListener is notified.

means that AsyncEvent has access to the request and response objects that were used when async process was started but we do not have access to them(especially using getSuppliedRequest/Response() methods).
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Async Listener and Request/Response objects
 
Similar Threads
Doubt on servlet request lifecycle
RequestDispatcher's forward method does not work.
Issue with Asynchronous Servlet: onStartAsync(AsyncEvent event) never called
monitoring soap
AsyncContext timeout