1.下載地址: http://www.apache.org/dyn/closer.lua/cxf/3.1.6 2.修改系統環境變量path 解壓apache-cxf-3.1.6.zip文件夾 將解壓後的文件夾下的bin目錄的路徑拷貝 修改系統環境變量爲:D:\DevTools\Cxf\apache-cxf-3.1.6\bin 打開Cmd命令行窗口執行wsdl2java 若是出現如下提示,證實配置成功 C:\Users\xp>wsdl2java Missing argument: wsdlurl Usage : wsdl2java -fe|-front 3.開發webservice的服務端,有4步驟==================服務端 1.導入jar包 asm-3.3.1.jar commons-logging-1.1.1.jar cxf-2.7.8.jar geronimo-servlet_3.0_spec-1.0.jar jetty-continuation-8.1.14.v20131031.jar jetty-http-8.1.14.v20131031.jar jetty-io-8.1.14.v20131031.jar jetty-security-8.1.14.v20131031.jar jetty-server-8.1.14.v20131031.jar jetty-util-8.1.14.v20131031.jar neethi-3.0.2.jar stax2-api-3.1.1.jar woodstox-core-asl-4.2.0.jar wsdl4j-1.6.3.jar xmlschema-core-2.0.3.jar CXF:內置了jetty服務器 2.開發interface package com.xp.cn; import javax.jws.WebService; /** * @author xp * @ClassName: WebServiceDemo * @Description: webService服務端 * @date 2016年4月30日 下午8:27:44 */ @WebService public interface WebServiceDemo { String sayHello(String str); } 3.開發實現類 /** * @author xp * @ClassName: WebServiceImpl * @Description: TODO * @date 2016年4月30日 下午8:39:22 */ @WebService(endpointInterface = "com.xp.cn.IWebServiceDemo", serviceName = "webServiceImpl") public class WebServiceImpl implements IWebServiceDemo { @Override public String sayHello(String name) { return "你好" + name + new Date(); } } endpointInterface:指定接口的權限定名 serviceName : 指定一個服務的名稱 4.發佈Publish /** * @author xp * @Title: WebServicePublish.java * @Package com.xp.cn * @Description: TODO * @date 2016年4月30日 下午9:06:49 * @version V1.0 */ package com.xp.cn; import javax.xml.ws.Endpoint; /** * @author xp * @ClassName: WebServicePublish * @Description: TODO * @date 2016年4月30日 下午9:06:49 * */ public class WebServicePublish { public static void main(String[] args) { IWebServiceDemo demo = new WebServiceImpl(); //調用EndPoint發佈服務 Endpoint.publish("http://127.0.0.1/XXX", demo); } } 測試是否成功 在瀏覽器中輸入:http://127.0.0.1/XXX出現下圖說明發布成功 能夠點擊連接進入wsdl,接下來記得章節會具體將到wsdl
4.編寫WebService客戶端======================================客戶端 調用cxf提供的wsdl2java工具,更具wsdl生成相應的java代碼 任何語言只要實現webservice,都須要提供,並暴露wsdl 操做以下圖:
1.圖java
2.圖web
找到wsdl2java所生成的類,其中有一個繼承了Service,該類的實實例能夠當成工廠來使用 調用Service子類實例的getXXXPort方法
/** * @author xp * @Title: ClientTest.java * @Package com.xp.cn.test * @Description: TODO * @date 2016年4月30日 下午10:37:23 * @version V1.0 */ package com.xp.cn.test; import com.xp.cn.IWebServiceDemo; import com.xp.cn.WebServiceImpl; /** * @author xp * @ClassName: ClientTest * @Description: 客戶端代碼 * @date 2016年4月30日 下午10:37:23 * */ public class ClientTest { public static void main(String[] args) { WebServiceImpl service = new WebServiceImpl(); IWebServiceDemo webServiceImpl = service.getWebServiceImplPort(); String sayHello = webServiceImpl.sayHello("xp"); System.out.println(sayHello); } }
控制檯輸出:你好xpSat Apr 30 22:48:19 CST 2016apache
這個時候不能改掉服務端的java虛擬機api