[
http://jira.nuxeo.org/browse/NXP-1829?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stéfane Fermigier updated NXP-1829:
-----------------------------------
Fix Version/s: (was: 5.2 M1)
5.2 M2
> Add streaming feature over the MTOM in the Web Service
> ------------------------------------------------------
>
> Key: NXP-1829
> URL: http://jira.nuxeo.org/browse/NXP-1829
> Project: Nuxeo Enterprise Platform 5
> Issue Type: New Feature
> Affects Versions: 5.2 M1
> Environment: JAXWS2.1.2-20070917, MTOM 1.0
> Reporter: Radu Darlea
> Assignee: Radu Darlea
> Fix For: 5.2 M2
>
>
> The MTOM technology allows to send over SOAP the binary data as inline
> attachments. This improves the performance with around 33%. But the data are
> sent as one packet, no matter how big they are.
> I tried to send a 700MB file. Couldn't: after minutes when memory consumption
> grew with 500MB, it started to bounce up and down with 200MB. I killed
> process, it is clear it is not the way. In order to overpass this I see 3
> solutions:
> 1. Implement a kind of streaming in Stateful Web Service. Because it is
> stateful, the Stream can be kept as internal member and feed the client upon
> request with chunks of data (extended API required).
> 2. Save the file on HDD and make it available through an URL to the customer
> (I believe this is worse than previous: extra HDD required, bug prone because
> extra storage used, etc)
> 3. I saw that people are recommending StAX for streaming over XML. I heard
> people saying it can be solution for MTOM streaming. StAX might help in
> streaming over the net, but the API si far too complicated to allow a clean
> solution / stable solution.
> Regarding solution 1, a possible API could be like:
> Snippet only on the upload content
> /**
> * Opens a blob property content as a InputStream. The property is named
> by the fieldName.
> * @param repo
> * @param docRef has to be not null
> * @param fieldName has to be not null
> * @return if the stream was open
> * @throws ClientAuthenticationException
> * @throws ItemNotFoundException
> * @throws ServerProcessingException
> */
> public abstract boolean openFile(String repo, String docRef, String
> fieldName)
> throws ClientAuthenticationException,
> ItemNotFoundException, ServerProcessingException;
> /**
> * Gets a chunk from a blob property content (previously open as
> InputStream).
> * @param chunk OUT parameter filled with the bytes read from stream
> * @return the number of bytes filled
> * @throws ClientAuthenticationException
> * @throws ItemNotFoundException
> * @throws ServerProcessingException
> */
> public abstract int getChunk(Holder<byte[]> chunk)
> throws ClientAuthenticationException,
> ItemNotFoundException, ServerProcessingException;
> This method reads from the open InputStream at most the length of supplied
> byte array. Returns the number of read bytes. If the stream wasn't previously
> successfully open, an exception is thrown. Only one stream can be open at one
> time.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.nuxeo.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets