Dobry den,
ak pouzivate Metro (https://metro.dev.java.net/), mozete pouzit MTOM v kombinacii so streamovanim velkych attachmentov.

V podstate vsetko co potrebujete na strane servera spravit je pridat @MTOM a @XmlMimeType("application/octet-stream") anotacie:

@MTOM
@WebService
@Stateless
public class FooWebService {

   @WebMethod
   public String uploadFileAsAttachment (
           @WebParam (name = "fileName") String fileName,
           @WebParam (name = "fileContent")
@XmlMimeType("application/octet-stream") DataHandler fileContent ) throws IOException
{
...
}

Ostatne uz Meto zariadi automaticky. Viac informacii na:

https://jax-ws.dev.java.net/guide/Large_Attachments.html

S pozdravom,
Marek Potociar


On 6.4.2009, at 15:28, Dusan Zatkovsky wrote:

Ahoj.

Snazim sa vyriesit $subj.

Zatial som skusil 2 cesty, ktore som vygooglil. Pomocou ws attachment v jax ws
a axis2.

jaxws vyzeralo nejak takto:

@WebService ()
@Stateless ()
public class FooWebService {

   @WebMethod
   public String uploadFileAsAttachment (
           @WebParam (name = "fileName") String fileName,
           @WebParam (name = "fileContent")
@XmlAttachmentRef () DataHandler fileContent ) throws IOException
{
...
}


Pre axis2 som upravil saopwithattachments example z
http://ws.apache.org/axis2/1_4_1/userguide-samples.html#others.

Oba priklady som vyskusal s GlassFish2, oba skoncili pri prenose / etc/passwd uspesne, ale pri prenose vacsich suborov ( radovo GB, viac ako dostupna
RAM+swap ) po kratkej chvili na chybu suvisiaci s nedostatkom pamati.

Je este nejaka ina cesta, ako prenasat subory pomocou WS? Povodne som totiz navrhoval, ze klient si s ws iba pokeca a samotny prenos obstara tretia
strana, pravdepodobne nejaky ssl socket, ktoremu da webservica echo o
klientovi a nejake autorizacne data, ktorymi sa potom klient ohlasi. Problem je, ze je to pre mna dalsi overhead, spojeny mimo ineho aj s vecami s javou
nesuvisiacimi ( povolit dalsie porty u klienta a tak podobne ).

Diky.

--
Dusan

Odpovedet emailem