項目中使用的是webservice,之前沒有深刻研究過,最近空餘時間瞭解了一下使用axis2來實現Web Service。java
先簡單說一下Web Serviceweb
Web Service:apache
Web Service 主要是用來不一樣系統之間的交互,其實是一種RPC技術,是一種跨編程語言和跨操做系統平臺的遠程調用技術。好比說微信支付寶等這種能夠綁定銀行卡的APP,他們自己並無銀行卡中的數據,它們都是經過調用銀行系統提供的接口來獲取銀行卡中的餘額。編程
三種方式利用axis2實現Web Service瀏覽器
這裏說明一下,axis2有war包和jar包,由於axis2自己就是一個服務。tomcat
第一種方式:利用普通的java類和axis2服務來實現:微信
1.首先去官網下載axis2的相關jar包以及war包(地址:http://ws.apache.org/axis2/ )app
2.將war包放到tomcat的webapps目錄下,而後啓動tomcat(啓動時tomcat會自動解壓war包),啓動成功以後訪問 http://localhost:8080/axis2/webapp
若是出現下面的界面則axis2服務部署啓動成功。編程語言
3.寫一個測試類,代碼以下:(注意這個類不能有package否則這種方式會出問題)
4.將編譯以後的class文件,放在tomcat的 "webapps\axis2\WEB-INF" 目錄下新建pojo文件夾(這個文件夾名稱要固定的,我嘗試改了名字可是改完就不行了),而後將TestService.class文件放到文件夾下,啓動tomcat,訪問 http://localhost:8080/axis2/services/listServices (這個是查詢service列表的),訪問以後能看到下面的界面就ok!
而後驗證TestService接口是否可用,輸入:http://localhost:8080/axis2/services/TestService/hello 和 http://localhost:8080/axis2/services/TestService/service?method=測試
出現下面的頁面就說明沒問題。
第二種方式:打包java類(補充方式1的不足)和axis2服務來實現
因爲第一種方式的service類不能帶有包名,可是在實際項目中大都是須要帶有包名的,所以axis2也提供了帶包名的實現方式。
1.先編寫一個測試類,路徑爲: E:\demo\com\code\TestPackageService.class 代碼以下:
2.要將帶有package的java類變成一個Web Service服務還須要一個server.xml配置文件,路徑爲:E:\demo\META-INF\services.xml,內容以下圖。(這個文件須要放在執行目錄下: META-INF)
這個配置文件中主要須要注意的就是 messageReceivers 標籤,該元素用於設置處理WebService方法的處理器。例如: TestPackageService類中的hello方法是沒有返回值的因此須要上圖的 RPCInOnlyMessageReceiver 類來處理,而TestPackageService類中的service方法是有返回值的所以就須要上圖的RPCMessageReceiver來處理。
3.此種方式來實現WebService,須要打包爲.aar文件.(aar文件實際上就是改變了擴展名的.jar文件)
在cmd中進入項目路徑,個人是E:demo,而後輸入: jar cvf demo.aar . 注意!最後一個點以前有個空格
而後將打包好的arr文件放到 tomcat的 "\webapps\axis2\WEB-INF\services"路徑下。
4.啓動tomcat驗證便可。(驗證方式和第一種相同,這裏不作贅述)
第三種方式:在項目中內置axis2服務,而且不用打包
此種方式是在已有的web項目中嵌入axis2服務,這樣就不用單獨的啓動axis2服務來實現Web Service了,直接啓動web項目以後就會自帶axis2服務。
實現方式:
1.先將axis2所需的東西複製到項目組(這裏還有另外一種方式: 解壓axis2.war包,將解壓出來的conf,lib,modules三個文件夾複製到項目的WEB-INF文件夾下)
1.1將下載好的axis2jar包加入到/WebRoot/WEB-INF/lib/目錄下
1.2.將axis2.war/axis2-web拷貝至WebServiceDemo/ WebRoot/axis2-web/
2.修改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>
3.寫一個簡單的demo
4.配置service.xml 內容和路徑以下圖
5.啓動項目,到瀏覽器驗證
訪問: http://localhost:8080/項目名稱或者自定義的path/services/listServices 查看服務列表
訪問: http://localhost:8080/項目名稱或者自定義的path/services/demoService?wsdl
補充說明
最後補充一下axis2的幾個配置項:
路徑是在tomcat下的 \webapps\axis2\WEB-INF\conf\axis2.xml
axis2的熱部署: <parameter name="hotdeployment">true</parameter>
axis2的熱更新: <parameter name="hotupdate">true</parameter>
若是是方式一來實現可是不想放在pojp目錄下能夠修改配置文件來自定義目錄,在axisconfig節點下添加以下配置就能夠放在test目錄下了:
<deployer extension=".class" directory="test" class="org.apache.axis2.deployment.POJODeployer"/>