看到網上挺多人找webservice axis開發案例,但是網上較多的都是有點亂,初學者不太容易看得懂,所以最近看到自己終於有了點空閒時間,就上傳了一份比較簡單的webservice axis的完整案例。
只適用於初學者。
一、新建一個web項目
導入lib包。
2.配置 web.xml
<!-- axis 配置 --> <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-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
3.然後在項目中的src下創建包,再在包下創建一個類,用來提供web service接口。
package com; public class HelloWorld { public String sayHello(String msg){ if(null==msg || "".equals(msg)){ return "您好!"; }else{ return "您好" + msg + "!"; } } public int sayAge(){ return 28; } }
4.配置 server-config.wsdd文件。
<!-- deployment 表明這是一個axis部署描述文件 --> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <!-- axis提供的一個web service服務。service標籤中parameter allowedMethod用於指定一個以空格分隔的方法名, 只有這些方法可以通過web service訪問。也可以將這個值指定爲“*”表示所有的方法都可以訪問。--> <service name="axisEm" provider="java:RPC"> <!-- 指定類名 --> <parameter name="className" value="com.HelloWorld" /> <!-- 類中允許訪問的方法 --> <parameter name="allowedMethod" value="*"></parameter> <!-- 命名空間 --> <namespace>http://xml.apache.org/axis/wsdd/</namespace> <parameter name="scope" value="Application"/> </service> <!-- 服務器端的傳輸方式. 指定處理器 --> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> <transport name="http"> <requestFlow> <handler type="java:org.apache.axis.handlers.http.URLMapper"/><!-- 引用上邊的 --> </requestFlow> </transport> </deployment>
5.運行該項目,訪問http://localhost:8080/axisTest/services/axisEm?wsdl,
如果報錯,則返回項目檢測配置是否有問題等,成功則會得到wsdl文檔。
二、客戶端調用
package com.test; import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class webTest { public static void main(String[] args) { String _newendPoint = "http://localhost:8080/axisTest/services/helloWorldService?wsdl"; String _newNameSpace = "http://xml.apache.org/axis/wsdd/"; try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(_newendPoint)); call.setOperationName(new QName(_newNameSpace, "sayHello")); String s = (String) call.invoke(new Object[] { "st001" }); System.out.println(s); } catch (Exception ex) { ex.printStackTrace(); } } }
案例下載地址:http://down.51cto.com/data/2220274