WebService远程调用技术

转载至:https://www.cnblogs.com/taotingkai/p/6694583.html

何为远程调用?

远程调用就是一个系统远程调用另一个系统的服务,已达到获取远程系统的业务数据的目的。

为什么使用?

基于安全性考虑,一般企业不会开放自己的数据库,只能使用远程调用技术。

WebService远程调用技术
二、WebService如何实现远程调用?三要素在其中的作用

(1)WebService原理:WebService是一种使用http传输的SOAP协议的数据的远程调用技术。

(2)WSDL作用:webService服务端的使用说明书

(3)SOAP作用:规范XML标签

(4)UDDI:提供webService服务端的搜索和注册功能。

开发注意事项:

1.开发webService的应用需要开发客户端和服务端

2.发客户端需要参考webService服务端的使用说明书(WSDL)

WebService远程调用技术

三、WebService入门程序

(1)服务端

第一步:创建SEI(service endpoint interface)接口,本质就是Java接口

public interface WeatherInterface{

public String queryWeather(String name);

}

第二步:创建SEI实现类

在该类上加上注解:@WebService
该注解表示该类是一个webService的服务类,要发布该类下public方法     
   @WebService

public class WeatherInterfaceImpl implements WeatherInterface{

@Override

public String queryWeather(String name){

System.out.println(“from client…”+name);

String weather = “晴”;

return weather;

}

}

第三步:发布服务

用Endpoint类的publish方法发布服务
方法publish两个参数:1.服务地址;2.服务实现类的实现    
   public class WeatherServer{

public static void main(String[] args){

//用Endpoint类的publish方法发布服务

//端口号建议不要太短,容易被系统占用;不要太长,太长不支持

Endpoint.publish(“http://127.0.0.1:12345/weather”,new WeatherInterfaceImpl());

}

}

第四步:测试服务是否发布成功,通过阅读服务端的使用说明书,确定关键元素存在(类/ 方法/参数等),表示服务发布成功

WSDL阅读方式:从下往上找到server标签,确定bingding属性

注意:

发布SOAP1.2服务端

第一步:在实现类上加上如**解

@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)

第二步:引入第三方插件的jar包(jaxws-ri-2.2.8)

第三步:重启服务端

(2)客户端(好几种方法实现)

开发步骤:

第一步:wsimport命令生成客户端代码。

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

第二步:创建服务视图,服务视图名的类从service标签的name属性获取

第三步:通过服务视图获取对应服务实现类的实例,服务实现类的名称从portType的name属性获取

第四步:调用查询方法,方法名从operation下的name属性获取

public class WeatherClient{

main方法{

//创建服务视图

WeatherInterfaceImplService wiis = new WeatherInterfaceImplService();

//获取服务实现类的实例

String weather = weatherInterfaceImpl.queryWeather(“北京”);

System.out.println(weather);

}

}

四、WebService优缺点

优点:

跨域防火墙,使用http协议,http协议的默认端口是80,防火墙默认是不拦截80端口

跨平台,使用http和XML,这两个协议都是跨平台

支持面向对象编程

缺点:

WebService使用XML标签传输数据,发送数据时XML标签也必须发送,标签又要遵循SOAP协议,随之SOAP协议的完善,标签越来越多,传输效率下降,性能差。

五、使用场景

发布一个服务,客户端类型未知,不考虑性能,建议使用webservice

服务端已确定使用webservice,客户端无法更改

不适用场景:

考虑性能时不建议使用webService