1:到http://cxf.apache.org/download.html 去下载最新的 Apache CXF 包,下载好后解压到某个目录中,比如:d:/apache/cxf-2.1.4 中;
2:在控制台中进入 d:/apache/cxf-2.1.4/bin 目录,执行这个命令:
wsdl2java -p cn.test.ws -d d:/ws -verbose http://www.ayandy.com/Service.asmx?WSDL
wsdl2java 命令会生成一些封装的类和 SOAP 接口。
-p 参数是个包名,表示生成的类、接口放在什么包下面
-d 是个目录名,生成的包放在什么目录下
-verbose 是在生成代码时产生一些日志输出
最后一个是 WSDL 地址
3:生成好后把这些文件复制到 Eclipse 某个工程的相同包下面去。
4:到 CXF 的 lib 目录中把这些文件加载到 Eclipse 的 classpath 中去:
cxf-2.2.3.jar
geronimo-activation_1.1_spec-1.0.2.jar
geronimo-annotation_1.0_spec-1.1.1.jar
geronimo-jaxws_2.1_spec-1.0.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
jaxb-api-2.1.jar
jaxb-impl-2.1.12.jar
saaj-api-1.3.jar
wsdl4j-1.6.2.jar
wstx-asl-3.2.8.jar
XmlSchema-1.4.5.jar
4:写个 Test 类测试一下:
Java codeimport
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;
public class WebServiceTest {
private static final QName SERVICE_NAME=new QName("http://tempuri.org/","ServiceSoap");
private static final QName PORT_NAME=new QName("http://tempuri.org/","ServiceSoapPort");
public static void main(String[] args) {
Service service= Service.create(SERVICE_NAME);
String endpointAddress="http://www.ayandy.com/Service.asmx";
service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
ServiceSoap hw= service.getPort(ServiceSoap.class);
ArrayOfString as= hw.getWeatherbyCityName("上海", TheDayFlagEnum.TODAY);
for(String str : as.getString()) {
System.out.println(str);
}
}
}
需要注意一下的是,我用的 CXF 2.1.3 生成的 Service 类有个 bug,只要把这个类 import 中的这行:import javax.xml.ws.Service; 去掉就行了。
2:在控制台中进入 d:/apache/cxf-2.1.4/bin 目录,执行这个命令:
wsdl2java -p cn.test.ws -d d:/ws -verbose http://www.ayandy.com/Service.asmx?WSDL
wsdl2java 命令会生成一些封装的类和 SOAP 接口。
-p 参数是个包名,表示生成的类、接口放在什么包下面
-d 是个目录名,生成的包放在什么目录下
-verbose 是在生成代码时产生一些日志输出
最后一个是 WSDL 地址
3:生成好后把这些文件复制到 Eclipse 某个工程的相同包下面去。
4:到 CXF 的 lib 目录中把这些文件加载到 Eclipse 的 classpath 中去:
cxf-2.2.3.jar
geronimo-activation_1.1_spec-1.0.2.jar
geronimo-annotation_1.0_spec-1.1.1.jar
geronimo-jaxws_2.1_spec-1.0.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
jaxb-api-2.1.jar
jaxb-impl-2.1.12.jar
saaj-api-1.3.jar
wsdl4j-1.6.2.jar
wstx-asl-3.2.8.jar
XmlSchema-1.4.5.jar
4:写个 Test 类测试一下:
Java codeimport
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;
public class WebServiceTest {
private static final QName SERVICE_NAME=new QName("http://tempuri.org/","ServiceSoap");
private static final QName PORT_NAME=new QName("http://tempuri.org/","ServiceSoapPort");
public static void main(String[] args) {
Service service= Service.create(SERVICE_NAME);
String endpointAddress="http://www.ayandy.com/Service.asmx";
service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
ServiceSoap hw= service.getPort(ServiceSoap.class);
ArrayOfString as= hw.getWeatherbyCityName("上海", TheDayFlagEnum.TODAY);
for(String str : as.getString()) {
System.out.println(str);
}
}
}
需要注意一下的是,我用的 CXF 2.1.3 生成的 Service 类有个 bug,只要把这个类 import 中的这行:import javax.xml.ws.Service; 去掉就行了。