Web Service---server/client

                                server端主要是提供services,讓遠端的client可以針對不同的services得到不同的結果。

                                故server端的程式會將main的內容刪除,client端就只能直接丟input來取得output。


Server端:

1. 當建立完MagicThermo.jws輸入http://localhost:8080/axisdemo/MagicThermo.jws

    會出現如下圖的畫面,畫面呈現為"There is a Web Service here",表示建立成功

    表示已將server端建立完成。

 

   

2.  輸入http://localhost:8080/axisdemo/MagicThermo.jws?wsdl

     ==> 便可以看到WSDL的內容

    

3. 實作範例:(兩個)

    Sample 1

    建立一個MagicThermo.jws---內容為將華氏溫度轉成攝氏溫度

    程式碼如下:

  public class MagicThermo {

    public int temperatureTrans(int c, int f) {

        f = (c*9/5) + 32;

        return f;

    }

  }

 

  Sample 2

    建立一個test.jws---內容為求兩數的最大公因數

    程式碼如下:

  public class test {

    public int gcd(int i , int j){

        int b,s;

        if (i>j){

            b = i;

            s = j;

        }

        else{

            b = j;

            s = i;

        }

        int r = b%s;

        while(r!=0){       

            b = s;

            s = r;

            r = b%s;

        }

        return s;

    }

  }

 

回首頁

Client端:

1. Dynamic Interface Invocation(DII)Client端實作 client端。

    程式碼內容如下:

     綠色部分為華氏溫度轉攝氏溫度---輸入華氏溫度為100,求攝氏溫度

     咖啡色部分為求兩數的最大公因數---輸入48, 6,求最大公因數

package test;

import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Service;

import org.apache.axis.client.Call;

import javax.xml.namespace.QName;

public class MagicThermoDIIClient {

 

    public static void main(String[] args) {

        try {

            Service service = new Service();

            Call call = (Call)service.createCall();

 

            call.setTargetEndpointAddress("

            http://localhost:8080/axisdemo/MagicThermo.jws");

            call.setOperationName(new QName(

            "MagicTherms","temperatureTrans"));

            Object[] params = {

            new Integer(100), new Integer(100)};

            Object obj = call.invoke(params);

            System.out.println("華氏溫度為:"+obj+"F");

           

            call.setTargetEndpointAddress("

            http://localhost:8080/axisdemo/test.jws");

            call.setOperationName(new QName("test", "gcd"));

            Object[] params1 = {

            new Integer(48), new Integer(6)};

            Object obj1 = call.invoke(params1);

            System.out.println("gcd為:"+obj1);

 

        } catch (java.rmi.RemoteException e1) {

            // TODO Auto-generated catch block

            System.out.println("(e1.printStackTrace()");

        }

        catch (ServiceException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

 

2. 用eclipse執行後,結果如下