envoi d'un fichier par FTP sans le créer en local - Java - Programmation
Marsh Posté le 19-12-2006 à 14:36:43
ben t'envoies un flux, oui c'est possible, mais faut bien lire les données de quelque part
Marsh Posté le 19-12-2006 à 15:04:23
en fait j'ai un webservice qui m'envoie les données aprés moi je les crées dans un fichier et je l'envoie par FTP
Marsh Posté le 19-12-2006 à 15:08:24
data over xml over http over ftp ?
'fin bon, c'est jouable, mais faut voir la tronche de la lib que tu utilises. Si l'interface se limite à l'envoi d'un fichier sans possibilité de passer un stream quelconque, ça le fera moins.
Marsh Posté le 19-12-2006 à 15:11:10
j'ai la berlue moi.
au début, j'avais mal lu "java", mais "pda" à la place (allez savoir pkoi).
du coup là ça commençait à devenir chelou le coup du pda qui cherche une donnée par webservice puis la pose sur un autre serveur via ftp... d'autant plus que le pda était appelé "serveur".
pfiou ! il est temps que je prenne des vacances moi
Marsh Posté le 19-12-2006 à 15:14:49
@MagicBuzz: excuses, je me suis trompé au début et j'avais mis PDA mais j'ai corrigé.
@sicram: pour le moment mon appli crée le fichier en local et l'envoie par FTP, mais je voudrais éviter de le créer sur le serveur de prod et envoyer le flux directement mais à ce qu'il parait c ça doit etre chaud c'est ça?
Marsh Posté le 19-12-2006 à 15:15:17
Ah oui, si c'est du java et si c'est lourd, c'est tout de suite moins chelou
Marsh Posté le 19-12-2006 à 15:17:25
root76 a écrit : @MagicBuzz: excuses, je me suis trompé au début et j'avais mis PDA mais j'ai corrigé. |
ah, j'avais donc pas rêvé
ceci dit, c'est plus logique maintenant
bon, je me sauve de ce topic, je sais pas faire de java
sinon, à la base, j'imagine que les librairies Java permettent d'envoyer un flux binaire via FTP. la source peut donc être un flux de fichier, ou même directement un flux mémoire que tu allimentes avec les méthodes de ton webservice.
(enfin, je fait des plans sur la comète, c'est du moins ce qu'on fait en C# qui est assez similaire)
Marsh Posté le 19-12-2006 à 15:21:16
tume conseilles quoi, je reste sur mon truc et je tente l'envoi direct sans passer par une création de fichier en local?
Marsh Posté le 19-12-2006 à 15:23:56
Buzz> Oui, ça doit être idem en "Java", mais ça dépend en réalité de la librairie. Faut lire le fine manual, la doc, quoi
Ca n'a rien de chaud ou de gore : la lib le permet ou ne le permets pas. Il n'y aura peut-être pas de place (ni d'intérêt) pour une situation intermédiaire.
Marsh Posté le 19-12-2006 à 15:25:36
ça dépends surtout de la taille de ton flux.
je ne sais pas trop ce que ça peut donner avec les problèmes de buffers. si ton flux fait quelques ko, c'est évidement stupide de créer le fichier sur le disque. si ça fait 200 Mo, c'est peut-être pas plus mal : ça évite de risquer de se retrouver avec des objets en mémoire de taille pharaonique.
dans tous les cas, je ne peux guère t'en dire plus, je ne connais vraiment pas du tout java.
Marsh Posté le 19-12-2006 à 15:25:53
root76 a écrit : tume conseilles quoi, je reste sur mon truc et je tente l'envoi direct sans passer par une création de fichier en local? |
Beh ouais, si t'as tout sous la main et que la librairie le permet, faut pas se farcir une étape supp pour le plaisir
Marsh Posté le 19-12-2006 à 15:27:54
MagicBuzz a écrit : c'est peut-être pas plus mal : ça évite de risquer de se retrouver avec des objets en mémoire de taille pharaonique. |
Meuh non! Tu dois pas tout avoir en mémoire. Tu peux brancher un flux sur l'autre. Tu lis à gauche et tu envoies à droite. Tout n'est que streams. Pas la peine de tout stocker en mémoire. Pas la peine de stocker quoique ce soit implicitement en mémoire, en fait.
Marsh Posté le 19-12-2006 à 15:28:54
bah le problème c'est que je connais pas de librairie ou interface qui permets d'envoyer un flux binaire par FTP, donc il faut que je code tous à la mano, en ce qui concerne le flux ça ne dépasse pas les 2 Mo donc ce n'est pas énorme
Marsh Posté le 19-12-2006 à 15:31:06
sircam a écrit : Meuh non! Tu dois pas tout avoir en mémoire. Tu peux brancher un flux sur l'autre. Tu lis à gauche et tu envoies à droite. Tout n'est que streams. Pas la peine de tout stocker en mémoire. Pas la peine de stocker quoique ce soit implicitement en mémoire, en fait. |
bah chais pas.
mais moi en C# je me retrouve toujours avec des EXE que 20 Ko qui font rien, et qui prennent 200 Mo à l'exécution
alors je me méfie de tout maintenant
Marsh Posté le 19-12-2006 à 15:32:58
root76 a écrit : bah le problème c'est que je connais pas de librairie ou interface qui permets d'envoyer un flux binaire par FTP, donc il faut que je code tous à la mano, en ce qui concerne le flux ça ne dépasse pas les 2 Mo donc ce n'est pas énorme |
M'enfin? T'as cherché? Ce serait gore de se farcir ça à la main!
Marsh Posté le 19-12-2006 à 15:32:58
sauf que la JVM bouffe déjà 500 Mo avant que le moindre programme ne démarre
bon, faut que j'arrête de troller aujourd'hui. j'ai bu du vin à midi c'est mal
Marsh Posté le 19-12-2006 à 15:40:34
Ben là j'ai un éditeur de fichiers XML tout bête.
Je le lance : 40 Mo
Je charge un fichier de 7 Mo... proutch, 300 Mo
Marsh Posté le 19-12-2006 à 16:01:32
c pas pire que mon petit programme bd2xml...
comme je disais : 28 Ko.
il se connecte à une base de données, fait quelques requêtes dedans après avoir lu une poignée de fichiers de configuration en XML et génère un fichier xml de 33 Ko.
occupation mémoire : 21 Mo
Marsh Posté le 19-12-2006 à 18:06:23
MagicBuzz a écrit : c pas pire que mon petit programme bd2xml... |
le prog est mal codé
y en a un paquet de prog gérant le XML qui ont une empreinte mémoire monstrueuse
Rien à voir avec Java intrinsèquement
Marsh Posté le 19-12-2006 à 18:18:41
Oué bon, pour les petites tailles, la JVM est handicapée, cé triste.
Marsh Posté le 19-12-2006 à 19:34:37
(ici, moi c'est du C#, pas du Java. Mais c'est le même souci)
Ceci dit, vu le volume de données gérées et les traîtements effectués, je ne pige pas du tout pourquoi c'est aussi gros.
Je vais d'ailleurs poster un topic sur le sujet, parceque c'est bizarre.
D'autant plus bizarre que si je gère beaucoup plus d edonnées, ça prend grossomodo la même place, quand bien même je gère tout en mémoire, notamment le fichier de sortie).
J'ai l'impression que mes objets allouent d'énormes buffers pour rien.
Marsh Posté le 19-12-2006 à 20:48:10
Beh ouais. Tu peux essayer de jouer avec les params de la JVM pour réduire la conso. Tu peux peut-être t'amuser à gagner ici et là sur certaines allocations par défaut. Mais n'espère pas arriver à 1-2Mb comme certains ch'tits programmes dans d'autres langages.
Marsh Posté le 19-12-2006 à 14:07:50
Bonjour,
je voudrais savoir est-il possible de créer et envoyer un fichier par FTP sans pour autant le créer en local (cad sans pour autant le créer sur le serveur et aprés l'envoyer par FTP).
Merci.
Message édité par root76 le 19-12-2006 à 14:27:52