J'appelle via Axis un webservices. Dans la réponse de celui-ci se
trouve un fichier PDF base64-encodé.
Lorsque le fichier PDF pese dans les 20 mo, l'appel au webservices
prend a peu pres 2 minutes et le process java associé monte en heap
jusqu'a ~400 mo
Cela vous parait-il normal ?
Voyez-vous un moyen d'optimiser ce comportement ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Arnaud W.
On 28 fév, 16:17, "Franck" wrote:
Voyez-vous un moyen d'optimiser ce comportement ?
Il faudrait que le fichier soit lu et transmis sous forme de message SOAP avec attachement, l'attachement étant envoyé sous forme de flux (reste à savoir si Axis le gère comme un flux, i.e. sans le charger entièrement en mémoire)
Remarque : Il y a 4-5 ans (avec Axis 1.0), j'avais déjà un problème qui annulait l'intérêt du streaming : les données étaient transfé rés via un cache, qu'il était impossible de désactiver, et donc les données ne commençaient à être envoyées qu'après que le flux so it entièrement lu (donc terminé) et stocké dans le cache.
Je n'ai pas testé avec les dernières versions (Axis 2), mais j'espère que cela a été optimisé....
Arnaud W.
On 28 fév, 16:17, "Franck" <flefebure2...@SPAM.orangecaraibe.com>
wrote:
Voyez-vous un moyen d'optimiser ce comportement ?
Il faudrait que le fichier soit lu et transmis sous forme de message
SOAP avec attachement, l'attachement étant envoyé sous forme de flux
(reste à savoir si Axis le gère comme un flux, i.e. sans le charger
entièrement en mémoire)
Remarque : Il y a 4-5 ans (avec Axis 1.0), j'avais déjà un problème
qui annulait l'intérêt du streaming : les données étaient transfé rés
via un cache, qu'il était impossible de désactiver, et donc les
données ne commençaient à être envoyées qu'après que le flux so it
entièrement lu (donc terminé) et stocké dans le cache.
Je n'ai pas testé avec les dernières versions (Axis 2), mais j'espère
que cela a été optimisé....
Il faudrait que le fichier soit lu et transmis sous forme de message SOAP avec attachement, l'attachement étant envoyé sous forme de flux (reste à savoir si Axis le gère comme un flux, i.e. sans le charger entièrement en mémoire)
Remarque : Il y a 4-5 ans (avec Axis 1.0), j'avais déjà un problème qui annulait l'intérêt du streaming : les données étaient transfé rés via un cache, qu'il était impossible de désactiver, et donc les données ne commençaient à être envoyées qu'après que le flux so it entièrement lu (donc terminé) et stocké dans le cache.
Je n'ai pas testé avec les dernières versions (Axis 2), mais j'espère que cela a été optimisé....
Arnaud W.
Franck
Salut,
D'apres ce que je comprends, avec Axis ou SAAJ, on peut traiter le flux binaire en "streaming" quand il est renvoyé sous forme de piece jointe (Attachment) au flux XML (cad apres le </xml>).
Or ça n'a pas l'air d'etre mon cas : la réponse que j'ai a traiter est de cette forme :
Du coup je crois bien que le binaire est forcemment monté en mémoire..
Je me trompe ?
Merci, Franck
-- - Franck mailto:
Salut,
D'apres ce que je comprends, avec Axis ou SAAJ, on peut traiter le flux
binaire en "streaming" quand il est renvoyé sous forme de piece jointe
(Attachment) au flux XML (cad apres le </xml>).
Or ça n'a pas l'air d'etre mon cas : la réponse que j'ai a traiter est
de cette forme :
D'apres ce que je comprends, avec Axis ou SAAJ, on peut traiter le flux binaire en "streaming" quand il est renvoyé sous forme de piece jointe (Attachment) au flux XML (cad apres le </xml>).
Or ça n'a pas l'air d'etre mon cas : la réponse que j'ai a traiter est de cette forme :
Du coup je crois bien que le binaire est forcemment monté en mémoire..
Je me trompe ?
Merci, Franck
-- - Franck mailto:
TestMan
Bonjour,
J'appelle via Axis un webservices. Dans la réponse de celui-ci se trouve un fichier PDF base64-encodé. Lorsque le fichier PDF pese dans les 20 mo, l'appel au webservices prend a peu pres 2 minutes et le process java associé monte en heap jusqu'a ~400 mo Cela vous parait-il normal ? Voyez-vous un moyen d'optimiser ce comportement ?
Merci d'avance Franck
Bonjour,
Celà ne me choque pas, par contre un flux SOAP de plusieurs dizaines de méga, oui ;-)
Avez-vous un contrôle quelconque sur le WS qui génére le PDF ? Si non, insultez ce qui vous génére un appel webservice en retournant des fichiers d'une telle taille :o) Si vous avez la chance que le serveur soit compatible FastInfoset, vous pouvez essayer cette voie : http://java.sun.com/webservices/docs/1.6/jaxrpc/fastinfoset/manual.html#d0e103
Si oui, utilisez une plateforme de partage de donnée (un "bon vieux" apache slide fera l'affaire) et poussez le fichier dessus (avec les droits qui vont bien, hein) et ensuite simplement retourner l'appel service avec une simple URL vers le document en question ...
En espérant que ce soit la seconde solution pour vous ;-)
A+ TM
Bonjour,
J'appelle via Axis un webservices. Dans la réponse de celui-ci se trouve
un fichier PDF base64-encodé.
Lorsque le fichier PDF pese dans les 20 mo, l'appel au webservices prend
a peu pres 2 minutes et le process java associé monte en heap jusqu'a
~400 mo
Cela vous parait-il normal ?
Voyez-vous un moyen d'optimiser ce comportement ?
Merci d'avance
Franck
Bonjour,
Celà ne me choque pas, par contre un flux SOAP de plusieurs dizaines de
méga, oui ;-)
Avez-vous un contrôle quelconque sur le WS qui génére le PDF ?
Si non, insultez ce qui vous génére un appel webservice en retournant
des fichiers d'une telle taille :o) Si vous avez la chance que le
serveur soit compatible FastInfoset, vous pouvez essayer cette voie :
http://java.sun.com/webservices/docs/1.6/jaxrpc/fastinfoset/manual.html#d0e103
Si oui, utilisez une plateforme de partage de donnée (un "bon vieux"
apache slide fera l'affaire) et poussez le fichier dessus (avec les
droits qui vont bien, hein) et ensuite simplement retourner l'appel
service avec une simple URL vers le document en question ...
En espérant que ce soit la seconde solution pour vous ;-)
J'appelle via Axis un webservices. Dans la réponse de celui-ci se trouve un fichier PDF base64-encodé. Lorsque le fichier PDF pese dans les 20 mo, l'appel au webservices prend a peu pres 2 minutes et le process java associé monte en heap jusqu'a ~400 mo Cela vous parait-il normal ? Voyez-vous un moyen d'optimiser ce comportement ?
Merci d'avance Franck
Bonjour,
Celà ne me choque pas, par contre un flux SOAP de plusieurs dizaines de méga, oui ;-)
Avez-vous un contrôle quelconque sur le WS qui génére le PDF ? Si non, insultez ce qui vous génére un appel webservice en retournant des fichiers d'une telle taille :o) Si vous avez la chance que le serveur soit compatible FastInfoset, vous pouvez essayer cette voie : http://java.sun.com/webservices/docs/1.6/jaxrpc/fastinfoset/manual.html#d0e103
Si oui, utilisez une plateforme de partage de donnée (un "bon vieux" apache slide fera l'affaire) et poussez le fichier dessus (avec les droits qui vont bien, hein) et ensuite simplement retourner l'appel service avec une simple URL vers le document en question ...
En espérant que ce soit la seconde solution pour vous ;-)
A+ TM
Franck
Eh ben non je n'ai pas la main sur l'usine à gaz qui me sert le webservices :-( Je vais regarder l'outil que tu cites
Merci, Franck
-- - Franck mailto:
Eh ben non je n'ai pas la main sur l'usine à gaz qui me sert le
webservices :-(
Je vais regarder l'outil que tu cites
Eh ben non je n'ai pas la main sur l'usine à gaz qui me sert le webservices :-( Je vais regarder l'outil que tu cites
Merci, Franck
-- - Franck mailto:
TestMan
Eh ben non je n'ai pas la main sur l'usine à gaz qui me sert le webservices :-( Je vais regarder l'outil que tu cites
Merci, Franck
Attention, une certaine société N°1 du secteur interdit d'accoler "usine
à gaz" et "webservice" ... par contre on peut remplacer ça par "moderne et performant", "simple et interropérable" voire "qui fait le café et fabrique des twix" ... :o) :o) :o)
Peu de chance pour toi que le fabricant de twix fasse du FI, je le crain ... Bon courrage tout de même !
A+ TM
Eh ben non je n'ai pas la main sur l'usine à gaz qui me sert le
webservices :-(
Je vais regarder l'outil que tu cites
Merci,
Franck
Attention, une certaine société N°1 du secteur interdit d'accoler "usine
à gaz" et "webservice" ... par contre on peut remplacer ça par "moderne
et performant", "simple et interropérable" voire "qui fait le café et
fabrique des twix" ... :o) :o) :o)
Peu de chance pour toi que le fabricant de twix fasse du FI, je le crain
... Bon courrage tout de même !
Eh ben non je n'ai pas la main sur l'usine à gaz qui me sert le webservices :-( Je vais regarder l'outil que tu cites
Merci, Franck
Attention, une certaine société N°1 du secteur interdit d'accoler "usine
à gaz" et "webservice" ... par contre on peut remplacer ça par "moderne et performant", "simple et interropérable" voire "qui fait le café et fabrique des twix" ... :o) :o) :o)
Peu de chance pour toi que le fabricant de twix fasse du FI, je le crain ... Bon courrage tout de même !
A+ TM
Arnaud W.
On 1 mar, 18:43, "Franck" wrote:
Salut,
D'apres ce que je comprends, avec Axis ou SAAJ, on peut traiter le flux binaire en "streaming" quand il est renvoyé sous forme de piece jointe (Attachment) au flux XML (cad apres le </xml>).
Or ça n'a pas l'air d'etre mon cas : la réponse que j'ai a traiter est de cette forme :
Du coup je crois bien que le binaire est forcemment monté en mémoire..
Je me trompe ?
Je pense effectivement que tout le fichier est monté en mémoire dans ce cas. Il faut, si c'est possible, utiliser les attachements et le streaming (options qui dépendent de l'implémentation utilisée).
Arnaud W.
On 1 mar, 18:43, "Franck" <flefebure2...@SPAM.orangecaraibe.com>
wrote:
Salut,
D'apres ce que je comprends, avec Axis ou SAAJ, on peut traiter le flux
binaire en "streaming" quand il est renvoyé sous forme de piece jointe
(Attachment) au flux XML (cad apres le </xml>).
Or ça n'a pas l'air d'etre mon cas : la réponse que j'ai a traiter est
de cette forme :
Du coup je crois bien que le binaire est forcemment monté en mémoire..
Je me trompe ?
Je pense effectivement que tout le fichier est monté en mémoire dans
ce cas. Il faut, si c'est possible, utiliser les attachements et le
streaming (options qui dépendent de l'implémentation utilisée).
D'apres ce que je comprends, avec Axis ou SAAJ, on peut traiter le flux binaire en "streaming" quand il est renvoyé sous forme de piece jointe (Attachment) au flux XML (cad apres le </xml>).
Or ça n'a pas l'air d'etre mon cas : la réponse que j'ai a traiter est de cette forme :
Du coup je crois bien que le binaire est forcemment monté en mémoire..
Je me trompe ?
Je pense effectivement que tout le fichier est monté en mémoire dans ce cas. Il faut, si c'est possible, utiliser les attachements et le streaming (options qui dépendent de l'implémentation utilisée).