13.Axis创建webservice客户端和服务端
转自: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
- <!-- axis配置 -->
- <listener>
- <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>
- </listener>
- <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>/services/*</url-pattern>
- </servlet-mapping>
3、创建一个xml, 名字叫server-config.wsdd 放在WEB-INF根目录
- <?xml version="1.0" encoding="UTF-8"?>
- <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"/>
- <service name="houseWebService" provider="java:RPC">
- <parameter name="allowedMethods" value="*"/>
- <parameter name="className" value="com.struts2.webservice.server.HouseWebServiceImpl"/>
- </service>
- <transport name="http">
- <requestFlow>
- <handler type="URLMapper"/>
- </requestFlow>
- </transport>
- </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
- /**
- * 调用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=\"1.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
13.Axis创建webservice客户端和服务端的更多相关文章
- Axis创建webservice客户端和服务端
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/ ...
- CXF创建webservice客户端和服务端
转 一.CXF的介绍 Apache CXF是一个开源的WebService框架,CXF大大简化了Webservice的创建,同时它继承了XFire的传统,一样可以和spring天然的进行无缝的集成.C ...
- 【转】SoapUI5.0创建WebService接口模拟服务端
原文:http://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要接口描述文件 MathU ...
- SoapUI5.0创建WebService接口模拟服务端(转)
转载自:https://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要接口描述文件 Mat ...
- 【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter对SOAP协议性能测试脚本开发
目录: 创建WebService接口模拟服务端 下载SoapUI 新建MathUtil.wsdl文件 创建一个SOAP项目 接口模拟服务端配置以及启动 JMeter对SOAP协议性能测试脚本开发 [阐 ...
- 使用Axis2编写webservice客户端,服务端
1.编写客户端 Axis2开发WebService客户端 的3种方式 [参考帖子] http://blog.csdn.net/wangjinwei6912/article/details/851259 ...
- 使用GSoap开发WebService客户端与服务端
Gsoap 编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现, 从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多. 用gsoap开发web service的大致思路 我 ...
- WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)
还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现.新建一个包:com.aixs2client.目录结构如下: 一.服务端: 1.还是使用com.webs ...
- Delphi XE5通过WebService开发Web服务端和手机客户端
Delphi XE5通过WebService开发Web服务端和手机客户端介绍 我们开发一个三层的android程序 建立一个webservices stand-alone vcl applicati ...
随机推荐
- BZOJ 1927 最小费用流问题
From lydrainbowcat //By SiriusRen #include <queue> #include <cstdio> #include <cstrin ...
- PostgreSQL Replication之第四章 设置异步复制(4)
4.4 基于流和基于文件的恢复 生活并不总只是黑色或白色:有时也会有一些灰色色调.对于某些情况下,流复制可能恰到好处.在另一些情况下,基于文件复制和PITR是您所需要的.但是也有许多情况下,您既需要流 ...
- vue打包后js和css、图片不显示,引用的字体找不到问题
vue打包后js和css.图片不显示,引用的字体找不到问题:图片一般都是背景图片. 一.vue打包出现js和css不显示问题: 1.不使用mode:'history' 2.使用mode:'histor ...
- 给 “rm” 命令添加个“垃圾桶”
作者: 2daygeek 译者: LCTT amwps290 人类犯错误是因为我们不是一个可编程设备,所以,在使用 rm 命令时要额外注意,不要在任何时候使用 rm -rf *.当你使用 rm 命令时 ...
- python的模块导入机制
在python中用import或者from...import来导入相应的模块. 模块(Module)其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模 ...
- package.json 中 scripts
"name": "webpack-study1", "version": "1.0.0", "main&quo ...
- 在ubuntu上编译rasbian kernel(for raspberry pi 1)
raspberry pi官网的编译手册写的简洁有力,照着操作即可 https://www.raspberrypi.org/documentation/linux/kernel/building.md ...
- cal---显示日历
cal命令用于显示当前日历,或者指定日期的日历. 语法 cal(选项)(参数) 选项 -l:显示单月输出: -3:显示临近三个月的日历: -s:将星期日作为月的第一天: -m:将星期一作为月的第一天: ...
- Django初学习程序大致流程
- Python实现快排
Python实现快排 def quicksort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x ...