天天看點

WEBSERVICE之JDK開發webservice

一、開發工具與環境

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了。如下圖所示:

  

WEBSERVICE之JDK開發webservice

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

WEBSERVICE之JDK開發webservice

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

  建立一個webservice用戶端測試項目,如下圖所示:

WEBSERVICE之JDK開發webservice

  打開指令行視窗,切換到src目錄,執行"wsimport -keep http://192.168.1.72:8089/ws_service/hello?wsdl"生成用戶端代碼,如下圖所示:

WEBSERVICE之JDK開發webservice

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

WEBSERVICE之JDK開發webservice

  2、 借助生成的代碼編寫調用webservice對外提供的方法

  wsimport工具幫我們生成了好幾個java類,但我們隻需要關心webserviceimplservice類和webserviceimpl接口的使用即可,如下所示:

WEBSERVICE之JDK開發webservice

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