WEBSERVICE之JDK開發webservice

來源:互聯網
上載者:User

標籤:介面實現   keep   ons   result   mini   ima   image   src   lang   

WEBSERVICE之JDK開發webservice

一、開發工具與環境

1、 jdk1.6版本以上

2 、eclipse4.5版本

二、JDK開發webservice

1、定義一個interface,使用@WebService註解標註介面,使用@WebMethod註解標註介面中定義的所有方法,如下所示:

package com.me.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
/**
*
* @author Administrator
* 使用@WebService註解將介面註解為一個webservice服務
*/

@WebService
public interface WebServiceInterface {
  /*
  * 使用@WebMethod註解標註WebServiceInterface介面中的方法
  */
  @WebMethod
  public String sayHello(String name);
  @WebMethod
  public String save( String name);
}

2、定義一個實作類別實現介面中所有方法,並用@WebService註解將實作類別也註解成一個webservice服務,如下所示:

package com.me.ws;

import javax.jws.WebService;
/**
*
* @author Administrator
* 使用@WebService註解標註實作類別,將實作類別註解成為一個webservice服務
*/
//
@WebService
public class WebServiceImpl implements WebServiceInterface {

  @Override
  public String sayHello(String name) {
    System.out.println("hello world "+name);
    return "hello world "+name;
  }

  @Override
  public String save(String name) {  
    System.out.println("save "+name);
    return "save "+name;
  }

}

3、發布服務

3.1 、使用Endpoint(終端)類發布webservice,如下所示:

package com.me.ws;

import javax.xml.ws.Endpoint;

/**
*
* @author Administrator
* 發布webservice服務(JDK是使用Endpoint(終端)類發布webservice服務的)
*/
public class WebServicePublish {

  public static void main(String[] args) {
    /**
    *1、先提供一個給別人訪問的url地址
    */
    String address = "http://192.168.1.72:8089/ws_service/hello";
    // 2、使用Endpoint的publish方法來發布這個服務
    //Endpoint.publish(address, 介面實作類別)
    Endpoint.publish(address, new WebServiceImpl());
    System.out.println("發布webservice成功!");
  }

}

 運行WebServicePublish 類 後,就可以將編寫好的WebService發布好了,它的WSDL訪問地址是http://192.168.1.72:8089/ws_service/hello?wsdl。

以上是java工程的webservice發布,如果是web項目,則我們可以使用監聽器或者Servlet來發布WebService(在這裡就需要注意一點,項目中引用的servlet包必須是3.0及以上版本才行),

3.2 、使用監聽器發布webservice,代碼如下:

 package  com.me.ws;  import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import javax.xml.ws.Endpoint; import me.gacl.ws.WebServiceImpl;  /**  * @author gacl  * 用於發布WebService的監聽器  */ //使用Servlet3.0提供的@WebListener註解將實現了ServletContextListener介面的WebServicePublishListener類標註為一個Listener @WebListener public class WebServicePublishListener implements ServletContextListener {      @Override     public void contextDestroyed(ServletContextEvent sce) {      }      @Override     public void contextInitialized(ServletContextEvent sce) {         //WebService的發布地址         String address = "http://192.168.1.72:8089/ws_service/hello";         //發布WebService,WebServiceImpl類是WebServie介面的具體實作類別         Endpoint.publish(address , new WebServiceImpl());         System.out.println("使用WebServicePublishListener發布webservice成功!");     } }
在web.xml上進行配置:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

      <display-name>ws_service</display-name>
      <!-- 載入自訂監聽器 -->
  <listener>
    <listener-class> com.me.ws.webServicePublishLinster</listener-class>
  </listener>
</web-app>

將Web應用部署到伺服器運行時,在初始化Web應用上下文時,就會發布WebService了。
接著我們可以使用發布的URL地址訪問WebService

3.3、使用servlet發布webservice,代碼如下:

