原創做品,容許轉載,轉載時請務必以超連接形式標明文章 原始出處 、做者信息和本人聲明。不然將追究法律責任。 做者:永恆の_☆ 地址:http://blog.csdn.net/chenghui0317/article/details/9318317html
Web Service是如今最適合實現SOA的技術,而Axis是實現Web Service的一種技術框架(架構)。java
所須要的jar包:web
axis.jarapache
jaxrpc.jartomcat
saaj.jar架構
wsdl4j-1.5.1.jarapp
commons-discovery-0.2.jar框架
xbean.jaride
下載地址:http://download.csdn.net/detail/ch656409110/5747129ui
1 <!-- axis配置 --> 2 <listener> 3 <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class> 4 </listener> 5 <servlet> 6 <display-name>Apache-Axis Servlet</display-name> 7 <servlet-name>AxisServlet</servlet-name> 8 <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> 9 </servlet> 10 <servlet> 11 <display-name>Axis Admin Servlet</display-name> 12 <servlet-name>AdminServlet</servlet-name> 13 <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class> 14 <load-on-startup>100</load-on-startup> 15 </servlet> 16 <servlet-mapping> 17 <servlet-name>AxisServlet</servlet-name> 18 <url-pattern>/servlet/AxisServlet</url-pattern> 19 </servlet-mapping> 20 <servlet-mapping> 21 <servlet-name>AxisServlet</servlet-name> 22 <url-pattern>/services/*</url-pattern> 23 </servlet-mapping> 24 25 26 }
一、定義接口HouseWebService.java
public String getHouseList(String xmlStr);
二、實現該接口HouseWebServiceImpl.java
能夠隨便返回一些字符串便可。
在地址欄輸入:http://localhost:8080/house/services/houseWebService?wsdl 便可看到發佈的服務端的明細。
以下:
這就表示Axis發佈的webservice服務端成功了。
/** * 調用webservice路口 * @param endpoint 地址 * @param methodName 調用的方法 * @param xmlStr 傳遞的xml字符串參數 * @return */ public String invoke(String endpoint,String methodName,String xmlStr){ Service service = new Service(); Call call = null; try { call = (Call) service.createCall(); } catch (ServiceException e) { e.printStackTrace(); } QName qn = new QName(methodName); call.setOperationName(qn); call.setTargetEndpointAddress(endpoint); call.setUseSOAPAction(true); String result = ""; try { // 給方法傳遞參數,而且調用方法 result = (String) call.invoke(new Object[] { xmlStr }); } catch (RemoteException e) { e.printStackTrace(); } System.out.println("result is " + result); return result; } public List<House> getHouseList() { String xmlStr = "<?xml version=\"0\" encoding=\"UTF-8\"?>" + " <house>" + " <condition>" + " <title>便宜</title>" + " <price></price>" + " <streetname></streetname>" + " <typename></typename>" + " <floorage>100</floorage>" + " <pageno></pageno>" + " <pagesize></pagesize>" + " </condition>" + " </house>"; String result = invoke("http://localhost:8080/house/services/houseWebService","getHouseList",xmlStr); }
在這裏面傳遞的xml規範由 服務端本身規範好了,而後去解析、獲取參數,執行相應的操做,返回想要的結果給調用的客戶端。。
若是用axis調用axis的服務端使用使用起來很方便,可是調用cxf的服務端容易出錯。
好比:若是在調用的時候沒有指定命名空間,就不行。
在調用的時候不指定調用的參數以及返回的結果類型,就收不到客戶端發送的參數。能夠看看:http://blog.csdn.net/ch656409110/article/details/9310789