1. 程式人生 > >Web Service學習-CXF開發Web Service例項demo(一)

Web Service學習-CXF開發Web Service例項demo(一)

Web Service是什麼?

 Web Service不是框架,更甚至不是一種技術。而是一種跨平臺,跨語言的規範

Web Service解決什麼問題:

    為了解決不同平臺,不同語言所編寫的應用之間如何呼叫問題。例如,有一個C語言寫的程式,它想去呼叫java語言寫的某個方法。

集中解決:1,遠端呼叫 2,跨平臺呼叫 3,跨語言呼叫

實際應用:

1,同一個公司的新,舊系統的整合。Linux上的java應用,去呼叫windows平臺的C應用

2,不同公司的業務整合。業務整合就帶來不同公司的系統整合,不同公司的系統可能存在平臺不同,語言不同的問題

3,內容聚合。一個應用,比如需要提供,天氣預報,股票行情,黃金行情等。

CXF與Web Service的關係

    CXF是apache旗下的開源框架,由Celtix+ XFire這兩門經典的框架合成,是一套非常流行的web service框架。

CXF方式實現Web Service服務demo

1,配置環境變數

在CLASSPATH中新增E:\apache-cxf-2.6.2\lib

新建CXF_HOMEE:\apache-cxf-2.6.2

在PATH中新增 %CXF_HOME%\bin


2,使用CXF開發Web Service開發伺服器端

整個專案的目錄結構(普通java專案):


介面:

package com.tgb.service;

import javax.jws.WebService;


@WebService
public interface HelloWorld{
	
	public String sayHi(String name);
	
}

實現類:

package com.tgb.service.impl;

import java.util.Date;

import javax.jws.WebService;

import com.tgb.service.HelloWorld;

@WebService(endpointInterface="com.tgb.service.HelloWorld",serviceName="HelloWorldImpl")
public class HelloWorldImpl implements HelloWorld{

	public String sayHi(String name) {
			
		return name+"您好!現在時間為:"+new Date();
	}

	
}

測試客戶端:

package com.tgb.client;

import javax.xml.ws.Endpoint;

import com.tgb.service.HelloWorld;
import com.tgb.service.impl.HelloWorldImpl;

public class ServerMain {

	public static void main(String[] args){
		
		HelloWorld hw=new HelloWorldImpl();
		//呼叫endpoint的publish方法,來發布web service
		Endpoint.publish("http://192.168.24.215/hjy",hw);
		System.out.println("Web Service暴露成功");
	}
}

啟動程式:


檢視wsdl


3,使用CXF開發WebService客戶端

執行如下命令(找到webService的客戶端的工作空間執行)


重新整理客戶端專案,可看到如下生成的程式碼:


編寫客戶端呼叫程式碼:

package hjy;

import com.tgb.service.HelloWorld;
import com.tgb.service.impl.HelloWorldImpl;

public class ClientMain {

	public static void main(String[] args){
		HelloWorldImpl factory=new HelloWorldImpl();
		//此處返回的只是遠端Web Service的代理
		HelloWorld hw=factory.getHelloWorldImplPort();
		System.out.println(hw.sayHi("hejingyuan"));
	}
}

執行結果:

hejingyuan您好!現在時間為:TueJul 28 14:09:07 CST 2015

總結:

使用CXF開發WebService共有如下幾個步驟:

1,伺服器端

1)開發一個WebService業務介面。該介面要用@WebService修飾

2)開發一個WebService業務實現類。該實現類也需要用@WebService修飾

3)釋出WebService

2,客戶端

1)呼叫CXF提供的wsdl2java工具,根據WSDL文件生成相應的java程式碼。

WSDL-WebService Definition Language

任何語言實現了WebService,都需要提供,並暴露WSDL文件

2)找到wsdl2java所生成類中,一個繼承了Service的類

該類的例項可當成工廠來使用

3)呼叫Service子類的例項的getXxxPort方法,返回遠端WebService的代理

原始碼下載