精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Apache CXF實戰(zhàn)之七:使用Web Service傳輸文件

開發(fā) 后端
首先聲明我知道有個協議叫ftp,也知道有種編程叫sock編程,但我就是碰到了server對外只開放80端口,并且還需要提供文件上傳和下載功能的應用,那好吧,開始干活。

首先聲明我知道有個協議叫ftp,也知道有種編程叫sock編程,但我就是碰到了server對外只開放80端口,并且還需要提供文件上傳和下載功能的應用,那好吧,開始干活。

1. 首先是一個封裝了服務器端文件路徑,客戶端文件路徑和要傳輸的字節(jié)數組的MyFile類。

  1. package com.googlecode.garbagecan.cxfstudy.filetransfer;  
  2.  
  3.  
  4. public class MyFile {  
  5.       
  6.     private String clientFile;  
  7.       
  8.     private String serverFile;  
  9.       
  10.     private long position;  
  11.       
  12.     private byte[] bytes;  
  13.  
  14.     public String getClientFile() {  
  15.         return clientFile;  
  16.     }  
  17.  
  18.     public void setClientFile(String clientFile) {  
  19.         this.clientFile = clientFile;  
  20.     }  
  21.  
  22.     public String getServerFile() {  
  23.         return serverFile;  
  24.     }  
  25.  
  26.     public void setServerFile(String serverFile) {  
  27.         this.serverFile = serverFile;  
  28.     }  
  29.  
  30.     public long getPosition() {  
  31.         return position;  
  32.     }  
  33.  
  34.     public void setPosition(long position) {  
  35.         this.position = position;  
  36.     }  
  37.  
  38.     public byte[] getBytes() {  
  39.         return bytes;  
  40.     }  
  41.  
  42.     public void setBytes(byte[] bytes) {  
  43.         this.bytes = bytes;  
  44.     }  
  45. }  

