精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产永久精品大片wwwapp| 黄黄视频在线观看| 亚洲久久久久久久久久| 国产aaa精品| 九九九九九九九九| 精品资源在线看| 日韩高清一区| 中文字幕av不卡| 日本亚洲欧美成人| 国产一二三四视频| 香蕉视频亚洲一级| 91麻豆免费看| 欧美又大粗又爽又黄大片视频| xxxxwww一片| caopeng在线| 黄色精品一二区| 日韩中文字幕国产精品| 亚洲人辣妹窥探嘘嘘| 国自产拍在线网站网址视频| 精品一区二区三区视频在线观看 | 91丨porny丨户外露出| 国产欧美日韩精品在线观看| 亚洲欧美va天堂人熟伦| 成人影院入口| 久久久www成人免费毛片麻豆| 2019最新中文字幕| 免费国产羞羞网站美图| 国产一区二区视频在线看| 亚洲欧美另类久久久精品| 91久久久久久久久久久久久| 天天干中文字幕| 亚洲一区二区三区日本久久九| 亚洲精品伦理在线| 成人影片在线播放| 日韩熟女精品一区二区三区| 美女午夜精品| 日本高清免费不卡视频| 亚洲蜜桃av| 99国产精品99| 国产精品magnet| 亚洲国产精品资源| 久久黄色片视频| 国产精品一级伦理| 激情综合色综合久久综合| 青青在线视频一区二区三区| 91视频免费在观看| 亚洲伦理一区二区| 亚洲一区二区三区视频在线播放 | 中文字幕在线日亚洲9| 欧美色图国产精品| 91精品国产手机| 国产a级黄色大片| 污污视频在线观看网站| 久久免费黄色| 久久综合电影一区| 国产蜜臀av在线一区二区三区| 国产美女直播视频一区| 成人免费毛片视频| 中文字幕免费精品| 亚洲老头同性xxxxx| 国产又黄又粗又猛又爽的视频| 人人视频精品| 91成人看片片| 男女裸体影院高潮| 午夜dj在线观看高清视频完整版| 97久久超碰精品国产| 国产自产女人91一区在线观看| 久久久久久久国产精品毛片| av一区二区高清| 日韩西西人体444www| 欧洲av无码放荡人妇网站| 国产日产一区二区| 久久免费美女视频| 国产精品加勒比| 91亚洲国产成人久久精品麻豆| 99国产一区| 久久亚洲春色中文字幕| 国产黄色的视频| 国产成人高清| 中文字幕av一区中文字幕天堂 | 日韩av免费| 亚洲精品乱码久久久久| 99热这里只有精品免费| 国产美女高潮在线| 一区二区视频在线看| 青青草国产免费| 免费在线看黄| 久久免费午夜影院| 在线观看成人av电影| 刘亦菲久久免费一区二区| 久久福利资源站| 99在线观看视频网站| 在线视频1卡二卡三卡| 久久精品一区二区国产| 久久免费精品视频| 全网免费在线播放视频入口| 影音先锋久久久| 欧美猛交ⅹxxx乱大交视频| 成人精品一二三区| 国产一区二区精品福利地址| 日韩一区二区三区xxxx| 国产精品18p| 欧美精品福利| 青青草原成人在线视频| 国产精品人人爽| 久久国产精品色| 国产精品成人一区二区三区| 国产三级在线| 亚洲国产精品久久久久秋霞影院 | 日韩欧美在线免费| 免费毛片网站在线观看| 成人福利电影| 亚洲午夜激情av| 国产精品拍拍拍| 日韩成人影音| 精品国产一二三| 国产成人av免费观看| 婷婷激情成人| 91精品黄色片免费大全| 成人高清在线观看视频| 日本一区二区三区播放| 亚洲天堂开心观看| 久久久久久久久福利| 国内自拍视频一区二区三区| 久久久久成人网| 国产做受高潮漫动| 极品少妇xxxx精品少妇| 日韩动漫在线观看| 天天综合视频在线观看| 中文字幕在线不卡一区| 无码毛片aaa在线| 国产啊啊啊视频在线观看| 在线观看国产一区二区| 国产中文字幕一区二区| 神马午夜久久| 中文字幕日韩专区| 免费看日批视频| 日本91福利区| 91精品国产综合久久久久久蜜臀| 欧美视频免费一区二区三区| 亚洲国产激情av| 蜜臀av午夜一区二区三区| 成人国产网站| 日韩欧美国产一区二区在线播放| 国产不卡一二三| 欧美美女视频| 日韩暖暖在线视频| 欧美色视频免费| 狠狠做深爱婷婷久久综合一区| 无遮挡又爽又刺激的视频 | 欧洲成人一区二区| av小片在线| 一区二区三区欧美激情| 久久久久久久香蕉| av在线精品| 久久五月天色综合| 国产成人精品白浆久久69| 91麻豆精品视频| 午夜免费福利小电影| 国产精品中文字幕制服诱惑| 在线成人中文字幕| 国产大片中文字幕在线观看| 国产a久久麻豆| 欧洲一区二区日韩在线视频观看免费 | 99久久久精品| 日韩亚洲一区在线播放| 色成人免费网站| 在线观看日韩视频| 一级黄色小视频| 亚洲蜜臀av乱码久久精品蜜桃| 天天久久综合网| 美女精品一区最新中文字幕一区二区三区| 最近中文字幕日韩精品| 亚洲 欧美 视频| 久久久99精品免费观看不卡| 亚洲国产精品三区| 亚洲国产不卡| 日本一区二区在线播放| 成年人在线视频| 无码av免费一区二区三区试看| 超碰人人草人人| 欧美欧美黄在线二区| 国产精品com| 午夜影院免费体验区| 日本精品视频一区二区三区| 国产一区第一页| 懂色av一区二区三区免费观看| 一卡二卡3卡四卡高清精品视频| 日韩伦理精品| 亚洲国产欧美一区| 狠狠狠狠狠狠狠| 91老司机福利 在线| 日日摸天天爽天天爽视频| 91精品精品| 九色一区二区| 丁香花在线影院| 亚洲男人av在线| av综合在线观看| 欧美网站在线观看| 欧美 日韩 国产 一区二区三区| 99国产精品久久久久| 国产又黄又猛的视频| 国产精品毛片一区二区三区| 国产欧美日韩一区| 国产在线拍揄自揄拍视频| 亚洲欧美一区二区三区久久| 国产偷拍一区二区| 色婷婷av一区二区三区gif| 免费中文字幕在线| 国产日产精品1区| 日本一本二本在线观看| 伊人久久大香线| 欧美最大成人综合网| heyzo欧美激情| 国内精品视频一区| 精品国产白色丝袜高跟鞋| 国产偷国产偷亚洲清高网站| 亚洲熟妇无码乱子av电影| 亚洲精品亚洲人成人网| 成年人看的免费视频| 91丨porny丨户外露出| 国产精品91av| 激情偷乱视频一区二区三区| 男人的天堂日韩| 色天天久久综合婷婷女18 | 成人短视频软件网站大全app| 国产91精品久久久久久| 欧美亚洲系列| 亚洲第一精品夜夜躁人人爽| 日韩精品在线免费视频| 国产校园另类小说区| 欧美夫妇交换xxx| 国产精品一区二区在线播放 | 国产乱码精品一区二区三区卡 | 免费毛片在线看片免费丝瓜视频| 色播久久人人爽人人爽人人片视av| 亚洲 欧美 激情 小说 另类| 精品国产凹凸成av人导航| 国产日韩免费视频| 欧美日韩国产成人在线91| 国产在线一卡二卡| 国产精品每日更新| 亚洲国产日韩在线一区| 久久狠狠亚洲综合| 国产乱子伦精品无码专区| 欧美五码在线| 国产欧美韩国高清| 欧美性理论片在线观看片免费| 欧美中文在线免费| 中文字幕成在线观看| 日韩综合视频在线观看| av在线电影观看| 中文字幕精品www乱入免费视频| 国产一区电影| 中文字幕久久久av一区| 日本高清在线观看wwwww色| www欧美日韩| 成人看av片| 欧美国产激情18| 国产高清免费av在线| 亚洲午夜未删减在线观看| 精品国产九九九| 在线免费观看日韩欧美| 日本成人一级片| 亚洲一区二区三区视频在线| 久久久国产成人| 亚洲18色成人| 成人性生活毛片| 一区二区三区在线影院| 日本少妇做爰全过程毛片| 中文字幕在线观看不卡视频| 看免费黄色录像| 一区二区国产视频| 中文字幕超碰在线| 亚洲午夜激情网页| 国产尤物在线视频| 欧美三级日本三级少妇99| 午夜精品三级久久久有码| 欧美午夜精品久久久久久浪潮| 在线视频精品免费| 欧美一级午夜免费电影| 特黄视频在线观看| 精品美女一区二区| 国产美女三级无套内谢| 亚洲成人激情视频| 国产精品视频二区三区| 久久夜色撩人精品| 天堂8中文在线最新版在线| 国产人妖伪娘一区91| 成人三级毛片| 亚洲狠狠婷婷综合久久久| 好吊视频一区二区三区四区| 女性隐私黄www网站视频| 国产一区二区在线观看视频| 国产一级片自拍| 成人精品高清在线| 国产调教打屁股xxxx网站| 91麻豆国产自产在线观看| а天堂中文在线资源| 五月天网站亚洲| 国产有码在线观看| 亚洲精品中文字幕有码专区| 麻豆传媒在线免费| 亲子乱一区二区三区电影| 精品午夜av| 92看片淫黄大片欧美看国产片| 日韩一区二区三免费高清在线观看| 成人免费在线一区二区三区| jlzzjlzz亚洲女人| 人妻av中文系列| 狠狠色综合播放一区二区| 精品久久久久久中文字幕人妻最新| 99视频一区二区| 免费看一级黄色| 色综合天天狠狠| 精品一区二区无码| 亚洲精品在线观看网站| 老司机午夜在线| 国产精品av电影| 亚洲瘦老头同性70tv| 青娱乐国产91| 亚洲精选一区| 国产精品亚洲二区在线观看| 国产精品69久久久久水密桃| 中文字幕无码毛片免费看| 国产女主播视频一区二区| 黄网在线观看视频| 精品嫩草影院久久| huan性巨大欧美| 国产美女精彩久久| 国产亚洲第一伦理第一区| 国产原创中文在线观看| 国产suv精品一区二区三区| 国产波霸爆乳一区二区| 5858s免费视频成人| 在线看黄色av| 国产精品揄拍一区二区| 国产成人黄色| 色哟哟精品视频| 国产欧美一区二区精品性| 国产精品777777| 国产视频自拍一区| 亚洲优女在线| 明星裸体视频一区二区| 久久中文亚洲字幕| 嫩草影院中文字幕| 国产精品456露脸| 黑鬼狂亚洲人videos| 6080日韩午夜伦伦午夜伦| 免费av网站在线看| 成人做爽爽免费视频| 91精品国产自产在线观看永久∴| 亚洲黄色片免费看| 一区二区三区自拍| 手机看片一区二区三区| 2018国产精品视频| 精品国产乱码一区二区三区| 特级毛片在线免费观看| 国产精品一二| 中文字幕一区二区三区人妻不卡| 欧美日韩国产激情| 你懂的在线观看| 国产精品无码专区在线观看| 久久中文字幕二区| 日韩av福利在线观看| 亚洲国产精品综合小说图片区| 天天操天天干天天操| 日韩美女毛茸茸| 欧美国产一区二区三区激情无套| 污免费在线观看| 亚洲国产wwwccc36天堂| 欧美理论在线观看| 国产精品天天狠天天看| 欧美精品一卡| 欧美黑人欧美精品刺激| 欧美亚洲愉拍一区二区| 亚洲 美腿 欧美 偷拍| 日韩美女免费视频| 99久久www免费| 五月婷婷深爱五月| 亚洲天堂久久久久久久| 伊人精品在线视频| 美女黄色丝袜一区| 日韩成人精品一区二区三区| 今天免费高清在线观看国语| 99久久精品情趣| 在线不卡免费视频| 欧美丰满片xxx777| 欧美日中文字幕| 国产精品99久久久精品无码| 欧美伊人久久久久久午夜久久久久| 精品国产丝袜高跟鞋| 久久艳妇乳肉豪妇荡乳av| 精品午夜一区二区三区在线观看| 免费毛片一区二区三区| 这里只有精品视频| 98视频精品全部国产| 四季av一区二区| 亚洲成a人片综合在线| 日韩av中文|