Веб-сервисы Java, позволяющие передавать большие файлы

Я строю сервер веб-служб Java, который должен масштабироваться и быть высокодоступным. Пользователь может загрузить большой файл (~20M) через сервисы. Мыло является предпочтительным.

Мой вопрос: есть ли такая структура веб-службы, которая поддерживает потоковую передачу больших файлов? Любые строительные блоки, которые я должен рассмотреть? Есть хорошие практики?

Любые мысли будут оценены. Благодарю.

1 ответ

Если вам нужна высокая производительность, веб-сервисы не очень хороши.

Вы можете попробовать (Streaming SOAP Attachments):

File: ImageServer.java // Интерфейс конечной точки сервиса

package com.mkyong.ws;     
import java.awt.Image; 
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;



@WebService
@SOAPBinding(style = Style.RPC)
public interface ImageServer{

    //download a image from server
    @WebMethod Image downloadImage(String name);

    //update image to server
    @WebMethod String uploadImage(Image data);

}

//File : ImageServerImpl.java
package com.mkyong.ws;

import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.jws.WebService;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.soap.MTOM;

//Service Implementation Bean
@MTOM
@WebService(endpointInterface = "com.mkyong.ws.ImageServer")
public class ImageServerImpl implements ImageServer{

    @Override
    public Image downloadImage(String name) {

        try {

            File image = new File("c:\\images\\" + name);
            return ImageIO.read(image);

        } catch (IOException e) {

            e.printStackTrace();
            return null; 

        }
    }

    @Override
    public String uploadImage(Image data) {

        if(data!=null){
            //store somewhere
            return "Upload Successful";
        }

        throw new WebServiceException("Upload Failed!");

    }

}
Другие вопросы по тегам