Webservices: comment gérer les grosses requêtes ? - Divers - Programmation
Marsh Posté le 28-06-2008 à 10:24:50
Bonne question.
Ca vaut le coup de faire une petite recherche la-dessus.
Marsh Posté le 28-06-2008 à 11:25:11
StAX est peut-être la solution:
http://java.sun.com/javaee/5/docs/ [...] bnbdv.html
Au passage, je ne connaissais pas MTOM, mais qq chose me dit qu'il finira remplacé par Efficient XML (EXI), qui est bcp plus performant, et choisi par le W3C comme base pour un XML binaire.
Marsh Posté le 22-06-2008 à 15:24:36
Bonjour,
Je me pose une question fondamentale concernant les webservices. N'ayant pas assez d'expérience dans le domaine, je n'ai pas la réponse.
Aujourd'hui pour gérer les pièces jointes - et notamment les grosses pièces jointes comme des fichiers de taille >50Mo - en webservices il existe un standard reconnu par l'ensemble des technologies: MTOM. Grâce à elle, on peut, j'ai déjà expérimenté avec Axis2 en Java, utiliser un DataHandler pour récupérer les pièces jointes MTOM du webservices et streamer les fichiers attachés et ainsi éviter les montées en mémoire lors du parsing XML. C'est nickel.
Mais comment fait-on quand c'est la requête XML qui est intrinsèquement grosse ? je m'explique: si dans mon wsdl, j'ai défini un argument de type collection (par exemple une collection de Livres) et qu'un client appelle le webservice avec une collection de Livres énorme (exemple 1.000.000 de Livres induisant un XML de 1Go) comment le webservice peut-il gérer cette requête sans que ca monte en mémoire ? comment les webservices gèrent-ils pour traiter ce genre de requêtes et ainsi éviter des attaques de type out of memory ? je pose la question, car aujourd'hui j'ai récupéré une application qui expose des webservices avec Axis 1, et ce dernier monte tout en mémoire et donc explose lors de l'envoi de larges requêtes. Quelle est la stratégie habituelle pour mettre en place un webservice qui serait insensible à la taille de la requête XML ?