Axis创建webservice客户端和服务端
一、Axis的介绍
Web Service是现在最适合实现SOA的技术,而Axis是实现Web Service的一种技术框架(架构)。
二、Axis的准备条件
所需要的jar包:
axis.jar
jaxrpc.jar
saaj.jar
wsdl4j-1.5.1.jar
commons-discovery-0.2.jar
xbean.jar
下载地址:http://download.csdn.net/detail/ch656409110/5747129
三、创建webservice服务端
1、先将jar包放入lib目录
2、在web.xml中配置axis监听器和核心servlet
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>
3、创建一个xml, 名字叫server-config.wsdd 放在WEB-INF根目录
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> 4 <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> 5 6 <service name="houseWebService" provider="java:RPC"> 7 <parameter name="allowedMethods" value="*"/> 8 <parameter name="className" value="com.struts2.webservice.server.HouseWebServiceImpl"/> 9 </service> 10 11 <transport name="http"> 12 <requestFlow> 13 <handler type="URLMapper"/> 14 </requestFlow> 15 </transport> 16 </deployment>
4、根据配置再创建webservice服务端的实现类
1、定义接口HouseWebService.java
public String getHouseList(String xmlStr);
2、实现该接口HouseWebServiceImpl.java
可以随便返回一些字符串即可。
5、保存,发布项目,启动tomcat
在地址栏输入:http://localhost:8080/house/services/houseWebService?wsdl 即可看到发布的服务端的明细。
如下:
这就表示Axis发布的webservice服务端成功了。
6、通过客户端调用服务端webservice
1 /** 2 * 调用webservice路口 3 * @param endpoint 地址 4 * @param methodName 调用的方法 5 * @param xmlStr 传递的xml字符串参数 6 * @return 7 */ 8 public String invoke(String endpoint,String methodName,String xmlStr){ 9 Service service = new Service(); 10 Call call = null; 11 try { 12 call = (Call) service.createCall(); 13 } catch (ServiceException e) { 14 e.printStackTrace(); 15 } 16 QName qn = new QName(methodName); 17 call.setOperationName(qn); 18 call.setTargetEndpointAddress(endpoint); 19 call.setUseSOAPAction(true); 20 String result = ""; 21 try { 22 // 给方法传递参数,并且调用方法 23 result = (String) call.invoke(new Object[] { xmlStr }); 24 } catch (RemoteException e) { 25 e.printStackTrace(); 26 } 27 System.out.println("result is " + result); 28 return result; 29 } 30 31 public List<House> getHouseList() { 32 String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 33 + " <house>" 34 + " <condition>" 35 + " <title>便宜</title>" 36 + " <price></price>" 37 + " <streetname></streetname>" 38 + " <typename></typename>" 39 + " <floorage>100</floorage>" 40 + " <pageno></pageno>" 41 + " <pagesize></pagesize>" 42 + " </condition>" 43 + " </house>"; 44 String result = invoke("http://localhost:8080/house/services/houseWebService","getHouseList",xmlStr); 45 }
在这里面传递的xml规范由 服务端自己规范好了,然后去解析、获取参数,执行相应的操作,返回想要的结果给调用的客户端。。
本文转载于:http://blog.csdn.net/chenghui0317/article/details/9318317