Web Service架設


架設方法一:

使用軟體:

  • NetBeans IDE 4.1
  • Sun Java System (SJS) Application Server Platform Edition 8 2005Q1
  • Java Standard Development Kit (JDKTM) version 1.4.2 or 5.0

步驟:

  1. 先Create一個Web Service的Project
  2. 接著產生一個SOAP Message Handler
  3. Deploy Web Service-->Client consume
  4. Register並test Web Service
  5. Create Web Service Client

架設方法二:

使用軟體:

  • Java 2 SDK 1.5.0_05
  • Eclipse 3.1.1
  • Tomcat 5.0 for Java WSDP 1.4
  • JWSDP 1.6

利用Java語言建立Web Services

  • 處理httpRequestResponseJava ServletJavaServer Pages
  • 處理XML:利用JAXP 1.3(可以支援XML Schema)
  • 處理SOAP Messaging:以SAJJ為主,JAXM 1.1.2為輔
  • UDDIebXML Registry溝通:用JXAR 1.0
  • 處理RPCJAX-RPC 1.1

    軟體環境建置步驟為

  1. 安裝Tomcat 5.0 for Java WSDP 1.4

  2. 安裝Java Web Services Developer Pack 1.4(JWSDP1.4)

          JWSDP1.4是將Java Web Services的相關工具的集合,

          (包括JAXB1.0.3 JAXP1.2.6JAXR1.0.6JAX-RPC1.1.2SAAJ1.2.1)

 

    支援的Web Container有三項:

  •     Sun Java System Application Server 8.0.0_01

  •     Sun Java System Web Server 6.1 SP2

  •     Tomcat 5.0 for Java WSDP 1.4(方法二以此為實作)

步驟:

  1. 安裝Java 2 SDK 1.5.0_05

          設定環境變數

          JAVA_HOME --> D:\Program Files\Java\jdk1.5.0_05

          Path -->加上 D:\Program Files\Java\jdk1.5.0_05\bin

  1. 安裝Eclipse 3.1.1 (可以測試看看是否可以建立java程式)

  2. 安裝Tomcat 5.0 for Java WSDP 1.4

    Tomcat無法和Eclipse整合,故直接執行bin目錄下的startup.bat

    Tomcat會在命令提示字元下開始執行,當最後一行顯示如

    "Server startup in xxxx ms",表啟動完畢

    輸入 http://localhost:8080 ==> 執行Tomcat後之HTTP服務畫面首頁

     

  3. 安裝JWSDP 1.6

    安裝完後,Tomcat可以從開始裡去啟動,比起只安裝Tomcat 5.0 for Java WSDP 1.4 來說是方便多了。而SYSDEO這一家公司開發了一個plug-in的套件"tomcatPluginV3.zip",將這個檔解壓縮後放到eclipse\plugins目錄下。

    再到eclipse(Window-->Customize Perspective),加以設定就可以在eclipse裡看到Tomcat啟動、關閉的快速鍵

    此時在輸入 http://localhost:8080 ==> JWSDP1.6HTTP服務畫面首頁

     

  4. 安裝Axis1_1RC2及XML Security 1.1(但需到eclipse裡面設定user library)

  5. Create Project--axisdemo進行測試 (JAX-RPC運作)的驗證)

          輸入http://localhost:8080/axisdemo/ ==> Apache-AXIS服務首頁

  1. 建立第一個Web Services ==> 利用JWS方法

    產生一個MagicThermo.java(用來計算華氏轉攝氏的程式),程式碼如下:

    public class MagicThermo

    {

               public static void main(String[] args) {

                          MagicThermometer o = new MagicThermometer();

                          System.out.println("華氏溫度為"+o.mean(30,15));

               }

     

               public int mean(int c, int f) {

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

                          return f;

               }

    }

      確定執行結果為"華氏溫度為86"。此時我們就可以進行java程式轉換成Web

      Services WSDL服務。

   

  1. 將程式碼中下列程式刪除。

     

             public static void main(String[] args) {

                          MagicThermometer o = new MagicThermometer();

                          System.out.println("華氏溫度為"+o.mean(30,15));

               }

     

    MagicThermometer.java程式移axisdemo目錄下

    再對其重新命名MagicThermometer.jws

    輸入http://localhost:8080/axisdemo/MagicThermo.jws ==> 畫面呈現為"There is a Web Service here",表示建立成功

    輸入http://localhost:8080/axisdemo/MagicThermo.jws?wsdl ==> 便可以看到WSDL的內容

     

  2. 最後進行Web Services Client端的設置(沒有一定的標準,只要是符合SOAP格式的文件,可以解析出WSDL的內容的皆可)

    Dynamic Interface Invocation(DII)Client端實作

    建立一個MagicThermoDIIClient.java檔,程式碼內容如下:

    package test;

    import javax.xml.namespace.QName;

    import org.apache.axis.client.Call;

    import org.apache.axis.client.Service;

     

    public class MagicThermoDIIClient {

        public static void main(String[] args) {

           try {

                try {

                        Service service = new Service();

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

                        call.setTargetEndpointAddress("

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

                        call.setOperationName(new QName("

                        MagicThermo", "temperatureTrans"));

                        Object[] params = {new Integer(100), new Integer(100)};

                        Object obj = call.invoke(params);

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

                 } catch (java.rmi.RemoteException e1) {

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

                     }

           } catch (javax.xml.rpc.ServiceException e) {

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

              }

         }

    }

        此種Client端的建立方法,因為無需要分解WSDL文件,所有的結果都是動態

        接收Web Services後所反應出來的結果,因為被稱為Dynamic Interface Invocation

        (DII)Web Services Client端。

 

       總結:

      

      優點包括撰寫與部署容易,方便測試interoperability(不同系統間的透通性)

 

      缺點為Server端必須要在程式執行時才會進行編譯,Server端需要有Java原始

      碼,不支援自訂的Java類別,也不支援有身份認證的Web services

回首頁