Spring Boot项目整合CXF,实现webservice接口上传下载大文件(包含服务端,消费端)

Spring Boot项目整合CXF,实现webservice接口上传下载大文件(包含服务端,消费端)

整合 CXF 实现消费端上传下载大文件,spring boot 项目。

具体可以见文章尾部的源码。

服务端:


cxfconfig 是cxf的一下配置文件。服务暴露的配置。

cxffilewrapper 存放附件属性的实体类

FileWS为服务端实现接口

Filewsimpl具体的服务端实现方法,包括对客户端上传的简单处理(保存),客户端下载文件,服务端提供的路径等。

具体依赖jar见源码。


消费端:



消费端 除 terryDownloadFile(自建用于下载文件),springboot启动类外,其余都是通过wsdl文件生成的客户端文件。

生成方式百度,一般来说jar 生成和cxf生成式有区别的,jar一般生成数据类型简单的。

wsdl2java -d D:\\ideaWorkSpace\\src\\main\\java -client http://localhost:8762/soap/user?wsdl

文件上传,在生成的代码,FileWS_FileWSImplPort_Client.java中进行了修改

主要代码如下:

在源码中注释掉了,没来得及改,其实这段代码是上传代码。

System.out.println("Invoking upload...");
        com.zyyfw.CxfFileWrapper _upload_file = new CxfFileWrapper();
        _upload_file.setFileName("test.csv");
        _upload_file.setFileExtension("csv");
        DataSource source = new FileDataSource(new File("d:\\test.csv"));
        _upload_file.setFile(new DataHandler(source));
        boolean _upload__return = port.upload(_upload_file);
        System.out.println("upload.result=" + _upload__return);

文件下载主要代码在terryDownLoadFile.java中:


    public static void main(String args[]) throws java.lang.Exception {

        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(FileWS.class);
        factory.setAddress("http://localhost:8762/soap/user");

        FileWS fileWS = factory.create(FileWS.class);
        CxfFileWrapper fileWrapper = fileWS.download();
        OutputStream os = null;
        InputStream is = null;
        BufferedOutputStream bos = null;
        try

        {
            is = fileWrapper.getFile().getInputStream();

            // 文件在客户端的保存位置
            File dest = new File("d:\\download\\" + fileWrapper.getFileName());
            os = new FileOutputStream(dest);
            bos = new BufferedOutputStream(os);
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = is.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }

            bos.flush();
            System.out.println("下载完成");
        } catch (
                IOException e)

        {
            e.printStackTrace();
        } finally

        {
            if (bos != null) {
                try {
                    bos.close();
                } catch (Exception e) {
                }
            }

            if (os != null) {
                try {
                    os.close();
                } catch (Exception e) {
                }
            }

            if (is != null) {
                try {
                    is.close();
                } catch (Exception e) {
                }
            }
        }
    }

主要代码就这两端。具体可以详见源码。

参考文章:

https://www.cnblogs.com/huiy/p/6052221.html

https://blog.csdn.net/smugaoyi/article/details/78110879

源码地址:

https://github.com/TorresZheng/webservice-file-transport

联系方式:微信



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值