axis2和已有web項目集成

建立服務端

最近項目需要開發web service,找了一下資料,打算用axis2開發,但是網上很難找到一個完整demo。
所以整理總結一下,希望多大家有幫助!
 
有一個最簡單的方法就是把axis2.war中的內容作爲Web Project的基礎, 來進行開發. 

不過爲了更清楚的瞭解如何在一個已有的Web Project中嵌入axis2,那就手動來配置。大致分如下幾個步驟:

一、新建Web Project,名爲“WebServiceDemo

二、下載axis2-1.5-war.zip包(本來想發附件也發出來,發現csdn無法掛附件,只有麻煩各位再到其他地方下載了,當然也可以問我要,加QQ470312712),

解壓縮

axis2/WEB-INF/lib裏的jar包拷貝到WebServiceDemo/WebRoot/WEB-INF/lib/

axis2.war/axis2-web拷貝至WebServiceDemo/WebRoot/axis2-web/(這一步如果不想集成axis2的控制信息,可不需要

三、配置axis2 servlet

打開WebServiceDemo/WebRoot/WEB-INF/web.xml,增加如下配置:

     
	<servlet>    
	    <servlet-name>AxisServlet</servlet-name>    
	    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>    
	    <load-on-startup>1</load-on-startup>    
	</servlet>         
	<servlet-mapping>    
          <servlet-name>AxisServlet</servlet-name>    
          <url-pattern>/services/*</url-pattern>    
	</servlet-mapping>  


四、寫一個簡單的web服務類

package com.ws;

public class MyService {

	public String getName(String id){
		System.out.println("-------------"+id+"--------");
		return "pj";
	}
}

五、配置Web Service.

由於axis2已嵌入到WebServiceDemo項目中,所以web service就不用打包成aar,而是直接在/WEB-INF目錄下創建相應的文件夾和services.xml

 

六、services.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 接口服務類 -->
<serviceGroup>
 
<service name="SampleService">
 <description>
  This service is common webService.
 </description>

<!-- 這裏需要配置提供的服務類名包括類的路徑-->
 <parameter name="ServiceClass">com.ws.MyService
 </parameter>

<!--以下標籤的配置功能是說明此服務是有輸入和輸出功能-->
 <messageReceivers>
  <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
   class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
 </messageReceivers>
</service>

</serviceGroup>

 到這裏服務端已經配置完成!很簡單吧!然後啓動tomcat,訪問地址粗線wsdl文件,說明配置成功!

 

在瀏覽器中訪問http://localhost:8080/ws/services/SampleService?wsdl可以查看到該Web服務的描述文件說明發布成功!

 

建立客戶端

我查看了網上總結的,有多種方式生成客戶端,我採用的是axis2對myeclipse的插件生成,個人覺得比較簡單!無需配置環境變量!

 

一、先下載axis2-eclipse-codegen-wizard.jar和axis2-eclipse-service-archiver-wizard.jar

然後把上述兩個文件解壓出來,然後再複製backport-util-concurrent-3.1.jar(需要在單獨網上下載,axis2沒自帶)和geronimo-stax-api_1.0_spec-1.0.1.jar

到axis2-eclipse-codegen-wizard(解壓出來的文件)裏面的lib裏面!

然後修改axis2-eclipse-codegen-wizard裏面的plugin.xml文件,在節點runtime下添加如下內容


<library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">
         <export name="*"/>
  </library>
  <library name="lib/backport-util-concurrent-3.1.jar">
   <export name="*"/>
  </library>

 

二、把剛纔axis2-eclipse-codegen-wizard和axis2-eclipse-service-archiver-wizard複製到myeclipse(我用的是myeclipse8.6)根目錄下的dropins文件夾下

  (特別要注意,最後修改後在複製到myeclipse的dropins文件夾下,要是已經是複製進去才修改,請剪切出來,然後啓動myeclipse關掉,在複製進去

 

三、 打開myeclipse,新建一個項目,在窗體中看到如下:

看到axis2下的連個選項,說明安裝插件成功!

 

四、生成客戶端,新建醒目,選擇以上兩個選項中的axis2 code generator,然後下一步出現

選第一個,代表的意思是用wsdl文件生成客戶端!點擊下一步出現

 

五、 輸入wsdl文件路徑,該文件路徑可以是本地的文件,也可以是網絡上的地址(如果是網絡行的,必須要聯網哦)點擊下一步

 

六、如果上一步的wsdl沒錯,那麼這一步默認就行了

 

七、選要輸出到的項目,你可以先建好一個web project項目,然後選擇該項目,(注意,選擇到項目名稱即可)然後點擊完成。(記得要打上add the axis2 codeger...這個複選框

 

八、生成的項目是不是好多小紅叉啊,沒關係,先把axis2的包添加到claspath下,添加jar都懂吧,這裏就不囉嗦!

添加完後是不是還有小紅叉啊,不要緊張,這個是這個插件的一個小bug,解決方案如下:

點擊小紅叉的地方,出現add unimplemented methods 實現方法就可以,是不是發現還有紅叉啊,別那麼緊張嘛,下載axis2-adb-1.4.1.jar添加到classpath即可

 

編寫客戶端如下

  SayHelloStub sayHelloStub=new SayHelloStub();
  
  
  SayHelloStub.SayHelloMethod  sayHelloMethod=new SayHelloStub.SayHelloMethod();
  

//傳遞的參數
  sayHelloMethod.setName("pjn");
  //調用sayHelloMethod方法
  System.out.println(sayHelloStub.sayHelloMethod(sayHelloMethod).get_return());
  
  SayHelloStub.AddStudnet addStudnet=new SayHelloStub.AddStudnet();
  
  Student student=new Student();
  student.setName("pangjian");
  addStudnet.setStudent(student);
  
  System.out.println(sayHelloStub.addStudnet(addStudnet).get_return());

 完成!如有問題可以聯繫我!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章