1. 程式人生 > >Webservice的cxf開發_入門(jdk1.7)

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();
	}