2. 文件傳輸的Web Service接口

  1. package com.googlecode.garbagecan.cxfstudy.filetransfer;  
  2.  
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebService;  
  5.  
  6. @WebService 
  7. public interface FileTransferService {  
  8.       
  9.     @WebMethod 
  10.     void uploadFile(MyFile myFile) throws FileTransferException;  
  11.  
  12.     @WebMethod 
  13.     MyFile downloadFile(MyFile myFile) throws FileTransferException;  

3. 文件傳輸的Web Service接口實現類,主要是一些流的操作

  1. package com.googlecode.garbagecan.cxfstudy.filetransfer;  
  2.  
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import java.io.OutputStream;  
  8. import java.util.Arrays;  
  9.  
  10. import org.apache.commons.io.FileUtils;  
  11. import org.apache.commons.io.IOUtils;  
  12.  
  13. public class FileTransferServiceImpl implements FileTransferService {  
  14.  
  15.     public void uploadFile(MyFile myFile) throws FileTransferException {  
  16.         OutputStream os = null;  
  17.           
  18.         try {  
  19.             if (myFile.getPosition() != 0) {  
  20.                 os = FileUtils.openOutputStream(new File(myFile.getServerFile()), true);  
  21.             } else {  
  22.                 os = FileUtils.openOutputStream(new File(myFile.getServerFile()), false);  
  23.             }  
  24.             os.write(myFile.getBytes());  
  25.         } catch(IOException e) {  
  26.             throw new FileTransferException(e.getMessage(), e);  
  27.         } finally {  
  28.             IOUtils.closeQuietly(os);  
  29.         }  
  30.     }  
  31.  
  32.     public MyFile downloadFile(MyFile myFile) throws FileTransferException {  
  33.         InputStream is = null;  
  34.           
  35.         try {  
  36.             is = new FileInputStream(myFile.getServerFile());  
  37.             is.skip(myFile.getPosition());  
  38.             byte[] bytes = new byte[1024 * 1024];  
  39.             int size = is.read(bytes);  
  40.             if (size > 0) {  
  41.                 byte[] fixedBytes = Arrays.copyOfRange(bytes, 0, size);  
  42.                 myFile.setBytes(fixedBytes);  
  43.             } else {  
  44.                 myFile.setBytes(new byte[0]);  
  45.             }  
  46.         } catch(IOException e) {  
  47.             throw new FileTransferException(e.getMessage(), e);  
  48.         } finally {  
  49.             IOUtils.closeQuietly(is);  
  50.         }  
  51.         return myFile;  
  52.     }  

4. 一個簡單的文件傳輸異常類

  1. package com.googlecode.garbagecan.cxfstudy.filetransfer;  
  2.  
  3. public class FileTransferException extends Exception {  
  4.  
  5.     private static final long serialVersionUID = 1L;  
  6.  
  7.     public FileTransferException() {  
  8.         super();  
  9.     }  
  10.  
  11.     public FileTransferException(String message, Throwable cause) {  
  12.         super(message, cause);  
  13.     }  
  14.  
  15.     public FileTransferException(String message) {  
  16.         super(message);  
  17.     }  
  18.  
  19.     public FileTransferException(Throwable cause) {  
  20.         super(cause);  
  21.     }  

5. 下面是Server類用來發(fā)布web service

  1. package com.googlecode.garbagecan.cxfstudy.filetransfer;  
  2.  
  3. import javax.xml.ws.Endpoint;  
  4.  
  5. public class FileTransferServer {  
  6.       
  7.     public static void main(String[] args) throws Exception {  
  8.         Endpoint.publish("http://localhost:9000/ws/jaxws/fileTransferService"new FileTransferServiceImpl());  
  9.     }  

6. 最后是Client類,用來發(fā)送文件上傳和下載請求。

  1. package com.googlecode.garbagecan.cxfstudy.filetransfer;  
  2.  
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import java.io.OutputStream;  
  8. import java.util.Arrays;  
  9.  
  10. import org.apache.commons.io.FileUtils;  
  11. import org.apache.commons.io.IOUtils;  
  12. import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;  
  13.  
  14. public class FileTransferClient {  
  15.       
  16.     private static final String address = "http://localhost:9000/ws/jaxws/fileTransferService";  
  17.       
  18.     private static final String clientFile = "/home/fkong/temp/client/test.zip";  
  19.     private static final String serverFile = "/home/fkong/temp/server/test.zip";  
  20.       
  21.     public static void main(String[] args) throws Exception {  
  22.         long start = System.currentTimeMillis();  
  23. //      uploadFile();  
  24. //      downloadFile();  
  25.         long stop = System.currentTimeMillis();  
  26.         System.out.println("Time: " + (stop - start));  
  27.     }  
  28.       
  29.     private static void uploadFile() throws FileTransferException {  
  30.         InputStream is = null;  
  31.         try {  
  32.             MyFile myFile = new MyFile();  
  33.             is = new FileInputStream(clientFile);  
  34.             byte[] bytes = new byte[1024 * 1024];  
  35.             while (true) {  
  36.                 int size = is.read(bytes);  
  37.                 if (size <= 0) {  
  38.                     break;  
  39.                 }  
  40.                   
  41.                 byte[] fixedBytes = Arrays.copyOfRange(bytes, 0, size);  
  42.                 myFile.setClientFile(clientFile);  
  43.                 myFile.setServerFile(serverFile);  
  44.                 myFile.setBytes(fixedBytes);  
  45.                   
  46.                 uploadFile(myFile);  
  47.                   
  48.                 myFile.setPosition(myFile.getPosition() + fixedBytes.length);  
  49.             }  
  50.         } catch(IOException e) {  
  51.             throw new FileTransferException(e.getMessage(), e);  
  52.         } finally {  
  53.             IOUtils.closeQuietly(is);  
  54.         }  
  55.     }  
  56.       
  57.     private static void uploadFile(MyFile myFile) throws FileTransferException {  
  58.         JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();  
  59.         factoryBean.setAddress(address);  
  60.         factoryBean.setServiceClass(FileTransferService.class);  
  61.         Object obj = factoryBean.create();  
  62.  
  63.         FileTransferService service = (FileTransferService) obj;  
  64.         service.uploadFile(myFile);  
  65.     }  
  66.       
  67.     private static void downloadFile() throws FileTransferException {  
  68.         MyFile myFile = new MyFile();  
  69.         myFile.setServerFile(serverFile);  
  70.         long position = 0;  
  71.         while (true) {  
  72.             myFile.setPosition(position);  
  73.             myFile = downloadFile(myFile);  
  74.             if (myFile.getBytes().length <= 0) {  
  75.                 break;  
  76.             }  
  77.               
  78.             OutputStream os = null;  
  79.             try {  
  80.                 if (position != 0) {  
  81.                     os = FileUtils.openOutputStream(new File(clientFile), true);  
  82.                 } else {  
  83.                     os = FileUtils.openOutputStream(new File(clientFile), false);  
  84.                 }  
  85.                 os.write(myFile.getBytes());  
  86.             } catch(IOException e) {  
  87.                 throw new FileTransferException(e.getMessage(), e);  
  88.             } finally {  
  89.                 IOUtils.closeQuietly(os);  
  90.             }  
  91.               
  92.             position += myFile.getBytes().length;  
  93.         }  
  94.     }  
  95.       
  96.     private static MyFile downloadFile(MyFile myFile) throws FileTransferException {  
  97.         JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();  
  98.         factoryBean.setAddress(address);  
  99.         factoryBean.setServiceClass(FileTransferService.class);  
  100.         Object obj = factoryBean.create();  
  101.  
  102.         FileTransferService service = (FileTransferService) obj;  
  103.         return service.downloadFile(myFile);  
  104.     }  
  105. }  

首先需要準備一個大一點的文件,然后修改代碼中的clientFile和serverFile路徑,然后分別打開uploadFile和downloadFile注釋,運行程序,檢查目標文件查看結果。

這個程序還是比較簡單的,但基本生完成了文件上傳下載功能,如果需要,也可以對這個程序再做點修改使其支持斷點續(xù)傳。

原文鏈接:http://blog.csdn.net/kongxx/article/details/7540930

【系列文章】

  1. Apache CXF實戰(zhàn)之六:創(chuàng)建安全的Web Service
  2. Apache CXF實戰(zhàn)之五:壓縮Web Service數據
  3. Apache CXF實戰(zhàn)之四:構建RESTful Web Service
  4. Apache CXF實戰(zhàn)之三:傳輸Java對象
  5. Apache CXF實戰(zhàn)之二:集成Sping與Web容器
  6. Apache CXF實戰(zhàn)之一:Hello World Web Service
責任編輯:林師授 來源: kongxx的博客
相關推薦

2012-05-03 11:51:59

ApacheCXFJava

2012-05-03 11:43:32

ApacheCXFRESTful

2012-05-07 14:08:20

ApacheCXFJava

2012-05-03 11:21:58

ApacheCXFJava

2012-05-03 11:35:56

ApacheCXFJava

2012-05-03 11:30:04

ApacheCXFJava

2012-05-03 10:55:51

ApacheMINAJava

2009-07-27 17:32:39

Web ServiceASP.NET

2012-02-22 22:56:19

開源Apache

2012-02-15 10:44:20

JavaJava Socket

2009-08-11 13:27:22

C#創(chuàng)建Web Ser

2011-03-24 09:36:48

AzureWCF Service

2012-05-03 10:24:02

ApacheMINAJava

2011-10-18 13:58:32

高性能web

2009-11-06 13:59:09

WCF Service

2009-04-13 11:31:55

IBMdWWebService

2012-02-15 10:40:37

JavaJava Socket

2009-11-23 19:50:33

ibmdwWebService

2009-08-11 11:07:49

Java調用C# we

2009-07-17 17:43:49

Jruby開發(fā)Web
點贊
收藏

51CTO技術棧公眾號

九色精品国产蝌蚪| 日韩精品专区| 99国产精品久久久久久久久久 | 欧美日韩在线看片| 国产福利精品导航| 日韩免费黄色av| 伊人久久久久久久久久久久久久| 麻豆视频久久| 色呦呦国产精品| 在线国产99| 香蕉国产在线视频| 久久9热精品视频| 91精品国产九九九久久久亚洲| 色欲AV无码精品一区二区久久| 亚洲综合影院| 欧美性大战久久久久久久| 久久av综合网| 理论片午午伦夜理片在线播放| jizz一区二区| 亚洲一区二区三区四区视频| 黄色片中文字幕| 欧美大片一区| 日韩中文字幕欧美| 国产精品三级在线观看无码| 欧州一区二区三区| 欧美视频一区二区三区| 国产黄页在线观看| 青草青在线视频| 国产精品高潮久久久久无| 久久综合久久综合这里只有精品| 成人福利小视频| 蜜臀久久99精品久久久画质超高清 | 三叶草欧洲码在线| 精品视频一二| 欧美另类z0zxhd电影| 日日摸天天爽天天爽视频| av在线小说| 亚洲精品自拍动漫在线| 亚洲永久激情精品| 成年人在线视频| 2020国产精品自拍| 久久av免费观看| 手机看片1024国产| 成人午夜av电影| 亚洲影视九九影院在线观看| 国产精品热久久| 精彩视频一区二区| 国产原创欧美精品| 911美女片黄在线观看游戏| 免费在线看成人av| 国产精品香蕉av| 中文字幕在线视频第一页| 日韩和欧美一区二区| 欧美中文字幕在线| yjizz国产| 视频在线在亚洲| 日韩美女视频免费在线观看| 91久久国产综合久久91| 久热精品视频| 国产精品三级美女白浆呻吟 | 日韩三级av在线播放| 日韩av加勒比| 国产一区 二区| 日韩一级大片在线| 日本一区二区在线观看视频| 成人性生交大片免费看中文视频 | 色噜噜狠狠色综合中国| 亚洲欧美另类动漫| 在线成人免费| 精品国产凹凸成av人网站| 亚洲天堂av网站| 亚洲自拍电影| 色哟哟网站入口亚洲精品| 伊人久久久久久久久久久久久久| 中文字幕一区二区三区乱码图片| 色综合色综合网色综合| 好吊操这里只有精品| 另类亚洲自拍| 成人在线精品视频| 男人天堂手机在线观看| 久久综合久色欧美综合狠狠| 亚洲v国产v在线观看| 国产黄a三级三级三级av在线看| 亚洲黄色尤物视频| 国产二区视频在线播放| 国内精品久久久久久影视8| 亚洲日本视频在线观看| 六月丁香婷婷色狠狠久久| 99爱精品视频| 免费福利在线观看| 亚洲欧洲av在线| 国产精品无码人妻一区二区在线| 性欧美超级视频| 51精品视频一区二区三区| 国产激情视频网站| 久久福利综合| 91精品国产91久久久久久吃药 | 日韩国产欧美精品一区二区三区| 手机看片福利视频| 欧美午夜久久| 国产精品免费久久久久久| 亚洲不卡免费视频| 国产亚洲欧美中文| 国产在线视频在线| 欧美与亚洲与日本直播| 日韩精品中午字幕| 国产欧美一区二区三区在线观看视频| 国产一区日韩一区| 国产在线高清精品| 久久久久97| 亚洲一级二级在线| 久久久久久久片| 中文字幕日韩高清在线| 国产午夜精品视频| 久久久久亚洲av成人片| 视频一区二区三区在线| 成人情视频高清免费观看电影| 韩国三级在线观看久| 亚洲综合清纯丝袜自拍| 男女男精品视频站| 欧美三级自拍| 色中色综合影院手机版在线观看| 做爰无遮挡三级| 91视频免费看| 福利视频一区二区三区四区| 粉嫩一区二区三区在线观看| 国产一区二区免费| 日本中文在线播放| 国产aⅴ精品一区二区三区色成熟| 日韩欧美一区二区三区四区| 在线手机中文字幕| 日韩一区二区不卡| 国产美女久久久久久| 日韩电影在线一区| 欧美日韩在线一二三| 国产乱码午夜在线视频| 欧美videos大乳护士334| 91香蕉一区二区三区在线观看| 日韩电影一区二区三区| 欧美黑人3p| 亚洲欧美电影| 亚洲精品自在久久| 啦啦啦免费高清视频在线观看| 粉嫩aⅴ一区二区三区四区五区| 黄瓜视频免费观看在线观看www| 日本中文字幕一区二区| 中文字幕欧美视频在线| 波多野结衣一二区| 久久久久九九视频| 中文字幕乱码人妻综合二区三区 | 欧美精品乱人伦久久久久久| 特级西西人体高清大胆| 免费观看日韩av| 中文精品视频一区二区在线观看| 97精品国产综合久久久动漫日韩 | 日韩av电影免费观看高清完整版| 免费国产一区二区| 日本免费久久| 这里只有精品久久| 国产精品欧美亚洲| 一区二区三区成人| 国模私拍在线观看| 久久成人在线| 亚洲午夜精品一区二区三区| 农村妇女一区二区| 九九九久久久久久| 无码国产伦一区二区三区视频| 激情成人中文字幕| 亚欧洲乱码视频| 日韩在线卡一卡二| 综合久久国产| 成人激情自拍| 国产精品91在线观看| 91xxx在线观看| 日韩欧美成人激情| 久久青青草原亚洲av无码麻豆| 国产日韩三级在线| www.国产福利| 亚洲精品孕妇| 亚洲一区二区在线观| 日韩三级av高清片| 欧美在线一区二区三区四| av在线资源网| 欧美电影免费提供在线观看| 91视频免费网址| 亚洲欧洲av色图| 亚洲最大免费视频| 麻豆成人免费电影| 草草视频在线免费观看| 国产一区二区三区网| 5566av亚洲| 欧美精品日日操| 久久99久久99精品免观看粉嫩| 日韩在线免费看| 91精品久久久久久久99蜜桃| 国产a∨精品一区二区三区仙踪林| 欧美激情中文字幕| 波多野结衣办公室双飞 | 又色又爽又黄18网站| 性8sex亚洲区入口| 97精品国产97久久久久久粉红| 任你躁在线精品免费| 91精品视频观看| 成人黄色免费短视频| 色综合男人天堂| 色综合久久影院| 亚洲欧美999| 亚洲精品一区二区三区区别| 欧美性生活一区| 日韩激情在线播放| 亚洲情趣在线观看| 无码人妻丰满熟妇啪啪欧美| www.日韩av| 欧美性受xxxx黒人xyx性爽| 久久综合影视| 久久综合色视频| 欧美淫片网站| 亚洲一区二区精品在线| 性欧美lx╳lx╳| 懂色中文一区二区三区在线视频| 国产国产一区| 日韩av片永久免费网站| 成入视频在线观看| 欧美日韩高清区| a级影片在线| 日韩网站在线观看| av网在线观看| 亚洲三级免费看| 色偷偷在线观看| 欧美成人r级一区二区三区| 97免费观看视频| 欧美日韩视频专区在线播放| 国产黄网在线观看| 日韩欧美999| 久久久久久久久久影院| 午夜免费久久看| 懂色av懂色av粉嫩av| 国产精品不卡一区二区三区| 中文字幕伦理片| 国产午夜精品久久久久久免费视| 毛片网站免费观看| 91麻豆国产福利在线观看| 国产xxxxxxxxx| 成a人片亚洲日本久久| 国产a级黄色片| av午夜一区麻豆| 亚洲婷婷在线观看| 91在线你懂得| 午夜理伦三级做爰电影| 久久久久久**毛片大全| 公肉吊粗大爽色翁浪妇视频| 国产亚洲人成网站| 在线观看国产精品一区| 国产欧美精品在线观看| jizzjizz日本少妇| 亚洲美女区一区| 中文字幕第28页| 五月婷婷久久丁香| 中文字幕在线看人| 欧洲日韩一区二区三区| 888奇米影视| 精品国产免费久久| 亚洲色欧美另类| 亚洲人成网站免费播放| 在线中文资源天堂| 久热精品视频在线观看| 久久五月精品中文字幕| 国语自产精品视频在线看一大j8| 免费h在线看| 国产精品黄色av| 成人在线视频区| 精品国产乱码久久久久| 欧美日韩国产一区二区三区不卡| 一区二区av| 欧美特黄a级高清免费大片a级| 成人在线免费观看av| 日日夜夜精品视频免费| 一区二区久久精品| 不卡电影一区二区三区| 中国毛片在线观看| 亚洲天堂a在线| 日韩少妇高潮抽搐| 欧美日韩一区小说| 亚洲精品无码久久久| 国产午夜精品视频| 日本一本在线免费福利| 日本免费一区二区三区视频观看| 亚洲电影二区| 久久国产精品-国产精品| 欧美顶级大胆免费视频| 玩弄中年熟妇正在播放| 美女诱惑一区二区| 国产精品久久久久久久无码| 欧美国产97人人爽人人喊| 麻豆视频在线观看| 在线一区二区三区做爰视频网站| 99精品人妻无码专区在线视频区| 精品视频www| 中文av资源在线| 亚洲毛片播放| 精品国产乱码久久久久久郑州公司| 你懂的一区二区三区| 91国在线高清视频| 日韩高清不卡在线| 大尺度做爰床戏呻吟舒畅| 国产精品色眯眯| 日韩视频在线观看一区| 日韩视频在线一区二区| 粉嫩一区二区三区国产精品| 国外成人在线视频| 精品视频在线观看免费观看| 日本一区二区三区视频在线观看| 国产精品大片| 激情图片中文字幕| 欧美激情一区二区三区蜜桃视频| 久草视频在线资源站| 精品视频在线看| 男女视频在线观看| 91精品国产91久久久久久吃药| 国产成年精品| 西游记1978| 天堂一区二区在线免费观看| 伊人网综合视频| 亚洲一区二区在线免费观看视频 | 欧美一区二区国产| av中文字幕在线| 国产成人亚洲精品| 天天躁日日躁成人字幕aⅴ| 狠狠干视频网站| 激情文学综合插| 男人天堂资源网| 在线中文字幕不卡| 每日更新在线观看av| 欧美一级视频一区二区| 国产毛片精品| 拔插拔插海外华人免费| 成人精品在线视频观看| 老女人性淫交视频| 91精品国产综合久久久久久久 | 一路向西2在线观看| 国产亚洲福利社区一区| 6080午夜伦理| 亚洲精品视频免费在线观看| 欧美私密网站| 久久手机视频| 麻豆久久精品| 成人在线手机视频| 欧美偷拍一区二区| 95在线视频| 成人在线视频网站| 中文字幕亚洲综合久久五月天色无吗'' | 日韩欧美一区中文| 牛牛精品视频在线| 国产伦精品一区二区三| 在线播放不卡| 中文字幕一区二区三区人妻| 色综合天天综合给合国产| 久久精品蜜桃| 国产欧美一区二区三区在线| 希岛爱理一区二区三区| 人妻精油按摩bd高清中文字幕| 午夜小视频在线观看| 97免费在线视频| 九一国产精品| 久久久久久久片| 亚洲三级在线观看| 免费观看毛片网站| 欧美有码在线视频| 日本精品黄色| 欧美性猛交xx| 欧美日韩国产一区在线| 国产在线观看精品一区| 成人妇女淫片aaaa视频| 黄色综合网站| 公侵犯人妻一区二区三区| 欧美性猛交xxxx乱大交退制版| 黄色网页在线免费观看| 国产精品美女黄网| 视频在线观看一区二区三区| 三上悠亚作品在线观看| 日韩电影网在线| 日本国产一区| 国内少妇毛片视频| 欧美激情综合五月色丁香小说| av 一区二区三区| 91成品人片a无限观看| 日韩精品一卡| 一级黄色免费视频| 欧美写真视频网站| 免费污视频在线| 日韩福利一区二区三区| 国产在线精品不卡| 国产精品美女久久久久av爽| 色妞色视频一区二区三区四区| 国产精品香蕉| 污污网站免费观看| 精品福利樱桃av导航| www在线观看播放免费视频日本| 欧美高清一区二区| 国产成人av电影在线观看|