CXF框架實現WebService

Apache CXF介紹:http://cxf.apache.org/docs/index.html


一、使用CXF開發Web Service服務端:

每個Web Service組件需要2個部分:接口和實現類:
1、新建maven工程cxfWebService
工程目錄結構:
這是pom.xml文件的內容
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.webService</groupId>
  <artifactId>cxfWebService</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>cxfWebService</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <cxf.version>2.2.3</cxf.version>
  </properties>

 
<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
    </dependency>
        <!-- Jetty is needed if you're are not using the CXFServlet -->
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>${cxf.version}</version>
    </dependency>
</dependencies>
</project>
   2、開發一個webservice業務接口,方法使用@WebService修飾。
@WebService 
public interface HelloWorld {
	String sayHi(String name);  
}

3、寫一個這個方法的實現類,方法也需要使用@WebService修飾,並指定其中的參數中,如下指定了所需要實現的接口、並指定服務名稱。
package com.weir;

import java.util.Date;

import javax.jws.WebService;
@WebService(endpointInterface="com.weir.HelloWorld",serviceName="HelloWorldWs")//指定webservice所實現的接口以及服務名稱 
public class HelloWorldImpl implements HelloWorld{

	public String sayHi(String name) {
		// TODO Auto-generated method stub
		return name+"您好!現在時間是:"+new Date();  
	}

}
4、暴露Web Service的函數,運行函數暴露Web Service:
package com.weir;

import javax.xml.ws.Endpoint;

public class ServiceMain {
    public static void main(String args[]){  
		HelloWorld hw = new HelloWorldImpl();
		// 調用Endpoint的publish方法發佈Web Service
		String address="http://localhost:8080/helloWorldService";
		Endpoint.publish(address, hw);
		System.out.println("Web Service暴露成功!"); 
    }
}
打開瀏覽器輸入http://localhost:8080/helloWorldService?wsdl,暴露服務成功的情況下可以看到wsdl描述文件

二、開發Web Service客戶端:

1、新建java project cxfWebServiceClient
2、使用eclipse的new Web Service Client生成客戶端代碼
選擇剛纔的wsdl地址
選擇生成的代碼位置,我們這邊選擇新建的工程cxfWebServiceClient
可以看到,我們的工程底下多了這幾個文件
3、在客戶端寫測試代碼
package com.weir.test;

import java.rmi.RemoteException;

import com.weir.HelloWorldProxy;

public class TestService {
	public static void main(String args[]){
		HelloWorldProxy helloWorldProxy = new HelloWorldProxy();
		try {
			String s = helloWorldProxy.sayHi("weir");
			System.out.println("調用webservice:"+s);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
運行main函數,成功調用WebService


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章