J'utilise le code ci-dessous pour récupérer une pièce jointe d'un serveur Web. Le client dans ce cas est un navigateur Web. Donc actuellement, l'utilisateur fait une requête à un serveur web pour la pièce jointe. Le serveur Web envoie une requête MTOM à un autre serveur pour la pièce jointe. Ce serveur Web attend ensuite que la pièce jointe soit téléchargée avant de commencer à écrire cette pièce jointe dans la réponse. L'utilisateur attend deux fois plus longtemps pour obtenir le fichier. Comment puis-je puiser dans le code Axis2 pour accéder au fichier temporaire afin de pouvoir le diffuser à l'utilisateur lors de sa création? Je sais que cela ne semble pas être la meilleure façon de le faire, mais c'est l'exigence. Je travaille avec de gros fichiers jusqu'à 2 Go, donc attendre deux fois plus longtemps pour recevoir le fichier ne fonctionne pas.Comment diffuser le fichier temporaire Axis 2 MTOM à HttpServletRequest
Options options = new Options();
options.setTo(new EndpointReference(this.endpointUrl));
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, this.tempDirectory);
options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, String.valueOf(this.tempFileSizeThreshold));
options.setTimeOutInMilliSeconds(this.serviceRequestTimeOut);
sender = new ServiceClient();
sender.setOptions(options);
OMElement result = sender.sendReceive(this.getAttachmentPayload(productId, attachmentId));
OMElement attachmentElement = result.getFirstElement();
Iterator<OMElement> elementIterator = attachmentElement.getChildElements();
String fileName = "";
DataHandler dataHandler = null;
while (elementIterator.hasNext()) {
OMElement element = elementIterator.next();
if (element.getQName().getLocalPart().equals("name")) {
fileName = element.getText();
} else if (element.getQName().getLocalPart().equals("attachment")) {
dataHandler = (DataHandler) ((OMText) element.getFirstOMChild()).getDataHandler();
}
}