Axis2.x WebService開發

                                       Axis2.x WebService開發

    最近因爲公司項目的需要,需要做接口讓其它公司開發的系統來調用我們的接口獲取數據,所以要開發接口,但是以前有人開發過接口通過Axis2.x 開發過接口,所以我必須也要用這種方式來開發接口,這樣才能把接口發佈在一起。

    webservice開發有很多種方式,我這只是其中的一種開發方式,我環境搭建起來就花了好久的時間,在這裏我會寫出來,希望你們在我之後不會遇到這麼多問題。

   

一、   準備工作

1、開發準備

首先需要下載axis2的相關jar包,到axis的官方網站即可獲得開發的依賴包。

下載地址:http://axis.apache.org/axis2/java/core/download.cgi

現在最高的版本是1.5.4的

然後你需要下載官方提供的axis的eclipse插件工具,可以幫助我們打包(aar)及其生產客戶端調用代碼。

下載頁面:http://axis.apache.org/axis2/java/core/tools/index.html

Service Archive Wizard - Eclipse Plug-in

Code Generator Wizard - Eclipse Plug-in

2、安裝eclipse插件

      我是用meclipse 8.5和eclipse插件org.apache.axis2.eclipse.service.plugin_1.6.2.jar,org.apache.axis2.eclipse.codegen.plugin_1.6.2.jar

    這兩個jar包直接放在myeclipse的安裝目錄MyEclipse8.5\dropins裏面,並且要加上javax.xml.bind_2.1.9.v201005080401.jar,

    javax.xml.stream_1.0.1.v201004272200.jar,javax.xml_1.3.4.v201005080400.jar這幾個文件可以自己去MyEclipse8.5\Common\plugins報裏面去找

    把這五個jar包一起放在myeclipse安裝目錄MyEclipse8.5\dropins裏面,插件就可以使用了。

    以前用1.5.2,1.3版本的插件要麼顯示不出來,要麼到以後操作的時候就報錯。

    

如果你的eclipse插件安裝成功後,會看到如下效果:

3、分析axis2-bin文件目錄結構

下載下來的axis2的依賴庫,其中有一個axis2-1.5.3-bin.zip的庫文件,目錄結構如下:

bin文件夾是axis2的常用工具,其中有將wsdl文件轉換成客戶端調用的wsdl2java工具及將java轉換成wsdl文件的工具

(這個文件很重要的,在以後插件生成客戶端代碼出錯的情況下,可以用這裏面得命令去生成,不會報錯)

conf是axis2的配置文件

lib運行所要的依賴庫

repository是發佈過的axis服務和文件

sample是示例

webapp是web文件和jsp頁面等

4、我們需要將下載下來的axis2-1.5.3-war.zip中的axis2.war這個文件放在我們的tomcat目錄下,啓動tomcat就會把war文件轉成一個可以跑起來的axis2的項目。

Tomcat啓動後,在瀏覽器中輸入:http://localhost:8080/axis2/你可以看到

下面用axis2的工具生成aar文件,然後完成發佈WebService。

1、 點擊工作空間WorkSpace,右鍵New選擇Other

2、 然後點擊Browser選擇你當前的工程的classes目錄

點擊Next

3、 沒有WSDL,選擇第一項,點擊Next,然後再Next一次

 

4. 不用設置service.xml,直接Next

 

5.最關鍵一步,填寫WebService的Name,設置class路徑點擊Load你就可以看到當前class的方法

 

6、 設置aar文件的名稱和保持的目錄

點擊Finish你可以看到提示successfully的提示。

7、刷新當前工程可以看到ManangerUserService.aar文件了

8.下面我們在瀏覽器中訪問這個地址:http://localhost:8080/axis2/

點擊Admin這個鏈接,可以看到要輸入用戶名和密碼,用戶名和密碼在

Tomcat_Home\webapps\axis2\WEB-INF\conf下的axis2.xml中可以找到

