ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          一、環境安裝(tomcat,本人5.5): 
          首先下載到官方網站下載axis2 war包。 
          將war包復制到webapps目錄下邊,啟動tomcat,服務器加載了war包后會生成axis2目錄,跟我們平時的應用目錄沒神馬區別,唯一要注意的是axis的配置文件在WEB-INFconf, 
          在開發過程中要修改一下這個的配置文件。 

          二、(改造配置文件): 
          配置axis2的文件,axis2支持熱部署,意味著你可以再編譯好的class文件,直接復制到pojo目錄下(默認是pojo,等會有說明修改)。 
          在配置文件中找到<parameter name="hotdeployment">true</parameter>默認已經為熱部署; 
          另外一個在開發過程中你常需要把熱更新打開,默認是false 不打開,找到hotupdate 
          <parameter name="hotupdate">true</parameter> 
          發布pojo的目錄只是默認的,如果需要使用其他的目錄,需要添加配置元素,在axisconfig下面添加 
          <deployer extension=".class" directory="mymulu" class="org.apache.axis2.deployment.POJODeployer"/> 
          上面的配置文件只需要修改 directory的屬性,改為目錄名 

          二、(使用POJO方式發布webservice): 
          在pojo目錄(此目錄沒有,在axis2WEB-INF下面創建,其實細心的同學會發現,在配置文件axis就已經給我們定義了pojo目錄,看前面添加發布pojo目錄)下面的webservice可以通過重寫url去訪問(后面帶一些參數,類似action),如果遇到數據類型則需要做轉換,原因傳輸過程是以字符串形式傳輸,而且重寫URL的參數名必須要與方法的參數名相同。感覺比較土的方法 

          好吧說了那么多,現在讓我們來個helloworld吧~!! 
          首先我們先發布一個webservice, 
          編寫一個MyTest類

          public class MyTest { 	 	public String getString(String str){ 		System.out.println("調用了getString()傳入參數"+str); 		return str; 	} 	public void doNoThing(String str){ 		System.out.println("調用了doNothing()傳入參數:"+str); 	}  } 


          1.啟動你的tomcat,訪問這個url:http://127.0.0.1:8080/axis2/ (確保axis2是正常運行了), 
          2.神馬,沒改配置文件,好吧,就在%tomcat_home%webappsaxis2WEB-INF下面建立一個pojo文件夾。編寫好的類編譯成class文件后,直接復制到你所指定的目錄下。 
          3.最后訪問你的服務吧http://127.0.0.1:8080/axis2/services/MyTest?wsdl 


          現在開始客戶端開發,這里省略了使用axis的API開發客戶端,個人覺得這樣的開發效率好低吖,新手上手(本人懶的去看那個API),應該快速掌握怎么使用,所以這里介紹stub方式,使用了axis自帶的命令,可以根據wsdl生成客戶端,在%AXIS2_HOME%in目錄下有一個wsdl2java腳本(注意是wsdl to java)。 
          前提準備 
          下載了axis2 bin 文件,配置環境變量 例如: 
          變量名:AXIS2_HOME  
          值:E:studywebserviceaxis2-1.5.4-binaxis2-1.5.4 

          這里要用到前面的發布的webservice,保持你的服務器是啟動的,你的服務正常。 
          打開CMD 
          輸入下面的命令 
          %AXIS2_HOME%/bin/wsdl2java -uri http://localhost:8080/axis2/services/MyTest?wsdl -p com.lj.mywebservice  -s -o c:/mywebservice 

          這里說一下參數, -uri 當然是服務的wsdl文件地址,-p 報名 , -o 表示目錄,這里寫的是絕對路徑,也可以寫相對路徑 

          回車,你會發現在C盤下多了一個文件目錄,打開里邊一層層進去后,有一個MyTestStub類,這個類實現非常復雜,不用管他,拿過來直接用。 
          新建一個工程,寫個測試類,把剛才生成的類復制進去,當然別忘記了引入axis的jar包。

          package com.lj.myswebservice;  import java.rmi.RemoteException;  import org.apache.axis2.AxisFault;  public class TestClass { 	public static void main(String[] args) { 		 		try { 			MyTestStub my=new MyTestStub(); 			//在MYTestStub里邊定義了三個靜態嵌套類,分別作為參數對象,返回值對象。 			//這里定義了donothing方法的參數對象 			MyTestStub.DoNoThing donothing=new MyTestStub.DoNoThing(); 			//這里定義了getstring方法的參數對象 			MyTestStub.GetString getstring=new MyTestStub.GetString(); 			////這里定義了getString方法的返回值對象 			MyTestStub.GetStringResponse getstringresponse=new MyTestStub.GetStringResponse(); 			//設置參數值 			donothing.setArgs0("神馬也不做啊"); 			//設置參數值 			getstring.setArgs0("我是帥鍋"); 			//調用donothing方法 			my.doNoThing(donothing); 			//調用getString發放,設置參數,并返回值 			getstringresponse=my.getString(getstring); 			//打印返回值 			System.out.println(getstringresponse.get_return()); 		} catch (AxisFault e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		} catch (RemoteException e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		} 		 	} }  


          運行結果如下。 
          <!--StartFragment -->

           
          服務器結果如下。 
          <!--StartFragment -->



          總結,使用axis2構建服務是非常快的,這個例子使用的是deploy pojo的方式發布服務,所謂pojo就是個普通的JAVA類,與javabean區別就是不一定有get set方法(是不是這樣理解?)。在客戶端調用服務的時候,采取stub方式(貌似現在很流行,這樣編寫客戶端是灰常直觀的),只要拿到wsdl文件,就可以使用 wsdl2java命令生成客戶端,大大減少了開發量。

          還差得遠( ⊙ o ⊙ )啊!··明晚再看看別的方式發布鳥··

          晚了睡覺了··明天早起上班( ⊙ o ⊙ )啊!···

          posted on 2011-08-24 11:08 ivaneeo 閱讀(684) 評論(0)  編輯  收藏 所屬分類: java魔力
          主站蜘蛛池模板: 同德县| 色达县| 民和| 金阳县| 天台县| 元谋县| 宁城县| 瑞丽市| 珲春市| 永丰县| 乐安县| 越西县| 丘北县| 华坪县| 织金县| 恩施市| 荔浦县| 罗源县| 洪湖市| 辉南县| 班玛县| 巫溪县| 东乌珠穆沁旗| 深州市| 临高县| 祁门县| 墨脱县| 新建县| 巴青县| 喀喇沁旗| 渭南市| 垣曲县| 固始县| 定边县| 黎城县| 榆社县| 绍兴市| 崇仁县| 政和县| 金湖县| 台安县|