Axis2與CXF是現在很主流的WebService開發框架(java6也已經支持了),項目上還都是基本上用前兩種做開發,今天記錄一下我安裝Axis2插件在eclipse中的安裝和寫一個簡單的測試代碼。
一、
eclipse的版本為Luna Release (4.4.0)
Axis2的版本是1.6.2
下載地址為:
1)、Axis2 Binary Distribution(1.6.2):http://mirror.bjtu.edu.cn/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip (可執行版)
WAR Distribution:http://mirror.bjtu.edu.cn/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-war.zip (這個是放在tomcat下可發布的war包版)
2)、eclipse的插件
Service Archive Wizard - Eclipse Plug-in(用來將服務代碼打包成后綴名為.aar文件的插件):
Code Generator Wizard - Eclipse Plug-in(用來將服務代碼生成wsdl文件以及解析將wsdl文件生成客戶端代碼的插件):
二、
先關閉eclipse,進入eclipse的文件中將上面下載的eclipse插件解壓到dropins文件目錄下(解壓的時候會生成plugins文件夾,我是把里面生成的jar直接拷出來放在dropins文件夾里面),以我的為例:F:\eclipse\dropins。然后重啟eclipse,點擊File-New-Other有如下圖顯示,則表示安裝插件成功!

插件到此安裝完成!
三、生成aar文件:
寫一個簡單的服務器代碼:
- package com.hwt.glmf.webservice;
- /**
- * 測試的webservice
- */
- public class MyService {
- public String sayHello (String name){
- return name+"說了:hello!";
- }
- }
然后File-New-Other--Axis2 Wizards-Axis2 Service Archiver(通過插件生產可發布的aar文件)






到此步驟就能生成好名為:MyService.aar的文件了,在桌面上用壓縮軟件打開這個aar文件可以看到,結構與平常的war的結構很是相似。

再將service.xml解壓出來,可以看到如下代碼:
- <service name="MyService" >
- <description>
- Please Type your service description here
- </description>
- <messageReceivers>
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
- </messageReceivers>
- <parameter name="ServiceClass">com.hwt.glmf.webservice.MyService</parameter>
- </service>
這個就是配置文件,可以看到這個配置的信息:
- service name="MyService"
代表的是webservice發布的服務名
- <parameter name="ServiceClass">com.hwt.glmf.webservice.MyService</parameter>
是服務的鏈接的具體方法名。如果有多個webservice要發布,且是同一個項目之內的話,可以通過修改此配置文件與上面的class文件夾來達到發布一個aar包多個webservice服務,有如下配置:
- <serviceGroup>
- <service name="ManifestService" >
- <description>
- ManifestService
- </description>
- <messageReceivers>
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
- </messageReceivers>
- <parameter name="ServiceClass">com.hwt.glmf.webservice.ManifestService</parameter>
- </service>
- <service name="ManifestServiceQG" >
- <description>
- QYTG ManifestService
- </description>
- <messageReceivers>
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
- </messageReceivers>
- <parameter name="ServiceClass">com.hwt.glmf.qytgservices.ManifestServiceQG</parameter>
- </service>
- <service name="CipService" >
- <description>
- CipService
- </description>
- <messageReceivers>
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
- </messageReceivers>
- <parameter name="ServiceClass">com.hwt.glmf.externalinterface.cip.CipService</parameter>
- </service>
- </serviceGroup>
配置web.xml中Axis2的AxisServlet
- <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>
我們這邊就是發布上面寫的一個簡單的webservice接口,現在要說的是發布這個webservice接口(有放在下載的Axis2的war包中一起發布的版本,此篇文章不做介紹,就是介紹在web項目中發布webservice接口),可以將此文件放在新建的web項目的WebRoot-->WEB-INF-->services目錄下,在將再下載的Axis2 Binary Distribution(1.6.2)解壓,生成的文件夾下面的lib目錄中將所有的jar包拷入到lib中。啟動項目的時候就會將次webservice發布出去。在瀏覽器中輸入如下地址(下面的是本機地址,如果是訪問別的機子,將localhost:8080修改成對應的IP以及端口號即可):
- http://localhost:8080/QYTG/services/MyService?wsdl
有如下顯示的則是成功了:

到了此步驟就是Axis2的webservice接口發布成功了!因為Axis2有很多種生成客戶端代碼的方法,所以再開一篇介紹Axis2的客戶端代碼的生成。
