Webservice的cxf開發_入門(jdk1.7)
一、部署cxf+ant環境
下載以後解壓,目錄結構如下
配置環境變數:
ANT_HOME=D:\PATH\apache-ant-1.8.4
CXF_HOME=D:\PATH\apache-cxf-2.4.2
CATALINA_HOME=D:\PATH\apache-tomcat-6.0.18\apache-tomcat-6.0.18
JAVA_HOME=C:\Java7
PATH=%CXF_HOME%\bin;%CATALINA_HOME%\bin;%ANT_HOME%\bin;%JAVA_HOME%\bin;
CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar;.\build\classes
cxf中常用的ant命令
“ant” 讀取預設的build.xml檔案構建專案(編譯)
“ant server” 啟動webservice服務端
“ant client” 啟動webservice客戶端呼叫服務端
“ant deploy -Dtomcat=true” 將服務端程式部署到tomcat,預設訪問的是一個servlet,對映所有services/*的路徑,訪問地址是:“localhost:8080/專案名/services”
“ant undeploy -Dtomcat=true” 解除安裝部署在tomcat的服務端程式
“ant clean” 清空專案
二、開發cxf入門程式
1.服務端介面
package cn.xt.test;
import javax.jws.WebService;
import javax.xml.ws.BindingType;
@WebService
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public interface IMyService {
public void sayHi();
}
2.服務端實現類
package cn.xt.test; import java.util.Date; import javax.jws.WebService; import javax.xml.ws.BindingType; @WebService @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING) public class MyService implements IMyService { public void sayHi(){ System.out.println("hi......"+new Date().toLocaleString()); } }
這裡的@BindingType有2個常用的值:
javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING:釋出soap1.1版本的服務端
javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING:釋出soap1.2版本的服務端
3.釋出服務
public static void main(String[] args) {
IMyService service = new MyService();
JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();
bean.setAddress("http://192.168.1.3:9999/hello");
bean.setServiceClass(IMyService.class);
bean.setServiceBean(service);
//新增cxf攔截器
bean.getInInterceptors().add(new LoggingInInterceptor());
bean.getOutInterceptors().add(new LoggingOutInterceptor());
bean.create();
}
訪問http://192.168.1.3:9999/hello?wsdl出現wsdl說明,則說明發布成功
服務端控制檯會有如下列印
資訊: Inbound Message
----------------------------
ID: 6
Address: http://192.168.1.3:9999/hello?wsdl
Http-Method: GET
Content-Type:
Headers: {Accept=[text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8], accept-encoding=[gzip, deflate, sdch], Accept-Language=[zh-CN,zh;q=0.8], Cache-Control=[max-age=0], connection=[keep-alive], Content-Type=[null], Host=[192.168.1.3:9999], Upgrade-Insecure-Requests=[1], User-Agent=[Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36]}
--------------------------------------
4.使用cxf自帶命令“wsdl2java” 生成客戶端程式碼
wsdl2java -d . http://192.168.1.3:9999/hello?wsdl
5.呼叫
public static void main(String[] args) {
IMyService service = new IMyServiceService().getIMyServicePort();
service.sayHi();
}