webService实例 没有对接esb(企业服务总线)的

  • Post author:
  • Post category:其他



webService简介


首先给大家介绍一下webservice,简单来说webService就是一种跨编程语言和跨操作系统的远程调用技术,通过webService规范实施的应用之间,就是无论所使用的语言或者协议是什么,都可以交换数据,这里给大家介绍一下不对接esb的,以前在银行用webservice的时候,服务端、客户端都得先向esb申请注册。

给大家先说个大体逻辑哈。比如两个系统对接,我们系统需要接过另一个系统的数据,并以后自己维护,但是维护的数据还要同步到另一个系统。

这样的话,另一个系统是不是就要作为服务端,我们系统作为客户端,当我们系统维护完数据的时候调服务端的接口,把数据推送给另一个系统,就比如我们调百度的接口(肯定我们是客户端,百度是服务端的)

大家先把客户端和服务端区分清楚。

WebService主要是由三大技术构成(xml,soap,wsdl)

xml: xml就不用说了把,一种标记语言,webService主要用它来封装数据的。

soap:一种简单的对象访问协议,WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议规定的。

WSDL: webService服务器端到最后都会生成一个WSDL文件,然后说明自己有啥服务可以对外调用,客户端拿着服务端生成的WSDL文件,来生成代码,然后调用客户端的接口。

***WebService交互的过程***就是,WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据。

给大家举个实例哈

我们来实现一个天气系统的案例,客户端发送城市名称,服务器端回应相应的天气。


服务端哈
1.  编写SEI(Service Endpoint Interface),SEI在webservice中称为portType,在java中就是普通接口 

public interface WeatherService {
    public String queryWeather(String cityName);
}```


写完接口是不是得写实现

2.  编写SEI实现类,此类作为webservice提供服务类 

@WebService     //@WebService表示该类是一个服务类,需要发布其中的public的方法
public class WeatherServiceImpl implements WeatherService {

    @Override
    public String queryWeather(String cityName) {
        System.out.println("获取城市名"+cityName);
        String weather="晴";    
        return weather;
    }
}

3.  第三步:发布服务,Endpoint类发布服务,publish方法,两个参数:1.服务地址;2.服务实现类 

public class WeatherServer {
    public static void main(String[] args) {
//发布服务用的
        
**Endpoint.publish("http://127.0.0.1:8888/weather", new WeatherServiceImpl());**
    }
}


4.然后你的地址加上?WSDL 去看看发布成功没只要输上能拿到就说明发布成功了



客户端

首先哈,拿到服务端的WSDL文件,可以通过cmd敲命令生成项目

wsimport -s . http://127.0.0.1:8888/weather?wsdl

然后开始干代码,总的来说就是调用服务端的接口,咱往里面传参数

2.编写客户端
public class WeatherClient {

    public static void main(String[] args) {
        //创建服务视图,视图是从wsdl文件的service标签的name属性获取
        WeatherServiceImplService weatherServiceImplService=new WeatherServiceImplService ();  

        //获取服务实现类,实现类从wsdl文件的portType的name属性获取
        WeatherServiceImpl weatherServiceImpl=weatherServiceImplService.getPort(WeatherServiceImpl.class); 
        //获取查询方法,从portType的operation标签获取
        String weather=weatherServiceImpl.queryWeather("北京");
        System.out.println(weather);

    }

}

这样就OK啦啦啦啦



版权声明:本文为qq_43257860原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。