axis2发布webservice服务之初体验

相关概念

  • 介绍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响应消息回给客户端。

  • 发布服务的步骤

  1. 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方法

成功 得到返回值

发布了100 篇原创文章 · 获赞 96 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq_25221835/article/details/88234278