Axis通過wsdd部署Web Service

axis網上的教程很多,不過搜來搜去,總是只有那么幾篇。仔細看了一下那幾篇文章,都感覺到不是自己想要的,所以自己整理了一篇分享一下。

?

本文介紹axis應用的一個小例子,沒有麻煩的命令行操作,只需照下面的步驟做就可以了。以下是詳細的操作步驟。(注:本實例用的是axis,非axis2)

?

  1. 1.???????環境準備

l??MyEclipse 6.5

l??Tomcat 6

l??JDK 1.5

l??axis(非axis2)

?

  1. 2.???????新建web工程

新建一web工程,工程名稱為axistest。新建完成后,導入下圖所示的axis相關的jar包。

?

?

  1. 3.???????在web.xml中添加axis相關的配置信息

?

[xhtml]?view plain?copy
  1. <servlet>??
  2. ????<display-name>Apache-Axis?Servlet</display-name>??
  3. ????<servlet-name>AxisServlet</servlet-name>??
  4. ????<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>??
  5. </servlet>??
  6. ??
  7. <servlet>??
  8. ????<display-name>Axis?Admin?Servlet</display-name>??
  9. ????<servlet-name>AdminServlet</servlet-name>??
  10. ????<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>??
  11. ????<load-on-startup>100</load-on-startup>??
  12. </servlet>??
  13. <servlet-mapping>??
  14. ????<servlet-name>AxisServlet</servlet-name>??
  15. ????<url-pattern>/servlet/AxisServlet</url-pattern>??
  16. </servlet-mapping>??
  17. <servlet-mapping>??
  18. ????<servlet-name>AxisServlet</servlet-name>??
  19. ????<url-pattern>*.jws</url-pattern>??
  20. </servlet-mapping>??
  21. <servlet-mapping>??
  22. ????<servlet-name>AxisServlet</servlet-name>??
  23. ????<url-pattern>/services/*</url-pattern>??
  24. </servlet-mapping>??
  25. ???<servlet-mapping>??
  26. ????<servlet-name>AdminServlet</servlet-name>??
  27. ????<url-pattern>/servlet/AdminServlet</url-pattern>??
  28. </servlet-mapping>??

?

?

  1. 4.???????新建提供服務的Java

在src下新建com包,在com包下新建HelloWorld類,HelloWorld的內容如下:

?

[java]?view plain?copy
  1. package?com;??
  2. ??
  3. public?class?HelloWorld?{??
  4. ??
  5. ????public?String?sayHello(String?msg){??
  6. ????????if(null==msg?||?"".equals(msg)){??
  7. ????????????return?"您好!";??
  8. ????????}else{??
  9. ????????????return?"您好"?+?msg?+?"!";??
  10. ????????}??
  11. ????}??
  12. ??????
  13. ????public?int?sayAge(){??
  14. ????????return?28;??
  15. ????}??
  16. ??
  17. }??

??

?

  1. 5.???????配置server-config.wsdd

在WEB-INF下新建server-config.wsdd文件,內容如下:

?

[xhtml]?view plain?copy
  1. <deployment?xmlns="http://xml.apache.org/axis/wsdd/"??
  2. ????xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">??
  3. ??
  4. ????<!--?處理器?-->??
  5. ????<handler?name="URLMapper"?type="java:org.apache.axis.handlers.http.URLMapper"?/>??
  6. ??????????
  7. ????<!--?一個服務?-->??
  8. ????<!--?provider="java:RPC"??webservice是以javabean的形式提供的-->??
  9. ????<service?name="helloWorldService"?provider="java:RPC">??
  10. ????????<!--?指定類名?-->??
  11. ????????<parameter?name="className"?value="com.HelloWorld"?/>??
  12. ????????<!--?類中允許訪問的方法?-->??
  13. ????????<parameter?name="allowedMethod"?value="*"></parameter>??
  14. ????</service>??
  15. ??????
  16. ????<!--?指定處理器?-->??
  17. ????<transport?name="http">??
  18. ????????<requestFlow>??
  19. ????????????<handler?type="URLMapper"/><!--?引用上邊的?-->??
  20. ????????</requestFlow>??
  21. ????</transport>??
  22. ??????
  23. </deployment>??

?

wsdd文件標簽節點說明:

deployment:表明這是一個axis部署描述文件;

service:axis提供的一個web service服務。service標簽中parameter allowedMethod用于指定一個以空格分隔的方法名,只有這些方法可以通過web service訪問。也可以將這個值指定為“*”表示所有的方法都可以訪問。

provider:服務類型,共有四種,分別是RPC,Document,Wrapped和Message。詳見org.apache.axis.providers包的API文檔;

parameter:用來設置Axis的各種屬性;

requestFlow:局的請求Handlers,在調用實際的服務之前調用;

transport:定義了服務器端的傳輸方式

?

至此web service相關的東西已經配置好,此時工程的目錄結構如下

?

?

?

?

  1. 6.???????部署到Tomcat測試

將工程發布到Tomcat,在瀏覽器里訪問http://127.0.0.1:9999/axistest/services,如果出現如下頁面,則表示web service部署成功

?

?

點擊上面的wsdl鏈接,進入下圖所示頁面

?

注意上面的紅圈的namespace,下面測試QName有用到。

?

  1. 7.???????客戶端測試

在com包下新建測試類,名稱為ClientTest,內容如下:

?

[java]?view plain?copy
  1. package?com;??
  2. ??
  3. import?java.NET.MalformedURLException;??
  4. import?java.rmi.RemoteException;??
  5. ??
  6. import?javax.xml.namespace.QName;??
  7. import?javax.xml.rpc.ServiceException;??
  8. ??
  9. import?org.apache.axis.client.Call;??
  10. import?org.apache.axis.client.Service;??
  11. ??
  12. /**?
  13. ?*?@author?花非花霧非霧?
  14. ?*?@date?2010-12-24?
  15. ?*/??
  16. public?class?ClientTest?{??
  17. ??
  18. ????public?static?void?main(String[]?args)?throws?MalformedURLException,?RemoteException?{??
  19. ??????????
  20. ????????Service?service?=?new?Service();??
  21. ????????try?{??
  22. ??????????????
  23. ????????????Call?call?=?(Call)?service.createCall();??
  24. ????????????//設置地址??
  25. ????????????call.setTargetEndpointAddress(new?java.Net.URL("http://127.0.0.1:9999/axistest/services/helloWorldService?wsdl"));??
  26. ????????????//設置要執行的方法??
  27. ????????????call.setOperationName(new?QName("http://com","sayHello"));??
  28. ????????????//設置要傳入參數,如果沒有要傳入的參數,則不要寫這個??
  29. ????????????call.addParameter("msg",?org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);??
  30. ????????????//設置返回的類型??
  31. ????????????call.setReturnType(org.apache.axis.Constants.XSD_STRING);??
  32. ??????????????
  33. ????????????String?name?=?"花非花霧非霧";??
  34. ????????????//執行,調用webservice??
  35. ????????????String?result?=?(String)?call.invoke(new?Object[]{name});??
  36. ????????????System.out.println("返回的結果是:"+result);??
  37. ??????????????
  38. ????????}?catch?(ServiceException?e)?{??
  39. ????????????e.printStackTrace();??
  40. ????????}??
  41. ????}??
  42. ??
  43. }??

