All,

Also, I'd like to explain the problems we've been having and have my 
understanding of "chunking" clarified.

Now, we have some web service operations which have the potential to fetch A 
LOT of data.  Some of these have been written to be "asynchronous" and/or 
"chunked".  But, I'm not utilizing CXF features to accomplish this; I mean that 
we have written two endpoints, one to request data where information is 
extracted and saved off in the database with a reference / correlation id.  
Then, a second endpoint is used to fetch the data using the correlation id.

In the case of the "chunked" web services, the client also supplies a chunk 
number and so we fetch the desired subset of the rows and send them back.

Now, in the case of the chunk-encoding that CXF provides, that is at the 
transport level, and I understand that it is the default for responses over 4K. 
 So, I can see responses coming back  with...

 Wed Mar 12 17:28:57 CDT 2014:DEBUG:<< "Transfer-Encoding: chunked[\r][\n]"

...and I see it picking up the chunks until a zero length chunk is sent at 
which time it is then GZipped, run thru WS-Security processing and the response 
displayed.

So, essentially, the transport layer chunking allows us to send larger reponses 
back without the client losing the socket and/or timing out.  However, if we 
don't chunk at the *application* level, that means that, on both the server and 
the client,  we have to construct and handle larger response.  Most of my 
resource limitations have been encountered when encrypting or decrypting very 
large responses, so transport level chunking doesn't help with that.

Is my understanding correct?   Is chunking at the application/service 
implementation level the best, or most standard, way  of dealing with problems 
like this?

I'm completely skipping over my lack of understanding of creating asynchronous 
web services.  I understand the part a Future object to the client, the client 
uses that to get the results, but I could never wrap my head around how it is 
implemented on the server side, where and how does the server persist data 
until the client picks it up, etc.

Regards,

Andrew





Reply via email to