WebService——基础原理以及入门

webService作为SOA(Service-Oriented Architecture)服务架构,在工作中,我们可能经常会用到。那到底什么是WebService,以及基于什么样的实现。在这一篇我会简单描述,并结合在工作中使用SoapUI-5.2.0开发的一些见解与大家分享。

一、Webservice原理和基础。

什么是Webservice?WebService的全称是XML Webservice。Webservice是一种可以接收从internet和interanet接收过来的请求,轻量级的通信技术。

为什么我们需要WebService? 企业或政府,会开发一些列的软件为民众或相关合作单位服务。这里有两个概念,一是发布服务的是服务端,二是接收服务的是客户端。当服务端发布服务时,客户端可能是在不同平台接收服务的。WebService的是跨平台的,其本身是基于soap(simple object access protocol)简单对象传输协议,Service-Oriented Architecture。
而SOAP采用了已经广泛使用的两个协议:HTTP 和XML标准通用标记语言下的一个子集),HTTP协议是基于TCP协议的应用层协议。简而言值,SOAP是基于HTTP协议进行XML的传输。这里做一个拓展,HTTP协议和RPC协议一致,简单且应用广泛,而且对防火墙比其它协议更容易发挥作用。


二、实现一个简单的WebService服务端发布和客户端接收。

2.1引入Jar包

在运用WebService时,我们首先新建一个工程,并引入一些Jar包。


2.2 定义服务端

WebService是由接口和类组成的。

首先我们定义一个接口来发布我们的服务。

/**
 * 定义一个发布天气的服务
 * @author ziqiang
 *
 */
@WebService
public interface IweatherService {

	/**
	 * 返回天气
	 * @param cityCode
	 * @param date
	 * @return
	 */
	 List<Map<String, Object>> getweatherByCity(String cityCode);
}
然后定义一个实现类实现我们需要发布的服务

package com.webservice.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.jws.WebService;

import net.sf.json.JSONArray;

@WebService(endpointInterface="com.webservice.service.IweatherService",serviceName="WeatherService")//指定webservice所实现的接口以及服务名称  
public class WeatherService implements IweatherService {

	@Override
	public String getweatherByCity(String cityCode) {
		List<Map<String, Object>> weatherList=new ArrayList<>();
		if (cityCode.equals("110000")) {//北京
			Map<String, Object> tempMap=new HashMap<String, Object>();
			tempMap.put("温度", "20~30华氏摄氏度");
			Map<String, Object> cloudMap=new HashMap<String,Object>();
			cloudMap.put("天气", "多云转晴");
			weatherList.add(tempMap);
			weatherList.add(cloudMap);
		}
		String result=JSONArray.fromObject(weatherList).toString();
		return result;
	}
}
服务端进行服务的发布

package com.webservice.test;

import javax.xml.ws.Endpoint;

import com.webservice.service.IweatherService;
import com.webservice.service.WeatherService;
/**
 * @author ziqiang
 *
 */
public class Publisher {
	
	public static void main(String[] args) {
		  //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
		        //String address = "http://192.168.1.100:8989/";这个WebService发布地址的写法是合法的
		        //String address = "http://192.168.1.100:8989/Webservice";这个WebService发布地址的是合法的
				IweatherService  weatherService=new WeatherService();
		        String address = "http://127.0.0.1:9090/Webservice";
		        //使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
		        Endpoint.publish(address , weatherService);
		        System.out.println("发布webservice成功!");
	}
}
点击运行之后,我们就能发现服务发布了。

三、用SoapUI进行测试

下载soapUI

然后添加项目add wsdl输入我们上面发布的地址



<SOAP-ENV:Envelope
 各种属性>
 <SOAP:HEADER>
 </SOAP:HEADER>
 <SOAP:Body>
 </SOAP:Body>
</SOAP-ENV:Envelope>

在Body下面有传参,我们可以输入参数,然后就可以看到返回给我们的参数了。


四、其他方式进行测试

除了SOAP我们可以进行webService的测试外,我们还可以通过新建一个webservice-client来进行测试。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值