1、自動生成客戶端程式碼:
先把CXF下到本地,本例中我下的是apache-cxf-3.1.2,然後在命令列裡到相應路徑執行命令:
D:\soft\DevelopSoft\apache-cxf-3.1.2\bin>wsdl2java -d D:\\src -client http://172.16.10.87/platform3.0/webService/TestWebservice?wsdl
或
D:\soft\DevelopSoft\apache-cxf-3.1.2\bin>wsdl2java -encoding utf-8 -d D:\\src -client http://localhost:8080/dbws?wsdl
如此wsdl2java工具會自動為你生成客戶端可呼叫程式碼在D盤的src目錄下。
2、在程式中使用
本例中服務端有一個介面ITestWebservice以及一個實現類TestWebserviceImpl。
自動生成的程式碼裡會有一個ITestWebservice以及一個TestWebserviceImplService,與上邊兩個算是一個對應關係。
使用的時候有兩種方式:
一、可以只通過ITestWebservice加地址的方式來呼叫
二、也可以通過ITestWebservice加TestWebserviceImplService的方式來呼叫
下邊的程式碼裡包含了這兩種方式:
import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.sdyy.webservice.ITestWebservice; import com.sdyy.webservice.TestWebserviceImplService; /** * @ClassName: WebServiceTest * @Description: TODO * @author: liuyx * @date: 2015年9月27日下午5:22:15 */ public class WebServiceTest3 { private static final String testUrl = "http://172.16.10.87/platform3.0/webService/TestWebservice?wsdl"; public static void main1(String[] args) throws Exception { JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean(); factoryBean.getInInterceptors().add(new LoggingInInterceptor()); factoryBean.getOutInterceptors().add(new LoggingOutInterceptor()); factoryBean.setServiceClass(ITestWebservice.class); factoryBean.setAddress(testUrl); ITestWebservice impl = (ITestWebservice) factoryBean.create(); System.out.println(impl.testOut("咯咯咯")); } public static void main(String[] args) throws Exception { TestWebserviceImplService factory = new TestWebserviceImplService(); ITestWebservice testOut = factory.getTestWebserviceImplPort(); System.out.println(testOut.testOut("GEGEGE")); } }
動態建立客戶端的方式,請參閱本博另一篇。
http://www.cnblogs.com/flying607/p/6254045.html