生活随笔
收集整理的這篇文章主要介紹了
Axis通过wsdd部署Web Service
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
axis網上的教程很多,不過搜來搜去,總是只有那么幾篇。仔細看了一下那幾篇文章,都感覺到不是自己想要的,所以自己整理了一篇分享一下。
?
本文介紹axis應用的一個小例子,沒有麻煩的命令行操作,只需照下面的步驟做就可以了。以下是詳細的操作步驟。(注:本實例用的是axis,非axis2)
?
1.???????環境準備l??MyEclipse 6.5
l??Tomcat 6
l??JDK 1.5
l??axis(非axis2)
?
2.???????新建web工程新建一web工程,工程名稱為axistest。新建完成后,導入下圖所示的axis相關的jar包。
?
?
3.???????在web.xml中添加axis相關的配置信息?
[xhtml]?view plain?copy
<servlet>??????<display-name>Apache-Axis?Servlet</display-name>??????<servlet-name>AxisServlet</servlet-name>??????<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>??</servlet>????<servlet>??????<display-name>Axis?Admin?Servlet</display-name>??????<servlet-name>AdminServlet</servlet-name>??????<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>??????<load-on-startup>100</load-on-startup>??</servlet>??<servlet-mapping>??????<servlet-name>AxisServlet</servlet-name>??????<url-pattern>/servlet/AxisServlet</url-pattern>??</servlet-mapping>??<servlet-mapping>??????<servlet-name>AxisServlet</servlet-name>??????<url-pattern>*.jws</url-pattern>??</servlet-mapping>??<servlet-mapping>??????<servlet-name>AxisServlet</servlet-name>??????<url-pattern>/services/*</url-pattern>??</servlet-mapping>?????<servlet-mapping>??????<servlet-name>AdminServlet</servlet-name>??????<url-pattern>/servlet/AdminServlet</url-pattern>??</servlet-mapping>?? ?
?
4.???????新建提供服務的Java類在src下新建com包,在com包下新建HelloWorld類,HelloWorld的內容如下:
?
[java]?view plain?copy
package?com;????public?class?HelloWorld?{????????public?String?sayHello(String?msg){??????????if(null==msg?||?"".equals(msg)){??????????????return?"您好!";??????????}else{??????????????return?"您好"?+?msg?+?"!";??????????}??????}????????????public?int?sayAge(){??????????return?28;??????}????}?? ??
?
5.???????配置server-config.wsdd在WEB-INF下新建server-config.wsdd文件,內容如下:
?
[xhtml]?view plain?copy
<deployment?xmlns="http://xml.apache.org/axis/wsdd/"??????xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">????????<!--?處理器?-->??????<handler?name="URLMapper"?type="java:org.apache.axis.handlers.http.URLMapper"?/>????????????????<!--?一個服務?-->??????<!--?provider="java:RPC"??webservice是以javabean的形式提供的-->??????<service?name="helloWorldService"?provider="java:RPC">??????????<!--?指定類名?-->??????????<parameter?name="className"?value="com.HelloWorld"?/>??????????<!--?類中允許訪問的方法?-->??????????<parameter?name="allowedMethod"?value="*"></parameter>??????</service>????????????<!--?指定處理器?-->??????<transport?name="http">??????????<requestFlow>??????????????<handler?type="URLMapper"/><!--?引用上邊的?-->??????????</requestFlow>??????</transport>????????</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相關的東西已經配置好,此時工程的目錄結構如下
?
?
?
?
6.???????部署到Tomcat測試將工程發布到Tomcat,在瀏覽器里訪問http://127.0.0.1:9999/axistest/services,如果出現如下頁面,則表示web service部署成功
?
?
點擊上面的wsdl鏈接,進入下圖所示頁面
?
注意上面的紅圈的namespace,下面測試QName有用到。
?
7.???????客戶端測試在com包下新建測試類,名稱為ClientTest,內容如下:
?
[java]?view plain?copy
package?com;????import?java.NET.MalformedURLException;??import?java.rmi.RemoteException;????import?javax.xml.namespace.QName;??import?javax.xml.rpc.ServiceException;????import?org.apache.axis.client.Call;??import?org.apache.axis.client.Service;????/**??*?@author?花非花霧非霧??*?@date?2010-12-24??*/??public?class?ClientTest?{????????public?static?void?main(String[]?args)?throws?MalformedURLException,?RemoteException?{????????????????????Service?service?=?new?Service();??????????try?{????????????????????????????Call?call?=?(Call)?service.createCall();??????????????//設置地址??????????????call.setTargetEndpointAddress(new?java.Net.URL("http://127.0.0.1:9999/axistest/services/helloWorldService?wsdl"));??????????????//設置要執行的方法??????????????call.setOperationName(new?QName("http://com","sayHello"));??????????????//設置要傳入參數,如果沒有要傳入的參數,則不要寫這個??????????????call.addParameter("msg",?org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);??????????????//設置返回的類型??????????????call.setReturnType(org.apache.axis.Constants.XSD_STRING);????????????????????????????String?name?=?"花非花霧非霧";??????????????//執行,調用webservice??????????????String?result?=?(String)?call.invoke(new?Object[]{name});??????????????System.out.println("返回的結果是:"+result);????????????????????????}?catch?(ServiceException?e)?{??????????????e.printStackTrace();??????????}??????}????}?? ??
?
如果一切正常,運行結果如下:
返回的結果是:您好花非花霧非霧!
?
?
參考資料:
axis?的官方資料
轉載于:https://www.cnblogs.com/forestwolf/p/6187442.html
總結
以上是生活随笔為你收集整理的Axis通过wsdd部署Web Service的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。