第六课 jaxws-webservice编程

本文介绍使用JAX-WS实现文件上传的过程,包括服务端接口定义、实现及配置,客户端文件下载示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

    第四课和第五课了解了从服务器端下载二进制文件,但是没有涉及如何利用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
}
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值