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

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啦啦啦啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序不老丶我不老

你的鼓励是马歪创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值