webservices系列(二)——JAX-WS文件上传下载

  • 2019 年 10 月 30 日
  • 筆記

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/luo4105/article/details/69938342

新建ImgData类,存放文件javabean

DataHandler:使用这个类型存放文件

@XmlRootElement(name="ImaData")  @XmlAccessorType(XmlAccessType.FIELD)  public class ImgData {    	private Integer id;  	@XmlMimeType("application/octet-stream")  	private DataHandler imgData;	//文件  	public Integer getId() {  		return id;  	}  	public void setId(Integer id) {  		this.id = id;  	}  	public DataHandler getImgData() {  		return imgData;  	}  	public void setImgData(DataHandler imgData) {  		this.imgData = imgData;  	}  }

Webservice接口,

@WebService(name="iHello2")  @SOAPBinding(style = SOAPBinding.Style.RPC)  @MTOM  public interface IHello2 {  	public void printContext();  	public ImgData getById(@WebParam(name="imgData")ImgData imgData);  }

实现类

@WebService(serviceName="HelloService",portName="HelloServicePort",  targetNamespace="http://service.lc.com/",endpointInterface="com.lc.service2.IHello2")  public class IHello2Imp implements IHello2 {    	@Resource  	private WebServiceContext context;    	@Override  	public void printContext() {  		MessageContext ctx = context.getMessageContext();  		Set<String> set = ctx.keySet();  		for(String key : set) {  			System.out.println("{" + key + "," + ctx.get(key) + "}");  			try {  				System.out.println("key.scope:" + ctx.getScope(key));  			} catch (Exception e) {  				System.out.println("scope not found");  			}    		}  	}    	@Override  	public ImgData getById(ImgData custom) {  		if(custom.getId() == 1) {  			File file = new File("f:" + File.separator + "原文件.png");  			System.out.println(file.exists());  			custom.setImgData(new DataHandler(new FileDataSource(file)));  		}  		return custom;  	}    }

这里需要在f盘下放一个“原文件.png”的文件,当然也可以改 创建webservice类SoapService2,运行

public class SoapService2 {    	public static void main(String[] args) {  		Endpoint.publish("http://localhost:8080/HelloService2", new IHello2Imp());  		System.out.println("run success");  	}    }

生成客户端代码

在cmd使用wsimport -p com.lc.client2 -keep http://localhost:8080/HelloService2?wsdl

把文件拷到eclipse对应包下 创建客户端类SoapClient.java,运行

public class SoapClient {  	public static void main(String[] args) throws MalformedURLException {  		QName qName = new QName("http://service.lc.com/", "HelloService");  		HelloService helloService = new HelloService(new URL("http://localhost:8080/HelloService2?wsdl"), qName);  		IHello2 hello2 = helloService.getPort(IHello2.class);  		hello2.printContext();  		ImgData imgData = new ImgData();  		imgData.setId(1);  		ImgData imgData2 = hello2.getById(imgData);  		DataSource ds = imgData2.getImgData().getDataSource();  		String ctt = ds.getContentType();  		System.out.println("ContentType:" + ctt);  		try {  			InputStream is = ds.getInputStream();  			OutputStream os = new FileOutputStream("F:" + File.separator + "t1.png");  			byte[] bytes = new byte[1024];//一次读取1024byte  			int i = 0;  			while((i = is.read(bytes)) != -1){  				os.write(bytes, 0, i);  			}  		} catch (IOException e) {  			e.printStackTrace();  		}  	}  }

运行结果

webservices系列参考资料 [1].webservice搭建和文件上传下载:http://wuhongyu.iteye.com/blog/807470

[2].天气预报和手机号信息查询:https://my.oschina.net/liu13430/blog/373940?fromerr=WmdtQOoY

[3].axis2创建实例:http://clq9761.iteye.com/blog/976029/

[4].axis2整合web项目:http://wangronaldo.iteye.com/blog/1456441

[5].xml配置详情:http://blog.csdn.net/guihaijinfen/article/details/8363839