??

?

如果一切正常,運行結果如下:

返回的結果是:您好花非花霧非霧!

?

?

參考資料:

  1. axis?的官方資料

轉載于:https://www.cnblogs.com/forestwolf/p/6187442.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373244.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

彈簧特性

1.概述 本教程將展示如何通過XML或Java配置在Spring中設置和使用屬性 。 在Spring 3.1之前 &#xff0c;將新的屬性文件添加到Spring并使用屬性值并不像它那樣靈活和健壯。 從Spring 3.1開始 &#xff0c;新的Environment和PropertySource抽象大大簡化了此過程。 2.通過XML名…

php-cgi cpu很高,php-cgi占用cpu資源過高的解決方法

轉的網上的&#xff0c;不過對PHP-CGI菜鳥的人&#xff0c;還是有點幫助的。1. 一些php的擴展與php版本兼容存在問題&#xff0c;實踐證明 eAccelerater與某些php版本兼容存在問題&#xff0c;具體表現時啟動php-cgi進程后&#xff0c;運行10多分鐘&#xff0c;奇慢無比&#x…

《做中學》讀后有感

《做中學》讀后有感 最近讀了婁老師的“做中學”系列文章&#xff0c;有很大感觸&#xff0c;今天想著重談一談我在學習方面收到的啟發。 如何成功get一項技能 如果問到“如何開始get一項技能”&#xff0c;我想我們應該是最有發言權的一代。從小就被爸爸媽媽引導著參加各種課外…

