[轉載]AXIS學習筆記

來源:互聯網
上載者:User

轉自:http://blog.csdn.net/ronghao100/archive/2005/06/08/390530.aspx

系列:http://www.blogjava.net/RongHao/archive/2007/06/12/123644.html

前天頭告訴我用SOAP WEB服務開發一個客戶程式,用來與企業內部的ERP進行互動。晚上趕快找相關的資料猛看,總算對SOAP有了一定的認識。幹程式員這行真不容易,好象得不停地學習新東西,一不小心就被淘汰:(不過學習也是個很有意思的事情。好了,廢話少說,讓我們開始吧。

一、軟體環境

 1、axis-1_2  (從apache網站下載最新axis-bin-1_2.zip解壓即可)

 2、Tomcat5.0

 3、JDK5.0

二、相關配置

 1、在你的%TOMCAT_HOME%\common\lib下需要加入三個包 activation.jar、mail.jar、tools.jar

 2、環境變數設定

     AXIS_HOME 即axis-bin-1_2.zip解壓的目錄(我的是在F:\soap\axis-1_2)

     AXIS_LIB    即 %AXIS_HOME%\lib

    AXISCLASSPATH 即 %AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;也就是把%AXIS_LIB%下所用JAR檔案都匯入

三、實驗一下

   在%AXIS_HOME%\webapps下找到axis檔案夾,將其整個拷貝到%TOMCAT_HOME%\webapps下,啟動

  Tomcat,開啟瀏覽器訪問http://localhost:8080/axis/,出現以下頁面說明你配置成功了。很簡單吧:)

 

四、發布我們的第一個程式

   第一個程式簡單的返回HELLO WORLD!

  HelloWorld.java

public class HelloWorld {
  public String sayHello()
  {
    return "HELLO WORLD!";
  } 
}

我們的第一種發布方式:

將HelloWorld.java拷貝到%TOMCAT_HOME%\webapps\axis下,然後將其改名為HelloWorld.jws,這樣AXIS就自然將其發布了。現在寫個用戶端程式訪問一下:

TestClient.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

import javax.xml.rpc.ParameterMode;

public class TestClient
{
   public static void main(String [] args) throws Exception {
       
       String endpoint = "http://localhost/:" +"8080"+ "/axis/HelloWorld.jws";//指明服務所在位置

       Service  service = new Service();  //建立一個Service執行個體,注意是必須的!
       Call     call    = (Call) service.createCall();//建立Call執行個體,也是必須的!

     call.setTargetEndpointAddress( new java.net.URL(endpoint) );//為Call設定服務的位置

        call.setOperationName( "sayHello" );//注意方法名與HelloWorld.java中一樣!!

         String res = (String) call.invoke( new Object[] {} );//返回String,沒有傳入參數

                         System.out.println( res );
   }
}

我的測試是在jbuilder2005中,注意項目中要匯入其內建的AXIS包(當然應該把其中JAR檔案替換一下),可以看到程式返回了 "HELLO WORLD!"

可以看到在AXIS裡發布服務其實是一件很容易的事,這是因為這個服務很簡單的原因:)下面我們介紹第二種發布方式,這是常用的。

我們的第二種發布方式:

1、將HelloWorld.java編譯成HelloWorld.class,放到%TOMCAT_HOME%\webapps\axis\WEB-INF\classes

      下

2、在%TOMCAT_HOME%\webapps\axis\WEB-INF下建立deploy.wsdd檔案,即SOAP服務發布描述檔案

     deploy.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="HelloWorld" provider="java:RPC">
        <parameter name="className" value="HelloWorld"/>
        <parameter name="allowedMethods" value="sayHello"/>
    </service>
</deployment>

在DOS下轉換目錄到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd

你會發現目錄下多了一個server-config.wsdd檔案,這就是AXIS的設定檔,以後所有的服務發布描述都會在裡面找到。(當然,你可以直接修改它,不用再寫deploy.wsdd)然後開啟瀏覽器http://localhost:8080/axis/servlet/AxisServlet,你就會看到你的服務發行

同樣用用戶端程式訪問一下:(注意和上邊的差別!!)

HelloClient.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class HelloClient
{
   public static void main(String [] args) throws Exception {

       String endpoint = "http://localhost/:" +"8080"+ "/axis/services/HelloWorld";//注意!差別僅僅在這裡!!

       Service  service = new Service();
       Call     call    = (Call) service.createCall();
       call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName("sayHello"  );

         String res = (String) call.invoke( new Object[] {} );

                         System.out.println( res );
   }
}

好了,相信你對AXIS已有了大致的瞭解。接下來將會涉及到傳參數、JAVABEAN對象,及AXIS的安全問題,下次再說吧:)也歡迎和我,一個快樂的JAVA程式員,聯絡:)ronghao100@hotmail.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.