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