webService學習(二)—— 呼叫自定義物件引數

0day__發表於2017-01-16

webService學習(二)—— 呼叫自定義物件引數

本文主要內容:
1、如何通過idea進行webService Client的簡單實現(不再使用wsimport的方式,其實是ide幫我們做了)
2、在webservice中呼叫自定義引數(自定義類)。

好,下面上貨。

一、在idea的幫助下使用webService Client。
首先需要感謝一下文章:
https://my.oschina.net/nba/blog/482117
通過這篇文章能夠對在自己的專案中成功的引入webService。
簡單說一共兩步:
1、在專案中建立好自己的包(用來存放webservice生成的檔案)

2、選擇webservice方式,並且生成。

點選ok後,能夠在com.otherWebService包下生成對應的webservice client端的檔案。


二、在webservice中呼叫自定義引數(自定義類)
1、首先定義一個學生類:
package com.xueyoucto.xueyou;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

/**
 * Created by Administrator on 2017/1/16.
 */
public class Student {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Student() {
    }
}

2、定義一個webService
package com.xueyoucto.xueyou;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
 * Created by Administrator on 2017/1/14.
 */
@WebService
public class HelloService {

    public String testService(String params){
        return "hello " + params;
    }

    public String testStudent(Student student){
        return student.getName() + " : " + student.getAge();
    }

    public static void main(String[] args) {
        Endpoint.publish("http://localhost:8888/HelloService/",new HelloService());
        System.out.println("ok");
    }
}

3、釋出webService




4、按照上面介紹的匯入webservice Client的方式把HelloService匯入到專案中

5、嘗試呼叫webService
package com.firstServiceClient;

import com.otherWebService.HelloService;
import com.otherWebService.HelloServiceService;
import com.otherWebService.Student;

import javax.xml.ws.WebServiceException;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args ) {
        System.out.println( "Hello World!" );
        try {
            HelloService helloService = new HelloServiceService().getHelloServicePort();
            String s  = helloService.testService("aabbcc");
            System.out.println(s);
            Student student = new Student();
            student.setAge(13);
            student.setName("aabbcc");
            String s2 = helloService.testStudent(student);
            System.out.println(s2);
        }catch (WebServiceException wse){
            System.out.println("服務未啟動");
            wse.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

6、執行結果:


7、注意:
在webService的呼叫過程中,不能使用student的全建構函式。在網上查詢原因的時候遇到了一些解釋。主要原因就是在呼叫建構函式的時候,在本地其實是Student的一個代理類,並且這時候沒有和伺服器進行通訊。只有當webservice方法被呼叫的時候,才會和伺服器端通訊。
更詳細的請參考:
http://www.cnblogs.com/gisflyer/archive/2010/12/29/1919420.html

相關文章