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執行後,結果如下:
|