WebService學習(二)——Apache CXF

服務端接口開發

  • 建立maven的JavaSE項目:ws-server
  • 項目JDK須要是1.7以上版本,由於從1.7開始,JDK有WebService的默認實現。
  • 建立服務接口:ServiceDemo
@WebService
public interface ServiceDemo{
 
    public String say(String str);
}
  • 建立服務接口實現類:ServiceDemoImpl
@WebService
public class ServiceDemoImpl implements ServiceDemo{
 
    public String say(String str) {
        return "Hello "+str;
    }
 
}
  • 建立發佈服務的主類:Server,可使用JDK默認實現的EndPoint實現,也可使用CXF提供的WebService實現。

JDK實現:html

public class Server {
 
    public static void main(String[] args) {
        System.out.println("web service start");  
        HelloWorld implementor = new ServiceDemoImpl ();  
        String address = "http://192.168.1.103/serviceDemo";  
        Endpoint.publish(address, implementor);  // JDK實現
        System.out.println("web service started");  
    }
}
  • 使用CXF須要添加的jar:
<dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-core</artifactId>
        <version>3.1.5</version>
    </dependency>
     
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.1.5</version>
    </dependency>
     
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>3.1.5</version>
    </dependency>

CXF實現:java

public class Server {
 
    public static void main(String[] args) {
        System.out.println("web service start");  
        HelloWorld implementor = new ServiceDemoImpl ();  
        String address = "http://192.168.1.103/serviceDemo";  
        
        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
        factoryBean.setAddress(address); // 設置暴露地址
        factoryBean.setServiceClass(HelloWorld.class); // 接口類
        factoryBean.setServiceBean(implementor); // 設置實現類
        factoryBean.create();      
        System.out.println("web service started");  
    1}
}
  • 運行主類,發佈服務:運行S1erver類
  • 在瀏覽器中訪問服務:在瀏覽器中輸入: address?wsdl

客戶端實現

配置CXF

  • 下載CXF
  • 解壓到 D:\apache-cxf-3.1.5
  • bin目錄下有wsdl2java,wsdl2java.bat,要使用wsdl2java命令,須要配置path。打開環境變量配置,將路徑:D:\apache-cxf-3.1.5\bin 加入。

開發webservice客戶端

  • 建立一個maven的JavaSE項目:ws-clientweb

  • 找到ws-client項目的本地路徑: 輸入圖片說明apache

  • 在本地路徑下按shift加鼠標右鍵,打開命令窗口,輸入:wsdl2java address?wsdl。其中address是指服務端發佈的webservice接口瀏覽器

  • 上一步中須要注意的是:不能把服務器端關閉。服務器

  • 執行完以後,刷新ws-client,客戶端的代碼就生成了。frontend

  • 關鍵代碼是ServiceDemoService.javamaven

  • 編寫客戶端主類:Clientcode

public class Client {
 
    public static void main(String[] args) {
        ServiceDemoService service=new ServiceDemoService();
        ServiceDemo serviceDemo=service.getServiceDemoPort();
        System.out.println(serviceDemo.say("penelope"));
    }
}
  • 運行Client,打印出:hello penelope,說明成功調用了webservice服務器端的接口。
相關文章
相關標籤/搜索