溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用JDK開發WebService

發布時間:2021-10-21 09:58:55 來源:億速云 閱讀:174 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關如何使用JDK開發WebService,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、WebService的開發手段

  使用Java開發WebService時可以使用以下兩種開發手段

    1、 使用JDK開發(1.6及以上版本)

    2、使用CXF框架開發(工作中)

二、使用JDK開發WebService

2.1、開發WebService服務器

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

 1 package me.gacl.ws; 2  3 import javax.jws.WebMethod; 4 import javax.jws.WebService; 5  6 /** 7  * @author gacl 8  * 定義SEI(WebService EndPoint Interface(終端)) 9  */10 //使用@WebService注解標注WebServiceI接口11 @WebService12 public interface WebServiceI {13 14     //使用@WebMethod注解標注WebServiceI接口中的方法15     @WebMethod16     String sayHello(String name);17     18     @WebMethod19     String save(String name,String pwd);20 }

  2、編寫interface的實現類,使用@WebService注解標注實現類,實現接口中定義的所有方法,如下所示:

 1 package me.gacl.ws; 2  3 import javax.jws.WebService; 4  5 /** 6  * @author gacl 7  * SEI的具體實現 8  */ 9 //使用@WebService注解標注WebServiceI接口的實現類WebServiceImpl10 @WebService11 public class WebServiceImpl implements WebServiceI {12 13     @Override14     public String sayHello(String name) {15         System.out.println("WebService sayHello "+name);16         return "sayHello "+name;17     }18 19     @Override20     public String save(String name, String pwd) {21         System.out.println("WebService save "+name+", "+pwd);22         return "save Success";23     }24 }

  3、使用Endpoint(終端)類發布webservice,代碼如下:

 1 package me.gacl.ws.test; 2  3 import javax.xml.ws.Endpoint; 4  5 import me.gacl.ws.WebServiceImpl; 6  7 /** 8  * @author gacl 9  *10  * 發布Web Service11  */12 public class WebServicePublish {13 14     public static void main(String[] args) {15         //定義WebService的發布地址,這個地址就是提供給外界訪問Webervice的URL地址,URL地址格式為:http://ip:端口號/xxxx16         //String address = "http://192.168.1.100:8989/";這個WebService發布地址的寫法是合法的17         //String address = "http://192.168.1.100:8989/Webservice";這個WebService發布地址的是合法的18         String address = "http://192.168.1.100:8989/WS_Server/Webservice";19         //使用Endpoint類提供的publish方法發布WebService,發布時要保證使用的端口號沒有被其他應用程序占用20         Endpoint.publish(address , new WebServiceImpl());21         System.out.println("發布webservice成功!");22     }23 }

  運行WebServicePublish類,就可以將編寫好的WebService發布好了,WebService的訪問URL是:http://192.168.1.100:8989/WS_Server/Webservice ,如下圖所示:

  如何使用JDK開發WebService

  這里我們編寫了一個WebServicePublish類來發布WebService,如果是Web項目,那么我們可以使用監聽器或者Servlet來發布WebService,如下:

  1、使用ServletContextListener監聽器發布WebService

 1 package me.gacl.listener; 2  3 import javax.servlet.ServletContextEvent; 4 import javax.servlet.ServletContextListener; 5 import javax.servlet.annotation.WebListener; 6 import javax.xml.ws.Endpoint; 7 import me.gacl.ws.WebServiceImpl; 8  9 /**10  * @author gacl11  * 用于發布WebService的監聽器12  */13 //使用Servlet3.0提供的@WebListener注解將實現了ServletContextListener接口的WebServicePublishListener類標注為一個Listener14 @WebListener15 public class WebServicePublishListener implements ServletContextListener {16 17     @Override18     public void contextDestroyed(ServletContextEvent sce) {19 20     }21 22     @Override23     public void contextInitialized(ServletContextEvent sce) {24         //WebService的發布地址25         String address = "http://192.168.1.100:8080/WS_Server/WebService";26         //發布WebService,WebServiceImpl類是WebServie接口的具體實現類27         Endpoint.publish(address , new WebServiceImpl());28         System.out.println("使用WebServicePublishListener發布webservice成功!");29     }30 }

  將Web應用部署到服務器運行時,在初始化Web應用上下文時,就會發布WebService了。

  接著我們可以使用發布的URL地址訪問WebService,如下圖所示:

  如何使用JDK開發WebService

  2、使用Servlet發布WebService

 1 package me.gacl.web.controller; 2  3 import javax.servlet.ServletException; 4 import javax.servlet.annotation.WebServlet; 5 import javax.servlet.http.HttpServlet; 6 import javax.xml.ws.Endpoint; 7 import me.gacl.ws.WebServiceImpl; 8  9 /**10  * @author gacl11  * 用于發布WebService的Servlet12  */13 //使用Servlet3.0提供的@WebServlet注解將繼承HttpServlet類的普通Java類標注為一個Servlet14 //將value屬性設置為空字符串,這樣WebServicePublishServlet就不提供對外訪問的路徑15 //loadOnStartup屬性設置WebServicePublishServlet的初始化時機16 @WebServlet(value="",loadOnStartup=0)17 public class WebServicePublishServlet extends HttpServlet {18 19     /* (non-Javadoc)20      * @see javax.servlet.GenericServlet#init()21      * 在WebServicePublishServlet初始化時發布WebService22      */23     public void init() throws ServletException {24         //WebService的發布地址25         String address = "http://192.168.1.100:8888/WebService";26         //發布WebService,WebServiceImpl類是WebServie接口的具體實現類27         Endpoint.publish(address , new WebServiceImpl());28         System.out.println("使用WebServicePublishServlet發布webservice成功!");29     }30 }

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

  如何使用JDK開發WebService

  接著我們可以使用發布的URL地址訪問WebService,如下圖所示:

  如何使用JDK開發WebService

  關于發布WebService主要就是通過javax.xml.ws.Endpoint類提供的靜態方法publish進行發布,如果是普通的java項目,那么可以專門寫一個類用于發布WebService,如果是Web項目,那么可以使用ServletContextListener或者Servlet進行發布。

2.2、開發WebService客戶端

  1、借助jdk的wsimort.exe工具生成客戶端代碼,wsimort.exe工具位于Jdk的bin目錄下,如下圖所示:

  如何使用JDK開發WebService

  執行命令:wsimport -keep url(url為wsdl文件的路徑)生成客戶端代碼。

  創建一個WebService客戶端測試項目,如下圖所示:

  如何使用JDK開發WebService

  打開命令行窗口,切換到src目錄,執行"wsimport -keep http://192.168.1.100:8888/WebService?wsdl"生成客戶端代碼,如下圖所示:

  如何使用JDK開發WebService

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

  如何使用JDK開發WebService

  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方法運行結果如下:

  如何使用JDK開發WebService

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

關于“如何使用JDK開發WebService”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女