相关概念
- 介绍Axis2
Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP withAttachments 规范(来自 Apache Group )的开放源代码实现。有很多流行的开发工具都使用AXIS作为其实现支持Web服务的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。AXIS的最新版本可以从 http://ws.apache.org/axis/index.html下载。
- WebService开发
- 服务端开发
把公司内部系统的业务方法发布成WebService服务,供远程合作单位和个人调用。(借助一些WebService框架可以很轻松地把自己的业务对象发布成WebService服务,Java方面的典型WebService框架包括:axis,xfire,cxf 等,java ee服务器通常也支持发布WebService服务,例如JBoss。)
- 客户端开发
调用别人发布的WebService服务,大多数人从事的开发都属于这个方面,例如,调用天气预报WebService服务。(使用厂 商的WSDL2Java之类的工具生成静态调用的代理类代码;使用厂商提供的客户端编程API类;使用SUN公司早期标准的jax-rpc开发包;使用 SUN公司最新标准的jax-ws开发包。当然SUN已被ORACLE收购)
- WebService 的工作调用原理
对客户端而言,我们给这各类WebService客户端API传递wsdl文件的url地址,这些API就会创建出底层的代理类,我调用 这些代理,就可以访问到webservice服务。代理类把客户端的方法调用变成soap格式的请求数据再通过HTTP协议发出去,并把接收到的soap 数据变成返回值返回。对服务端而言,各类WebService框架的本质就是一个大大的Servlet,当远程调用客户端给它通过http协议发送过来 soap格式的请求数据时,它分析这个数据,就知道要调用哪个java类的哪个方法,于是去查找或创建这个对象,并调用其方法,再把方法返回的结果包装成 soap格式的数据,通过http响应消息回给客户端。
-
发布服务的步骤
- web.xml的配置
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
2.创建一个服务的实体类
package com.zhiguangyun.modules.axis.webService;
public class HelloWebService {
public String sayHello() {
return "hello webService!";
}
public String sayHelloToPerson(String name) {
if (name == null)
name = "nobody";
return "hello webService! " + name;
}
public void updateData(String data) {
System.out.println(data + " 已更新");
}
}
3.在web-info 目录下 创建一个 meta-inf目录,将services.xml放进去
4.编写 services.xml
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<!-- name属性配置WebService的名称 -->
<service name="hello">
<description>webService例子</description>
<parameter name="ServiceClass">com.zhiguangyun.modules.axis.webService.HelloWebService
</parameter>
<operation name="sayHello">
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</operation>
</service>
</serviceGroup>
<service name = "hello">:这个name 是服务访问地址中 要用到的 ,等下对比就知道了
parameter: name名 必须为 ServiceClass,然后 值为 刚创建的实体类的全路径
operation: name是实体类中的方法名
in - out : 说明访问的方法有输出,也就是方法有返回值 ,比如上面的sayHello方法 ,因此需要使用可处理输入输出的RPCMessageReceiver类
in - only: 说明方法没有返回值,比如上面的updateData方法,因此,需要使用只能处理输入的RPCInOnlyMessageReceiver类
根据以上配置后,就可以访问测试,服务是否发布成功了。
soapUI软件模拟webservice客户端进行与服务端进行交互
https://jingyan.baidu.com/article/cbcede0712849a02f40b4d88.html(介绍 使用的地址)
用 soapUI访问 发布的webservice方法:
1.首先,点击 “ NEW SOAP Project”
2.输入 webservice 服务地址,点击 ”ok“
3.注意细节
4.展开列表。双击某个方法的request1
5.点击“运行”,访问sayHello方法
成功 得到返回值