一、首先,CXF的WS实现类由于实现了和Spring的无缝集成,因此可以采用Spring的单元测试来测试基本功能。
代码如下:
package com.defshare.sy.test.biz;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.UUID;
import javax.annotation.Resource;
import org.apache.commons.io.IOUtils;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.junit.Test;
import com.defshare.sy.ws.ISYWebService;
import com.defshare.sy.ws.po.Clinique;
import com.defshare.sy.ws.po.WorkList;
import com.defshare.sy.ws.po.WorkListPicFile;
public class SyWebServiceTest extends SpringTestTemplate{
@Test
public void testUploadWorkListPicFile(){
//JaxWsProxyFactoryBean proxy = new JaxWsProxyFactoryBean();
//proxy.setAddress("http://localhost:8090/sy/services/SYWebService");
//proxy.setServiceClass(ISYWebService.class);
//ISYWebService clientProxy = (ISYWebService)proxy.create();
//clientProxy.upLoadWorkListPic("", "",null);
WorkListPicFile file = new WorkListPicFile();
String serverFile = UUID.randomUUID().toString()+".DBF";
InputStream is = null;
try {
is = new FileInputStream("d:/QUESCTION.DBF");
file.setFileSize(is.available());
byte[] bytes = new byte[1024 * 1024];
int size=0;
do{
size = is.read(bytes);
if (size <= 0) {
break;
}
byte[] fixedBytes = Arrays.copyOfRange(bytes, 0, size);
file.setBytes(fixedBytes);
file.setServerFile(serverFile);
file.setWorkListId("WL0001");
int resp = syWebService.upLoadWorkListPic("WS访问账户","WS访问密码", file);
System.out.println(resp==0?"本次上传文件块成功":"本次上传文件块异常");
if (resp!=0)
break;
file.setPosition(file.getPosition() + fixedBytes.length);
}while(size>0);
} catch(IOException e) {
e.printStackTrace();
} finally {
if (is!=null)
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
IOUtils.closeQuietly(is);
}
}
@Test
public void testremoveWorkList(){
正常输入数据1 期望结果:成功 实际结果:
syWebService.removeWorkList("WS访问账户", "WS访问密码", "q");
}
@Test
public void testUpdateWorkList(){
WorkList wl = new WorkList();
wl.setGdbh("WL0001");
wl.setFggdbh("hehe-------");
syWebService.updateWorkList("WS访问账户", "WS访问密码", wl);
}
@Test
public void updateClinique(){
Clinique c = new Clinique();
c.setZsid("CL0001");
c.setDq("金牛区-------");
System.out.println("*******"+syWebService.updateClinique("WS访问账户", "WS访问密码", c));
}
@Resource(name="syWebService")
private ISYWebService syWebService;
@Resource(name="syWebService")
public void setSyWebService(ISYWebService syWebService) {
this.syWebService = syWebService;
}
}
二、待单元测试通过后在进行WebService调用测试,这需要发布这个WebService到服务器上:
我的这个WS发布后的WSDL如下:
http://192.168.1.89:92/services/SYWebService?wsdl
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions name="SYWebService" targetNamespace="http://www.springframework.org/schema/beans" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.springframework.org/schema/beans" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:types>
- <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://www.springframework.org/schema/beans" xmlns:tns="http://www.springframework.org/schema/beans" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <xs:complexType name="WorkListPicFile">
- <xs:sequence>
<xs:element minOccurs="0" name="workListId" type="xs:string" />
<xs:element minOccurs="0" name="serverFile" type="xs:string" />
<xs:element name="position" type="xs:long" />
<xs:element name="fileSize" type="xs:long" />
<xs:element minOccurs="0" name="bytes" type="xs:base64Binary" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="WorkList">
- <xs:sequence>
<xs:element minOccurs="0" name="gdbh" type="xs:string" />
<xs:element minOccurs="0" name="fggdbh" type="xs:string" />
<xs:element minOccurs="0" name="zsid" type="xs:string" />
<xs:element minOccurs="0" name="ysxm" type="xs:string" />
<xs:element minOccurs="0" name="brxm" type="xs:string" />
<xs:element minOccurs="0" name="ywy" type="xs:string" />
<xs:element minOccurs="0" name="ssdq" type="xs:string" />
<xs:element minOccurs="0" name="fgyy" type="xs:string" />
<xs:element minOccurs="0" name="jjrq" type="xs:string" />
<xs:element minOccurs="0" name="cjrq" type="xs:string" />
<xs:element minOccurs="0" name="jzrq" type="xs:string" />
<xs:element minOccurs="0" name="xgrq" type="xs:string" />
<xs:element minOccurs="0" name="xgcs" type="xs:string" />
<xs:element minOccurs="0" name="luz" type="xs:string" />
<xs:element minOccurs="0" name="cjr" type="xs:string" />
<xs:element minOccurs="0" name="pics" type="xs:string" />
<xs:element maxOccurs="unbounded" minOccurs="0" name="toothSpecs" nillable="true" type="tns:ToothSpec" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="ToothSpec">
- <xs:sequence>
<xs:element minOccurs="0" name="toothSpecId" type="xs:string" />
<xs:element minOccurs="0" name="gdbh" type="xs:string" />
<xs:element minOccurs="0" name="yclx" type="xs:string" />
<xs:element minOccurs="0" name="zl" type="xs:string" />
<xs:element minOccurs="0" name="ys" type="xs:string" />
<xs:element minOccurs="0" name="yw" type="xs:string" />
<xs:element minOccurs="0" name="dx" type="xs:string" />
<xs:element minOccurs="0" name="sl" type="xs:int" />
<xs:element minOccurs="0" name="addsl" type="xs:int" />
<xs:element minOccurs="0" name="jg" type="xs:int" />
<xs:element minOccurs="0" name="hbhid" type="xs:string" />
<xs:element minOccurs="0" name="gx" type="xs:string" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="Clinique">
- <xs:sequence>
<xs:element minOccurs="0" name="zsid" type="xs:string" />
<xs:element minOccurs="0" name="zsmm" type="xs:string" />
<xs:element minOccurs="0" name="dxts" type="xs:int" />
<xs:element minOccurs="0" name="zsmc" type="xs:string" />
<xs:element minOccurs="0" name="ysxm" type="xs:string" />
<xs:element minOccurs="0" name="lxdh" type="xs:string" />
<xs:element minOccurs="0" name="zsjx" type="xs:string" />
<xs:element minOccurs="0" name="zsdz" type="xs:string" />
<xs:element minOccurs="0" name="dq" type="xs:string" />
<xs:element minOccurs="0" name="dqbh" type="xs:string" />
<xs:element minOccurs="0" name="ywy" type="xs:string" />
<xs:element minOccurs="0" name="ywjl" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="removeWorkList" type="tns:removeWorkList" />
- <xs:complexType name="removeWorkList">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string" />
<xs:element minOccurs="0" name="arg1" type="xs:string" />
<xs:element minOccurs="0" name="arg2" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="removeWorkListResponse" type="tns:removeWorkListResponse" />
- <xs:complexType name="removeWorkListResponse">
- <xs:sequence>
<xs:element name="return" type="xs:int" />
</xs:sequence>
</xs:complexType>
<xs:element name="upLoadWorkListPic" type="tns:upLoadWorkListPic" />
- <xs:complexType name="upLoadWorkListPic">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string" />
<xs:element minOccurs="0" name="arg1" type="xs:string" />
<xs:element minOccurs="0" name="arg2" type="tns:WorkListPicFile" />
</xs:sequence>
</xs:complexType>
<xs:element name="upLoadWorkListPicResponse" type="tns:upLoadWorkListPicResponse" />
- <xs:complexType name="upLoadWorkListPicResponse">
- <xs:sequence>
<xs:element name="return" type="xs:int" />
</xs:sequence>
</xs:complexType>
<xs:element name="updateWorkList" type="tns:updateWorkList" />
- <xs:complexType name="updateWorkList">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string" />
<xs:element minOccurs="0" name="arg1" type="xs:string" />
<xs:element minOccurs="0" name="arg2" type="tns:WorkList" />
</xs:sequence>
</xs:complexType>
<xs:element name="updateWorkListResponse" type="tns:updateWorkListResponse" />
- <xs:complexType name="updateWorkListResponse">
- <xs:sequence>
<xs:element name="return" type="xs:int" />
</xs:sequence>
</xs:complexType>
<xs:element name="updateToothSpecGX" type="tns:updateToothSpecGX" />
- <xs:complexType name="updateToothSpecGX">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string" />
<xs:element minOccurs="0" name="arg1" type="xs:string&