一、開發工具與環境
1、 jdk1.6版本以上(jdk1.6.0_21及以上版本)
2 、eclipse4.5版本
3、與web服務相關的類,都位于javax.jws.*包中
@webservice——此注解用在類上指定将此類釋出成一個webservice;
@webmethod——此注解用在類中所定義的方法上,将方法釋出成一個webservice服務;可省略,但要将釋出服務的方法設定為public;
endpoint——此類為端點服務類,其中publish()方法用于将一個已經添加了@webservice注解對象綁定到一個位址的端口上,用于釋出。
4、使用jdk的endpoint釋出web服務要點
4.1.在要釋出服務的類上添加@webservice注解。将要釋出服務的方法設定為public。
4.2.調用endpoint.publish(,)釋出服務
其他注意事項:
1.給類添加上@webservice注解後,類中所有的非靜态方法都将會對外公布。
2.不支援靜态方法,final方法。
3.如果希望某個方法(非static,非final)不對外公開,可以在方法上添加@webmethod(exclude=true),阻止對外公開。
4.被添加了@webservice注解的類至少要有一個可以公開的方法,否則将會啟動失敗。
二、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);
public string save( string name);
}
2、定義一個實作類實作接口中所有方法,并用@webservice注解将實作類也注解成一個webservice服務,如下所示:
* 使用@webservice注解标注實作類,将實作類注解成為一個webservice服務
//
public class webserviceimpl implements webserviceinterface {
@override
public string sayhello(string name) {
system.out.println("hello world "+name);
return "hello world "+name;
}
public string save(string name) {
system.out.println("save "+name);
return "save "+name;
3、釋出服務
3.1 、使用endpoint(終端)類釋出webservice,如下所示:
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,代碼如下:
<display-name>ws_service</display-name>
<!-- 加載自定義監聽器 -->
<listener>
<listener-class> com.me.ws.webservicepublishlinster</listener-class>
</listener>
</web-app>
3.3、使用servlet釋出webservice,代碼如下:
<?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>
将web應用部署到伺服器運作時,在初始化webservicepublishservlet時,就會釋出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接口的使用即可,如下所示:
從調用傳回的結果顯示,借助wsimport工具生成的用戶端代碼已經成功調用到了webservice中的方法。以上就是使用jdk開發webservice的相關内容。