转自:https://blog.csdn.net/chenghui0317/article/details/9318317

一、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. <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  3. <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
  4. <service name="houseWebService" provider="java:RPC">
  5. <parameter name="allowedMethods" value="*"/>
  6. <parameter name="className" value="com.struts2.webservice.server.HouseWebServiceImpl"/>
  7. </service>
  8. <transport name="http">
  9. <requestFlow>
  10. <handler type="URLMapper"/>
  11. </requestFlow>
  12. </transport>
  13. </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. public List<House> getHouseList() {
  31. String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
  32. + " <house>"
  33. + "   <condition>"
  34. + "     <title>便宜</title>"
  35. + "     <price></price>"
  36. + "     <streetname></streetname>"
  37. + "    <typename></typename>"
  38. + "    <floorage>100</floorage>"
  39. + "    <pageno></pageno>"
  40. + "    <pagesize></pagesize>"
  41. + "   </condition>"
  42. + " </house>";
  43. String result = invoke("http://localhost:8080/house/services/houseWebService","getHouseList",xmlStr);
  44. }

在这里面传递的xml规范由 服务端自己规范好了,然后去解析、获取参数,执行相应的操作,返回想要的结果给调用的客户端。。

如果用axis调用axis的服务端使用使用起来很方便,但是调用cxf的服务端容易出错。

比如:如果在调用的时候没有指定命名空间,就不行。

在调用的时候不指定调用的参数以及返回的结果类型,就收不到客户端发送的参数。可以看看:http://blog.csdn.net/ch656409110/article/details/9310789

13.Axis创建webservice客户端和服务端的更多相关文章

  1. Axis创建webservice客户端和服务端

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/ ...

  2. CXF创建webservice客户端和服务端

    转 一.CXF的介绍 Apache CXF是一个开源的WebService框架,CXF大大简化了Webservice的创建,同时它继承了XFire的传统,一样可以和spring天然的进行无缝的集成.C ...

  3. 【转】SoapUI5.0创建WebService接口模拟服务端

    原文:http://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要接口描述文件 MathU ...

  4. SoapUI5.0创建WebService接口模拟服务端(转)

    转载自:https://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要接口描述文件 Mat ...

  5. 【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter对SOAP协议性能测试脚本开发

    目录: 创建WebService接口模拟服务端 下载SoapUI 新建MathUtil.wsdl文件 创建一个SOAP项目 接口模拟服务端配置以及启动 JMeter对SOAP协议性能测试脚本开发 [阐 ...

  6. 使用Axis2编写webservice客户端,服务端

    1.编写客户端 Axis2开发WebService客户端 的3种方式 [参考帖子] http://blog.csdn.net/wangjinwei6912/article/details/851259 ...

  7. 使用GSoap开发WebService客户端与服务端

    Gsoap 编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现, 从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多. 用gsoap开发web service的大致思路 我 ...

  8. WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

    还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现.新建一个包:com.aixs2client.目录结构如下: 一.服务端: 1.还是使用com.webs ...

  9. Delphi XE5通过WebService开发Web服务端和手机客户端

    Delphi XE5通过WebService开发Web服务端和手机客户端介绍 我们开发一个三层的android程序 建立一个webservices  stand-alone vcl applicati ...

随机推荐

  1. vuejs keep-alive

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 《剑指offer》二维数组中的查找

    一.题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 二.输入描述 ar ...

  3. Python常用目录操作(Python2)

    Python获取当前路径   Python查看指定路径下的文件和文件夹 Python修改当前工作目录(在读取文件等时需要) Python添加import路径(有时候为了import自己写的py文件,且 ...

  4. 了解Linux的基础知识和一般概念

    1.GNU和GPL    GNU计划(又称革奴计划),是由Richard Stallman(理查德·斯托曼)在1983年9月27日公开发起的自由软件集体协作计划.它的目标是创建一套完全自由的操作系统. ...

  5. appium 模拟实现物理按键点击

    appium自动化测试中,当确认,搜索,返回等按键通过定位点击不好实现的时候,可以借助物理按键来实现.appium支持以下物理按键模拟: 电话键 KEYCODE_CALL 拨号键 5 KEYCODE_ ...

  6. 2017国家集训队作业[agc016b]Color Hats

    2017国家集训队作业[agc016b]Color Hats 题意: 有\(N\)个人,每个人有一顶帽子.帽子有不同的颜色.现在,每个人都告诉你,他看到的所有其它人的帽子共有多少种颜色,问有没有符合所 ...

  7. 用Electron开发企业网盘(二)--分片下载

    书接上文,背景见:https://www.cnblogs.com/shawnyung/p/10060119.html HTTP请求头  Range 请求资源的部分内容(不包括响应头的大小),单位是by ...

  8. Java 异常的捕获与处理详解(二)

    (一).throws关键字 throws关键字主要是在定义上使用的,表示的是此方法中不进行异常处理,而交给被调用处处理. 例如: class MyMath { public int div(int x ...

  9. 【ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) C】 Permutation Cycle

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] p[i] = p[p[i]]一直进行下去 在1..n的排列下肯定会回到原位置的. 即最后会形成若干个环. g[i]显然等于那个环的大 ...

  10. 惊叹计算机运行速度的提升---以n Queens 问题为例

    1 介绍 实现了书<Data Structures and Program design in C++>(Robert L. Kruse and Alexander J. Ryba, 20 ...