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:
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!
- 8973 megtekintés
Hozzászólások
En hulye vagyok ehhez, de hatha ez segit: http://stackoverflow.com/a/17238151/182474
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
É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 hozzászóláshoz be kell jelentkezni
En az attachment-size -ra gondoltam, termeszetesen, a post elso felevel en sem ertettem egyet. :-)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
service-szel
t
- A hozzászóláshoz be kell jelentkezni
Köszönöm!
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Azt megmondod neki, hogy hogyna novelje meg? En is keresgeltem a temaban, es nem sok mindent talaltam a stackoverflowos bejegyzesen kivul - amire viszont azt mondja, hogy nem segit.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
A választ nem tudom, de nyílt forrású a cucc, meg kell keresni, honnan szedi ezt a számot. Esetleg "org.apache.cxf.stax.maxTextLength".
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni
SCP
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Webservice: http://pastebin.com/qshpPUTU
BigData: http://pastebin.com/DxUXsjCj
WS publikalasa + kliens: http://pastebin.com/h1ZDpfnH
Verziok: java: 1.7.17, cxf: 2.7.5, jetty: amit a cxf magaval rantott
Javat lelimitalva 16 megara, gond nelkul atvitte a 1.2 gigas filet.
Ez alapjan a FileUploader osztalyod a bunos.
- A hozzászóláshoz be kell jelentkezni
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 :).
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni