Cxf - 基礎和示例

襲冷發表於2014-04-19

一、簡介

    WebService是一種跨平臺、跨語言的規範。解決遠端、跨平臺、跨語言應用之間的呼叫。


二、框架

    Axis --> Axis2(Apache,Web Service框架)

    XFire --> CXF(Apache,SOA框架(XFire(Web Service框架) + Celtix(ESB(企業服務匯流排)框架)))


三、配置

    下載CXFapache-cxf-2.7.10,在環境變數Path中新增D:\JavaIDE\apache-cxf-2.7.10\bin;


四、依賴

    


五、服務端

    1、說明

        (1)服務端新增Cxf相關的Jar

        (2)每個Web Service元件需要兩個部分,即介面和實現類
    1、介面

        介面需要使用java.jws.WebServie註解

import javax.jws.WebService;

@WebService
public interface UserInfoWs {

    public String sayHello(String name);
  
}

    2、實現

        實現類同樣需要使用java.jws.WebService註解,同時還需要指定其endpointInterface即實現的介面和serviceNameService的屬性

import javax.jws.WebService;

import com.xilen.cxf.ws.UserInfoWs;


@WebService(serviceName="UserInfoWsImpl",endpointInterface="com.xilen.cxf.ws.UserInfoWs")
public class UserInfoWsImpl implements UserInfoWs {

	@Override
	public String sayHello(String name) {
		
		return name + ", Hello!";
	}
}
    3、釋出

        通過內嵌Jetty伺服器,呼叫javax.xml.ws.Endpointpublish()方法釋出WebService

import javax.xml.ws.Endpoint;

import com.xilen.cxf.ws.UserInfoWs;
import com.xilen.cxf.ws.impl.UserInfoWsImpl;

public class ServerMain {
	public static void main(String[] args) {
		
		UserInfoWs hw = new UserInfoWsImpl();
		
		Endpoint.publish("http://192.168.1.100/cxf", hw);
		
	}
}
六、客戶端

    1、說明

        客戶端在簡單呼叫的情況下,無需依賴任何Cxf的Jar

    2、生成

        客戶端利用CXF中的wsdl2java工具,根據Server端的wsdl文件生成Web Service相關的Java程式碼

 D:\Works\CxfClient\src>wsdl2java http://192.168.1.100/cxf?wsdl
    3、呼叫

import com.xilen.cxf.ws.UserInfoWs;
import com.xilen.cxf.ws.impl.UserInfoWsImpl;

public class ClientMain {
	
	public static void main(String[] args) {
	
		//在生成的Java類中繼承javax.xml.ws.Service的類可作為工廠來使用
		UserInfoWsImpl factory = new UserInfoWsImpl();
		
		//通過工廠類例項來獲取遠端Web Service物件的代理
		UserInfoWs ui = factory.getUserInfoWsImplPort();
		
		//呼叫代理的方法實現遠端呼叫
		System.out.println(ui.sayHello("Admin"));
	}
}>
    4、結果

        Admin, Hello!






相關文章