1. 程式人生 > >使用cxf構建簡單的WebService

使用cxf構建簡單的WebService

伺服器端

首先要在pom檔案中增加一些內容,吧cxf的jar包利用maven下載下來

<properties>
    <!-- 檔案拷貝編碼 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 輸出編碼 -->
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!-- 編譯編碼 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding> <!-- CXF版本 --> <cxf.version>3.1.1</cxf.version> </properties> <dependencies> <!-- CXF --> <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> <dependency> <!-- 如果CXF不整合到Web伺服器中,必須新增該引用 --> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>${cxf.version}</version> </dependency> <!-- End CXF -->

然後我們建立一個介面

@WebService(name = "HelloWS",
        targetNamespace = "http://benzhu/services/hello")
public interface HelloWS {
    @WebMethod
    String welcome(@WebParam(name = "name") String name);
}

@WebService 是用來標識 web服務的
@WebMethod 標識的是web的方法
@WebParam 是web服務的引數
targetNamespace 其實可以理解成java裡的包的概念

詳細的可以看
http://blog.csdn.net/xxssyyyyssxx/article/details/50292787

然後定義實現類

@WebService(
        endpointInterface = "com.demo.HelloWS",
        portName = "HelloWSPort",
        serviceName = "HelloWSService",
        targetNamespace = "http://benzhu/services/hello"
)
public class HelloWSImpl implements HelloWS {
    @Override
    public String welcome(String name) {
        return "Welcome " + name;
    }

}

這個webservice的作用就是 你提供一個字串 他在前面加上Welcome 再返回

最後一步啟動 webservice

public class CxfServer {
    public static void main(String[] args) {
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setServiceClass(HelloWS.class);
        //服務釋出的地址
        factory.setAddress("http://localhost:8999/services/hello");
        factory.setServiceBean(new HelloWSImpl());
        factory.create();
    }

}

在瀏覽器輸入http://localhost:8999/services/hello?wsdl

可以看到xml檔案
這裡寫圖片描述

下面編寫客戶端

public class Client {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(HelloWS.class);
        factory.setAddress("http://localhost:8999/services/hello");
        HelloWS helloWS = factory.create(HelloWS.class);
        String welcome = helloWS.welcome("pig");
        System.out.println(welcome);
    }
}

不出意外你可以在控制檯輸出Welcome pig