On 2012-3-3, at 下午5:05, Magnus wrote:

Hi,

I would like to stream a big file directly to the browser.
Environment:
backend server---cxf--->front-end server----http---->browser

There is a big file on the backend server. I would like to stream it
directly to the browser.
I have configured webservice and WSS4JOutInterceptor(with UsernameToken
Timestamp) to support MTOM.
Binding is jaxb.
Big data transfers in a DataHandler field in a FileDTO. DataSource for
DataHandler is a FileDataSource on the backend server side.

It seems there is a problem:
Streaming itself works however cxf always create a temporary file
automatically.
Cxf at first downloads the big file from the backend server to the front-end
server as a temporary file and streaming could start only after this
downloading. It is a problem because it takes double time to download the
file into the browser.
Configuration everywhere use streams until ServletOutputStream.

When I call FileDTO getFile() webservice function in the backend server the
function immediately downloads the big file as  a temporary file.

Is there any parameter which can disable immediate file downloading as a temporary file? Data should be streamed from DataHandler directly to the
ServletOutputStream without temporary file.

Is it a side effect of WSS4J Interceptor usage? Is it possible to swith off
this behaviour?
Hi,

Yeah, if you use WSS4J interceptor you would also use SAAJ Interceptor which basically break the stream thing you want.

Freeman







--
View this message in context: 
http://cxf.547215.n5.nabble.com/MTOM-WSS4J-Big-file-tp5533357p5533357.html
Sent from the cxf-user mailing list archive at Nabble.com.

---------------------------------------------
Freeman Fang

FuseSource
Email:[email protected]
Web: fusesource.com
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com









Reply via email to