您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)如何使用JDK開發(fā)WebService,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
使用Java開發(fā)WebService時可以使用以下兩種開發(fā)手段
1、 使用JDK開發(fā)(1.6及以上版本)
2、使用CXF框架開發(fā)(工作中)
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的實現(xiàn)類,使用@WebService注解標注實現(xiàn)類,實現(xiàn)接口中定義的所有方法,如下所示:
1 package me.gacl.ws; 2 3 import javax.jws.WebService; 4 5 /** 6 * @author gacl 7 * SEI的具體實現(xiàn) 8 */ 9 //使用@WebService注解標注WebServiceI接口的實現(xiàn)類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(終端)類發(fā)布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 * 發(fā)布Web Service11 */12 public class WebServicePublish {13 14 public static void main(String[] args) {15 //定義WebService的發(fā)布地址,這個地址就是提供給外界訪問Webervice的URL地址,URL地址格式為:http://ip:端口號/xxxx16 //String address = "http://192.168.1.100:8989/";這個WebService發(fā)布地址的寫法是合法的17 //String address = "http://192.168.1.100:8989/Webservice";這個WebService發(fā)布地址的是合法的18 String address = "http://192.168.1.100:8989/WS_Server/Webservice";19 //使用Endpoint類提供的publish方法發(fā)布WebService,發(fā)布時要保證使用的端口號沒有被其他應(yīng)用程序占用20 Endpoint.publish(address , new WebServiceImpl());21 System.out.println("發(fā)布webservice成功!");22 }23 }
運行WebServicePublish類,就可以將編寫好的WebService發(fā)布好了,WebService的訪問URL是:http://192.168.1.100:8989/WS_Server/Webservice ,如下圖所示:
這里我們編寫了一個WebServicePublish類來發(fā)布WebService,如果是Web項目,那么我們可以使用監(jiān)聽器或者Servlet來發(fā)布WebService,如下:
1、使用ServletContextListener監(jiān)聽器發(fā)布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 * 用于發(fā)布WebService的監(jiān)聽器12 */13 //使用Servlet3.0提供的@WebListener注解將實現(xiàn)了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的發(fā)布地址25 String address = "http://192.168.1.100:8080/WS_Server/WebService";26 //發(fā)布WebService,WebServiceImpl類是WebServie接口的具體實現(xiàn)類27 Endpoint.publish(address , new WebServiceImpl());28 System.out.println("使用WebServicePublishListener發(fā)布webservice成功!");29 }30 }
將Web應(yīng)用部署到服務(wù)器運行時,在初始化Web應(yīng)用上下文時,就會發(fā)布WebService了。
接著我們可以使用發(fā)布的URL地址訪問WebService,如下圖所示:
2、使用Servlet發(fā)布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 * 用于發(fā)布WebService的Servlet12 */13 //使用Servlet3.0提供的@WebServlet注解將繼承HttpServlet類的普通Java類標注為一個Servlet14 //將value屬性設(shè)置為空字符串,這樣WebServicePublishServlet就不提供對外訪問的路徑15 //loadOnStartup屬性設(shè)置WebServicePublishServlet的初始化時機16 @WebServlet(value="",loadOnStartup=0)17 public class WebServicePublishServlet extends HttpServlet {18 19 /* (non-Javadoc)20 * @see javax.servlet.GenericServlet#init()21 * 在WebServicePublishServlet初始化時發(fā)布WebService22 */23 public void init() throws ServletException {24 //WebService的發(fā)布地址25 String address = "http://192.168.1.100:8888/WebService";26 //發(fā)布WebService,WebServiceImpl類是WebServie接口的具體實現(xiàn)類27 Endpoint.publish(address , new WebServiceImpl());28 System.out.println("使用WebServicePublishServlet發(fā)布webservice成功!");29 }30 }
將Web應(yīng)用部署到服務(wù)器運行時,在初始化WebServicePublishServlet時,就會發(fā)布WebService了。如下圖所示:
接著我們可以使用發(fā)布的URL地址訪問WebService,如下圖所示:
關(guān)于發(fā)布WebService主要就是通過javax.xml.ws.Endpoint類提供的靜態(tài)方法publish進行發(fā)布,如果是普通的java項目,那么可以專門寫一個類用于發(fā)布WebService,如果是Web項目,那么可以使用ServletContextListener或者Servlet進行發(fā)布。
1、借助jdk的wsimort.exe工具生成客戶端代碼,wsimort.exe工具位于Jdk的bin目錄下,如下圖所示:
執(zhí)行命令:wsimport -keep url(url為wsdl文件的路徑)生成客戶端代碼。
創(chuàng)建一個WebService客戶端測試項目,如下圖所示:
打開命令行窗口,切換到src目錄,執(zhí)行"wsimport -keep http://192.168.1.100:8888/WebService?wsdl"生成客戶端代碼,如下圖所示:
執(zhí)行命令的過程中沒有出現(xiàn)任何錯誤,那么代碼就生成成功了,刷新一下src目錄,就可以看到生成的代碼了,如下圖所示:
2、 借助生成的代碼編寫調(diào)用WebService對外提供的方法
wsimport工具幫我們生成了好幾個java類,但我們只需要關(guān)心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 * 調(diào)用WebService的客戶端 9 */10 public class WSClient {11 12 public static void main(String[] args) {13 //創(chuàng)建一個用于產(chǎn)生WebServiceImpl實例的工廠,WebServiceImplService類是wsimport工具生成的14 WebServiceImplService factory = new WebServiceImplService();15 //通過工廠生成一個WebServiceImpl實例,WebServiceImpl是wsimport工具生成的16 WebServiceImpl wsImpl = factory.getWebServiceImplPort();17 //調(diào)用WebService的sayHello方法18 String resResult = wsImpl.sayHello("孤傲蒼狼");19 System.out.println("調(diào)用WebService的sayHello方法返回的結(jié)果是:"+resResult);20 System.out.println("---------------------------------------------------");21 //調(diào)用WebService的save方法22 resResult = wsImpl.save("孤傲蒼狼","123");23 System.out.println("調(diào)用WebService的save方法返回的結(jié)果是:"+resResult);24 }25 }
客戶端調(diào)用服務(wù)器端的WebService方法運行結(jié)果如下:
從調(diào)用返回的結(jié)果顯示,借助wsimport工具生成的客戶端代碼已經(jīng)成功調(diào)用到了WebService中的方法。以上就是使用JDK開發(fā)WebService的相關(guān)內(nèi)容。
關(guān)于“如何使用JDK開發(fā)WebService”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。