2013-01-22 89 views
0

我正在構建一個需要擴展並且高度可用的Java Web服務服務器。用戶可以通過服務上傳大文件(〜20M)。 SOAP是首選。Java Web服務允許大文件流式傳輸

我的問題是:是否有任何這樣的Web服務框架,支持大文件流?我應該考慮的任何構建塊?任何良好做法?

任何想法將不勝感激。謝謝。

+0

是你更關注上傳(用戶 - >服務器)或下載(服務器 - >用戶)? – mindas

+0

讓用戶上傳文件。但是,我更感興趣的是提供一種Web服務,允許文件內容在不同服務器之間自動傳輸。 – stones333

回答

3

如果您需要高性能,web服務不是很好。

你可以嘗試(流SOAP附件):

文件: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!"); 

    } 

} 
+0

這是一個可能的解決方案。謝謝。 MTOM會增加有效負載的大小嗎?如果我想發送大文件,即視頻文件,效率如何? – stones333

+0

是和不是。如果你想在內部使用它(一些廣域網連接,而不是很多用戶),這就夠用了。如果你將有成千上萬的用戶上傳內容忘了Java。這仍然是可能的,但$/req比例將是不可接受的。 – iddqd