posts - 193,  comments - 520,  trackbacks - 0

          一、軟件環(huán)境

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

           2
          Tomcat5.0 

           3
          JDK5.0

          二、相關(guān)配置

           1
          、在你的%TOMCAT_HOME%\common\lib下需要加入三個(gè)包 activation.jarmail.jartools.jar

           2
          、環(huán)境變量設(shè)置

               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文件都導(dǎo)入

          三、實(shí)驗(yàn)一下

             
          %AXIS_HOME%\webapps下找到axis文件夾,將其整個(gè)拷貝到%TOMCAT_HOME%\webapps下,啟動(dòng)

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


          四、發(fā)布我們的第一個(gè)程序

             
          第一個(gè)程序簡單的返回HELLO WORLD

           HelloWorld.java

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


          我們的第一種發(fā)布方式:

          HelloWorld.java拷貝到%TOMCAT_HOME%\webapps\axis下,然后將其改名為HelloWorld.jws,這樣AXIS就自然將其發(fā)布了。現(xiàn)在寫個(gè)客戶端程序訪問一下:
          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";//指明服務(wù)所在位置

                 Service  service 
          = new Service();  //創(chuàng)建一個(gè)Service實(shí)例,注意是必須的!
                 Call     call    = (Call) service.createCall();//創(chuàng)建Call實(shí)例,也是必須的!

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

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

                   String res 
          = (String) call.invoke( new Object[] {} );//返回String,沒有傳入?yún)?shù)

                  System.out.println( res );
             }
          }


          我的測試是在jbuilder2005中,注意項(xiàng)目中要導(dǎo)入其自帶的AXIS包(當(dāng)然應(yīng)該把其中JAR文件替換一下),可以看到程序返回了 "HELLO WORLD!"

          可以看到在AXIS里發(fā)布服務(wù)其實(shí)是一件很容易的事,這是因?yàn)檫@個(gè)服務(wù)很簡單的原因:)下面我們介紹第二種發(fā)布方式,這是常用的。

          我們的第二種發(fā)布方式:

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

          2
          、在%TOMCAT_HOME%\webapps\axis\WEB-INF下新建deploy.wsdd文件,即SOAP服務(wù)發(fā)布描述文件

               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下轉(zhuǎn)換目錄到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:

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

          你會(huì)發(fā)現(xiàn)目錄下多了一個(gè)server-config.wsdd文件,這就是AXIS的配置文件,以后所有的服務(wù)發(fā)布描述都會(huì)在里面找到。(當(dāng)然,你可以直接修改它,不用再寫deploy.wsdd)然后打開瀏覽器http://localhost:8080/axis/servlet/AxisServlet,你就會(huì)看到你的服務(wù)已發(fā)布

          同樣用客戶端程序訪問一下:(注意和上邊的差別!!)
          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 );
             }
          }



          http://www.aygfsteel.com/ronghao 榮浩原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處:)
          posted on 2007-06-12 15:48 ronghao 閱讀(2675) 評(píng)論(1)  編輯  收藏 所屬分類: SOA、BPM

          FeedBack:
          # re: 了解AXIS
          2007-12-19 18:20 | 郭耀
          非常好的文章,我保存下來了!  回復(fù)  更多評(píng)論
            
          <2007年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 农安县| 远安县| 扶绥县| 中宁县| 梨树县| 河南省| 陵川县| 余江县| 旺苍县| 忻州市| 金堂县| 永泰县| 遵义市| 沈阳市| 泗水县| 新田县| 贡嘎县| 日喀则市| 长顺县| 腾冲县| 通江县| 寻乌县| 柏乡县| 凉山| 巩留县| 大足县| 章丘市| 庆城县| 河源市| 泗洪县| 哈巴河县| 余江县| 芷江| 内乡县| 句容市| 天水市| 驻马店市| 阿荣旗| 兴化市| 肥东县| 安阳市|