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