Nous avons un service Web activé MMD qui est publié avec Grails et le plugin Metro 1.0.2:L'utilisation de Metro, l'ajout d'une MTOMFeature au client provoque une exception MIMEParsingException, pourquoi?
@MTOM
@WebService(targetNamespace="http://com.domain")
class TestService {
@WebMethod
int uploadFile(@XmlMimeType("application/octet-stream")DataHandler data) {
data.dataSource.inputStream.eachLine {
println "reading: -> ${it}"
}
return 0
}
}
Suite à cette tutorial, nous avons mis en place un test-client Java qui ressemble à ceci
public class Client {
public static void main(String[] argv) {
MTOMFeature feat = new MTOMFeature();
TestService service = new TestServiceService().getTestServicePort(feat);
Map<String, Object> ctxt = ((BindingProvider)service).getRequestContext();
ctxt.put(JAXWSProperties.HTTP_CLIENT_STREAMING_CHUNK_SIZE, 8192);
service.uploadFile(new DataHandler(new FileDataSource("c:/file.xml")));
}
}
Quand je lance le client, je reçois le message d'erreur suivant:
Impossible de créer un message SOAP en raison de exception: org.jvnet.mimepull.MIMEParsingException: manquant limite de début
Cependant, quand je ne fais pas le MTOMFeature, et juste faire TestService service = new TestServiceService().getTestServicePort();
les fichiers téléchargés ok obtient. Mais si je comprends bien si MTOM n'est pas activé côté serveur et côté client, le fichier entier sera conservé en mémoire (et non streamé). Donc, mes questions sont
- Pourquoi avons-nous cette erreur?
- Si je n'ajoute pas MTOMFeature, le fichier sera-t-il toujours transmis par MTOM?
Je serais très reconnaissant pour toute aide/conseils!