多表之間關聯查詢

內連接 jion on 自連接 本表進行內連接的查詢形式 外鏈接&#xff1a; 左鏈接 寫法&#xff1a;select 字段 from 表1 t left join 表2 s on t.字段1 s.字段1 where 條件 或者 作用&#xff1a;保證左邊的表的數據全部顯示&#xff0c;包括空的 右鏈接 寫法 &#xff1a;sele…

php文件夾0777,PHP代碼mkdir(‘images’,’0777′)創建一個具有411權限的文件夾!為什么?...

我發誓這是昨天的工作.然而,現在下面的代碼破壞文件夾沒有問題,但創建一個具有411權限的新文件夾應該是777.我的代碼昨天這樣做.這樣做的目的是壓縮文件夾,傳遞文件夾,刪除圖像,然后為圖像創建新目錄.有人能告訴我我做錯了什么或我應該做什么&#xff1f;謝謝function delete_d…

調查HashDoS問題

近一個月前&#xff0c;我就如何在不與供應商互動的情況下臨時解決 28C3上出現的HashDoS問題或其他代碼缺陷發表了一些想法。 現在是時候更深入地研究復雜性攻擊并查看來源了。 我完全假設java.util.HashMap和java.util.Hashtable是受此攻擊影響的最常用的Java數據結構&#xf…

Linq 和 EF Contains示例

List<int> unitIDListnew List<int>(); //此處添加int元素 var query DB.ElecConsumers.Where(c > unitIDList.Contains(c.ParentUnitID)); //EF方式 var query1 (from c in DB.ElecConsumers where unitIDList.Contains(c.ParentUnitID ) select c); //Linq方…

date 顯示或設置系統時間和日期

顯示或設置系統時間和日期 date [options] [format] date [options] [new date] date用來顯示系統的時間和日期&#xff0c;超級用戶可以使用date來更改系統時鐘 選項 %H 小時&#xff0c;24小時制&#xff08;00~23&#xff09; %I 小時&#xff0c;12小時制&#xff…

Java 7:WatchService

在Java 7的所有新功能中&#xff0c;更有趣的是WatchService&#xff0c;它增加了監視目錄更改的功能。 WatchService直接映射到本機文件事件通知機制&#xff08;如果有&#xff09;。 如果本機事件通知機制不可用&#xff0c;則默認實現將使用輪詢。 結果&#xff0c;響應性&…

做一件事情的3個關鍵指標:興趣、能力和回報

最近突然有了一點新的感悟&#xff0c;在原有的認識基礎之上。關于找工作&#xff0c;大家說的最多的&#xff0c;根據自己的“興趣”和“能力”。我覺得這是不夠的&#xff0c;還應該加上一個“回報”。興趣&#xff1a;對一件事有沒有愿望去嘗試&#xff0c;側重“好奇心”。…

iOS應用內支付(IAP)詳解

在iOS開發中如果涉及到虛擬物品的購買&#xff0c;就需要使用IAP服務&#xff0c;我們今天來看看如何實現。 在實現代碼之前我們先做一些準備工作&#xff0c;一步步來看。 1、IAP流程 IAP流程分為兩種&#xff0c;一種是直接使用Apple的服務器進行購買和驗證&#xff0c;另一種…