<parameter name="userName">admin</parameter>

<parameter name="password">axis2</parameter>

9、 輸入密碼進入管理頁面後可以看到

下面介紹下上面常用的功能

Upload Service當然是上傳aar的文件,完成發佈WebService的工具了

Available Service是查看當前發佈的Service詳細信息

Available Service Groups是Service組

Global Chains是可以用的全局的Chain

Operation Specific Chains是某個具體操作的chain

Deactivate Service 是取消某個Service

Activate Service 是將取消發佈的Service再發布出去

Edit Parameters是修改WebService類的參數

 

10、 我們這裏用Upload Service這個工具,然後選擇我們剛纔用axis2的工具生成aar文件。

其實這一步我們可以直接將ManagerUserService.aar文件copy到

tomcat-home\webapps\axis2\WEB-INF\services這個目錄下。

11、 然後點擊Available Service就可以看到ManagerUserService這個Service了

 

現在我們要用axis2的工具生成wsdl文件

        1、點擊WorkSpace,右鍵New選擇Other。然後選擇客戶端代碼生成工具

    2、點擊Next,你可以看到讓你選擇wsdl。選擇第一個,然後點擊Next

上面是根據Java class代碼生成wsdl文件

    3、填寫你的WebService的classpath,然後選擇你當前class所在工程的class目錄

然後點擊Add Folder選擇你的工程的classes 或 bin目錄,也就是你填寫的class所在的目錄,然後點擊Test 測試是否正確。

點擊Next繼續下一步

4、可以看到即將發佈的WebService名稱和命名空間

5、繼續Next,選擇wsdl文件保存目錄

這樣services.wsdl文件就生成了

控制檯wsdl生成客戶端代碼

   用axis2的插件生成的客戶端代碼總是報錯,可能是版本跟axis2不一致,所以我直接用wsdl2java.bat生成客戶端調用

   代碼


  控制檯用wsdl轉JAVA方法:
 Axis2提供了一個wsdl2java.bat命令可以根據WSDL文件自動產生調用WebService的代碼。
  wsdl2java.bat命令可以在<Axis2安裝目錄>"bin目錄中找到
在Windows控制檯輸出如下的命令行來生成調用WebService的代碼:
你的axis2的目錄\bin\wsdl2java -uri
http://localhost:8080/axis2/services/SimpleService?wsdl -p client

 

黑窗口控制檯:
C:\Users\admin>D/
D:\>cd D:\axis2-1.6.1\bin
D:\axis2-1.6.1\bin>wsdl2java -uri (寫上要訪問的webservices地址)/回車

-s -o stub
    在執行完上面的命令後,讀者就會發現在當前目錄下多了個stub目錄,在."stub"src"client目錄可以找到一個SimpleServiceStub.java文件。
參數說明:
-url 指定了wsdl文件的路徑,可以是本地路徑,也可以是網絡路徑。
-p   指定了生成的Java類的包名,
-o   指定了生成的一系列文件保存的根目錄。
-ss  生成服務器端代碼(如skeletons)
-sd  生成服務器描述文件(services.xml),要在 有-ss參數的時候纔有效
-scn 用已有的代碼代替skeletons

 

調用代碼

public class RealFrDataService {

 public static void main(String[] args) {
    String target = "
http://localhost:8080/axis2/services/RealFrDataService";
   
   try{
    RealFrDataServiceStub stub = new RealFrDataServiceStub(target);
      RealFrDataServiceStub.GetStatisticsDataByWgCode object = new RealFrDataServiceStub.GetStatisticsDataByWgCode();
    object.setCode("110108012023");
    RealFrDataServiceStub.GetStatisticsDataByWgCodeResponse response = stub.getStatisticsDataByWgCode(object);
    System.out.println(response.get_return());
     }
   catch(Exception ex){
    ex.printStackTrace();
   }

  }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發佈了23 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章