package com.me.ws;  import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.xml.ws.Endpoint; import me.gacl.ws.WebServiceImpl;  /**  * @author gacl  * 用於發布WebService的Servlet  */ //使用Servlet3.0提供的@WebServlet註解將繼承HttpServlet類的普通Java類標註為一個Servlet //將value屬性設定為空白字串,這樣WebServicePublishServlet就不提供對外訪問的路徑 //loadOnStartup屬性設定WebServicePublishServlet的初始化時機 @WebServlet(value="",loadOnStartup=0) public class WebServicePublishServlet extends HttpServlet {      /* (non-Javadoc)      * @see javax.servlet.GenericServlet#init()      * 在WebServicePublishServlet初始化時發布WebService      */     public void init() throws ServletException {         //WebService的發布地址         String address = "http://192.168.1.72:8089/ws_service/hello";         //發布WebService,WebServiceImpl類是WebServie介面的具體實作類別         Endpoint.publish(address , new WebServiceImpl());         System.out.println("使用WebServicePublishServlet發布webservice成功!");     } }

在web.xml上進行配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ws_service</display-name>
  <servlet>
    <servlet-name>WSServlet</servlet-name>
    <servlet-class>com.me.ws.WebServicePublishServlet</servlet-class>
    <load-on-startup>1</load-on-startup> <!-- 必須有 -->
  </servlet>
  <servlet-mapping>
    <servlet-name>WSServlet</servlet-name>
    <url-pattern>/ws_service</url-pattern>
  </servlet-mapping>
</web-app>

將Web應用部署到伺服器運行時,在初始化WebServicePublishServlet時,就會發布WebService了。如所示:

  

接著我們可以使用發布的URL地址訪問WebService
以上是webservice服務開發,下面講它的用戶端的開發
三、開發WebService用戶端

  1、藉助jdk的wsimport.exe工具產生用戶端代碼,wsimport.exe工具位於Jdk的bin目錄下,如所示:

  

  執行命令:wsimport -keep url(url為wsdl檔案的路徑)產生用戶端代碼。

  建立一個WebService用戶端測試專案,如所示:

  

  開啟命令列視窗,切換到src目錄,執行"wsimport -keep http://192.168.1.72:8089/ws_service/hello?wsdl"產生用戶端代碼,如所示:

  

 

  執行命令的過程中沒有出現任何錯誤,那麼代碼就產生成功了,重新整理一下src目錄,就可以看到產生的程式碼了,如所示:

  

  2、 藉助產生的程式碼編寫調用WebService對外提供的方法

  wsimport工具幫我們產生了好幾個java類,但我們只需要關心WebServiceImplService類和WebServiceImpl介面的使用即可,如下所示:

 1 package me.gacl.ws.client; 2  3 import me.gacl.ws.WebServiceImpl; 4 import me.gacl.ws.WebServiceImplService; 5  6 /** 7  * @author gacl 8  * 調用WebService的用戶端 9  */10 public class WSClient {11 12     public static void main(String[] args) {13         //建立一個用於產生WebServiceImpl執行個體的工廠,WebServiceImplService類是wsimport工具產生的14         WebServiceImplService factory = new WebServiceImplService();15         //通過工廠產生一個WebServiceImpl執行個體,WebServiceImpl是wsimport工具產生的16         WebServiceImpl wsImpl = factory.getWebServiceImplPort();17         //調用WebService的sayHello方法18         String resResult = wsImpl.sayHello("孤傲蒼狼");19         System.out.println("調用WebService的sayHello方法返回的結果是:"+resResult);20         System.out.println("---------------------------------------------------");21         //調用WebService的save方法22         resResult = wsImpl.save("孤傲蒼狼","123");23         System.out.println("調用WebService的save方法返回的結果是:"+resResult);24     }25 }

  用戶端調用伺服器端的WebService方法運行結果如下:

  

  從調用返回的結果顯示,藉助wsimport工具產生的用戶端代碼已經成功調用到了WebService中的方法。以上就是使用JDK開發WebService的相關內容。

WEBSERVICE之JDK開發webservice

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.