vagrant box php,vagrant box php開發環境配置 -- nginx

centos7.3 直接用yum安裝nginx的版本是1.10.2&#xff0c;當前的最新穩定版是1.10.3&#xff0c;暫時不更新&#xff0c;直接安裝yum安裝nginxsudo yum install -y nginx測試nginx -t啟動sudo service nginx startps -ef|grep nginxcurl -i localhost在virtualbox設置網絡的端口…

使用ASM 4處理Java類文件–第二部分:Tree API

什么是ASM樹API&#xff1a; ASM樹API是ASM的一部分&#xff0c;可讓您創建/修改內存中的類。 該類被視為信息樹。 像整個類一樣&#xff0c;它是ClassNode的實例&#xff0c;其中包含FieldNode對象列表&#xff0c;MethodNode對象列表等。本文假設讀者已經在這里閱讀了第一部分…

php 去除 html 屬性,用PHP 去掉所有html標簽里的部分屬性

用PHP 去掉所有html標簽里的部分屬性http://zhidao.baidu.com/question/418471924.html用PHP 去掉所有html標簽里的部分屬性 tppabsset_time_limit(0);function view_dir($dir){$dpopendir($dir); //打開目錄句柄//echo "".$dir."";$path2;while ($file r…

在Windows上安裝Elasticsearch 5.0

在windows上安裝Elasticsearch Elasticsearch可以使用.zip軟件包安裝在Windows上。 elasticsearch-service.bat命令&#xff0c;它將設置Elasticsearch作為服務運行。 Elasticsearch的最新穩定版在Download Elasticsearch下載&#xff0c;其他的版本在Past Releases page下載。…

Java EE 6示例– Galleria

您是否一直想知道在哪里可以找到使用Java EE 6構建的良好端到端示例&#xff1f; 我有。 您在網上找到的大多數東西都是非常基礎的&#xff0c;不能解決現實世界中的問題。 Java EE 6教程就是這樣。 所有其他內容&#xff0c;例如Adam Bien所發表的大多數內容&#xff0c;都是范…

二維有限體積 matlab,二維有限體積法計算熱傳導及源碼.pdf

二維有限體積法計算熱傳導及源碼//#include "stdafx.h"#include #include #include #include #include using namespace std;#define q 500#define k 1000void main (){ //input the value you want:double L,dx,dy,T,Ax,Ay,d;int m,n,i,j,kk,mm ;//char str1[20];ch…

ubuntu與win10互換硬盤

實例&#xff1a;將sdb上的ubuntu轉移至sda&#xff0c;將sda上的win轉移至sdb1. 備份資料2. 制作老毛桃PE盤3. 格式化sda4. dd if/dev/sdb of/dev/sda ,將sdb克隆到sda上5. 利用Linux live cd修復grub2&#xff08;BIOS不會認GPT分區&#xff09; sudo grub-install /dev/sda …

如何在Jetty中使用SPDY

SPDY是Google提出的一種新協議&#xff0c;是針對網絡的新協議。 SPDY與HTTP兼容&#xff0c;但嘗試通過壓縮&#xff0c;多路復用和優先級降低網頁負載。準確地說&#xff0c;快速的目標是&#xff1a;&#xff08; http://dev.chromium.org/spdy/spdy-whitepaper &#xff09…

虐殺外星人java,逆天游戲《毀滅全人類2》登PS4 外星人瘋狂虐殺地球人

逆天游戲《毀滅全人類2》登PS4 外星人瘋狂虐殺地球人2016-10-17 10:45:58來源&#xff1a;游戲下載編輯&#xff1a;小年青評論(0)廣大的小伙伴都有看過許多外星人企圖入侵毀滅地球的電影&#xff0c;已此為題材而開發的游戲也不在少數。近日泛歐洲游戲信息組織又為一款該種題材…