File feltöltés webservice-szel (SWING + Apache CXF)

Fórumok

Hello,

Indul egy projektem, modellezném a fájl feltöltés funkciót.
Szerver oldalon létrehoztam ez alapján egy service endpointot.

Forrás: http://pastebin.com/6TPzJaLr

A kliensem SWING-es lesz, így generáltam stub-ot a fenti service-ből majd a következőt követtem el:

http://pastebin.com/PZVbLaSx

A MTOM mindkét oldalon be van kapcsolva. 100Mb alatti fájloknál működik szépen a feltöltés, felette azonban eldobja magát:
http://pastebin.com/YLGWTijZ

illetve még a http://pastebin.com/3TFnHNH8 jön elő.

Szerver tomcat 7 illetve jetty 7, JDK 7.
Apache CXF 2.7.5

Köszönöm előre is!

Hozzászólások

Én is hülye vagyok hozzá, csak használni szeretném. A postot megnéztem. Ott is az van, hogy MTOM esetén nem lehetne ilyen. Nekem úgy tűnik, mintha nem stream-ben menne a feltöltés, hanem pufferelni akarná aminek az a vége, hogy elfogy a heap.
Az attachment-max-size-ot állítottam, de nem segített.

Biztosan van megoldás csak még nem találtam meg :).

A kulcs a következő hibaüzenet:

"Text size limit (134217728) exceeded".

Növeld meg, a szükséges mértékre, persze a heap méretét is célszerű ilyenkor igazítani (második hiba).

A fő kérdés viszont: miért webservice-t használsz fájlfeltöltésre?

KoZo

Kerdes
- Van realis eselye, hogy 100 MB feletti fajlokkal kell foglalkozni?
- Mi az oka, hogy CXF/Webservice iranyban indultal el?
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Van esélye a 100MB feletti fájloknak.
Az eddig fájl feltöltős megoldás ftp-re épül, ez szeretném kiváltani, mivel jópár ügyfélnél ez probléma. A fájl feltöltés csak egyik a funkciók közül, amire a CXF-et használni szeretném.
Amúgy nem ragaszkodom hozzá, hogy ez legyen a megoldás.
Lényeg, hogy stabilan működjön és ne ftp-t használjon.
Javasoljatok kérlek!

Darabokban kell a programnak dolgoznia. Azaz
- nem lehet egyetlen művelet a feltöltés, részletekben kell feltölteni,
- nem lehet a szerver oldalon memóriában gyűjtögetni a részleteket, darabokban is kell kírni,
- ha a feltöltés végén atomi művelettel szeretnénk tudni az új fájlt a helyére rakni, akkor valami temp fájlba kell dolgozni, és a végén nyomni egy rename-et.

Köszönöm a tesztet! Tehát működik ez csak elkaszáltam valamit.
Lemásoltam az általad megadott osztályokat, de nálam az eredmény out of memory. Ha a heap-et 1024-re állítom, akkor lemegy. Megint csak az MTOM-ra gyanakszom, mivel nekem a
((SOAPBinding)endpoint.getBinding()).setMTOMEnabled(true);
cannot find symbol jön. Így ahhoz, hogy forduljon ezt ki kellett iktatnom.
Holnap gyártok egy új projektet csak erre és meglátjuk.
Mindenesetre bizakodó vagyok :).

Sikerült továbblépnem, de még nem teljes az eredmény.
A ((SOAPBinding)endpoint.getBinding()).setMTOMEnabled(true); problémát megoldottam (másik package-t kellett include-olni).
Így a kliens oldalon is beállítva az MTOM-ot kb. 300Mb-ot tudok gond nélkül áttolni.
Ha nagyobb a fájl akkor a szokásos hibaüzenetet kapom.
Erről lenne szó.

Ha ránéznétek megköszönném!