赞
踩
webService作为SOA(Service-Oriented Architecture)服务架构,在工作中,我们可能经常会用到。那到底什么是WebService,以及基于什么样的实现。在这一篇我会简单描述,并结合在工作中使用SoapUI-5.2.0开发的一些见解与大家分享。
什么是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时,我们首先新建一个工程,并引入一些Jar包。
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
然后添加项目add wsdl输入我们上面发布的地址
-
-
- <SOAP-ENV:Envelope
- 各种属性>
- <SOAP:HEADER>
- </SOAP:HEADER>
- <SOAP:Body>
- </SOAP:Body>
- </SOAP-ENV:Envelope>
在Body下面有传参,我们可以输入参数,然后就可以看到返回给我们的参数了。
除了SOAP我们可以进行webService的测试外,我们还可以通过新建一个webservice-client来进行测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。