微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

第六课 jaxws-webservice编程

一、前言

    第四课和第五课了解了从服务器端下载二进制文件,但是没有涉及如何利用webservice进行文件上传,第六课主要解决这个问题。


二、目标

    了解利用jaxws进行文件上传


三、编写Server端

1、制作Service端接口

package com.guole.webservice.ws;

import javax.activation.DataHandler;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.soAPBinding;
import javax.xml.ws.soap.MTOM;

@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
@MTOM
public interface FileService {
    @WebMethod
    public DataHandler downloadFile(String fileName);
}

2、实现Service的接口

package com.guole.webservice.ws;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.jws.WebService;

@WebService(serviceName = "FileServiceImpl",portName = "FileServiceImplPort",targetNamespace = "http://ws.webservice.guole.com/",endpointInterface = "com.guole.webservice.ws.FileService")
public class FileServiceImpl implements FileService {

    public DataHandler downloadFile(String fileName) {
        // Todo Auto-generated method stub
        FileDataSource dataSource = new FileDataSource("d:/" + fileName);
        DataHandler fileDataHandler = new DataHandler(dataSource);
        return fileDataHandler;
    }

}

3、web.xml

<servlet>
        <servlet-name>FileService</servlet-name>
        <servlet-class>
            com.sun.xml.ws.transport.http.servlet.WSServlet
        </servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>FileService</servlet-name>
        <url-pattern>/FileService</url-pattern>
    </servlet-mapping>

4、sun-jaxws.xml

<endpoint name='FileService'
        implementation='com.guole.webservice.ws.FileServiceImpl'
        url-pattern='/FileService' />
5、发布程序就可以


、编写客户端

1、使用wsiport -keep http://127.0.0.1:8282/jws/FileService?wsdl 生成源码,放入src目录中

2、写测试类

public class TestCase { public static void main(String[] param) { // http://127.0.0.1:8282/jws/FileService?wsdl FileServiceImpl service = new FileServiceImpl(); FileService port = service.getFileServiceImplPort(); byte[] dh = port.downloadFile("carrier.jpg"); /*Location for downloading and storing in client’s machine*/ try { FileOutputStream outputStream = new FileOutputStream("d:/1.jpg"); outputStream.write(dh); outputStream.flush(); System.out.println(" Download Successful!"); } catch (Exception e) { // Todo: handle exception } } }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