当前位置:   article > 正文

WebService——基础原理以及入门_webservice基本原理

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是由接口和类组成的。

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

  1. /**
  2. * 定义一个发布天气的服务
  3. * @author ziqiang
  4. *
  5. */
  6. @WebService
  7. public interface IweatherService {
  8. /**
  9. * 返回天气
  10. * @param cityCode
  11. * @param date
  12. * @return
  13. */
  14. List<Map<String, Object>> getweatherByCity(String cityCode);
  15. }
然后定义一个实现类实现我们需要发布的服务

  1. package com.webservice.service;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.jws.WebService;
  7. import net.sf.json.JSONArray;
  8. @WebService(endpointInterface="com.webservice.service.IweatherService",serviceName="WeatherService")//指定webservice所实现的接口以及服务名称
  9. public class WeatherService implements IweatherService {
  10. @Override
  11. public String getweatherByCity(String cityCode) {
  12. List<Map<String, Object>> weatherList=new ArrayList<>();
  13. if (cityCode.equals("110000")) {//北京
  14. Map<String, Object> tempMap=new HashMap<String, Object>();
  15. tempMap.put("温度", "20~30华氏摄氏度");
  16. Map<String, Object> cloudMap=new HashMap<String,Object>();
  17. cloudMap.put("天气", "多云转晴");
  18. weatherList.add(tempMap);
  19. weatherList.add(cloudMap);
  20. }
  21. String result=JSONArray.fromObject(weatherList).toString();
  22. return result;
  23. }
  24. }
服务端进行服务的发布

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

三、用SoapUI进行测试

下载soapUI

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

  1. <SOAP-ENV:Envelope
  2.  各种属性>
  3.  <SOAP:HEADER>
  4.  </SOAP:HEADER>
  5.  <SOAP:Body>
  6.  </SOAP:Body>
  7. </SOAP-ENV:Envelope>

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


四、其他方式进行测试

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


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/524605
推荐阅读
相关标签
  

闽ICP备14008679号