前言
有一段时间没有好好学习了,因为遇到一些糟心的事情,上班一直在划水摸鱼,本来打算摸鱼摸到事情尘埃落定。但想到与其摸鱼,还不如多学习点东西,不断的成长提升自己。
webservice 简介
webservice:一种跨语言和跨平台的远程调用技术,即 JAVA 应用程序可以通过 websrvice 调用 PHP 或者 Python 等程序提供的服务,反之亦然。
实现一个 webservice 需要了解它的几个重要点(SOAP,WSDL,UDDI)
SOAP
简单来说: SOAP = HTTP + XML 就是一个简单的数据交换协议
客户端通过发送一个 HTTP 请求,这个 HTTP 请求里面包含一个 XML,服务端接收到请求后解析这个 XML 然后来调用对应的服务和方法,返回对应的数据。
WSDL
简单来说:WSDL 就是告诉调用者应该怎么填写 SOAP 当中的 XML 文件里面的内容。服务端具体提供了什么服务,该怎么调用这个服务,该传递什么类型的参数。会返回什么类型的数据等等。
UDDI
简单来说:UDDI 是用于描述、发现、集成 Web Service 的技术。
webservice 相关框架
- JWS:JAVA 语言对 WebService 服务的一种实现,可以用于开发以及发布 webservice 服务。
- Axis2:一个重量级的 webservice 框架,功能强大。
- CXF:一个基于 XFire 改造后的 webservice 框架,高性能,开发比较方便。
webservice 接口和 http 接口的区别
web service 相对 http (post/get)
1.接口中实现的方法和要求参数一目了然
2.不用担心大小写问题
3.不用担心中文 urlencode 问题
4.代码中不用多次声明认证(账号,密码)参数
5.传递参数可以为数组,对象等...
6.由于要解析 XML,效率相对较慢。
7.在对参数要求不严谨的情况下完全可以由 HTTP 请求代替。
一个简单的 webservice 服务
通过 JAVA 自带的 JWS 发布一个 webservice 服务。
客户端代码:
1 在类上加上注解:@webservice 表明这是一个 webservice 服务
@WebService
public class DemoWebServiceImpl {
@Override
@WebMethod
public String getName(Integer code) {
if(code==1){
return "张三";
}
return "李四";
}
}
2 通过 Endpoint 发布一个 webservice 服务。
public static void main(String[] args) {
//设置webservice地址
String address = "http://192.168.15.234:9090/webservice";
//发布webservice
Endpoint.publish(address , new DemoWebServiceImpl());
System.out.println("hello world");
}
3 在浏览器当中输入地址:http://192.168.15.234:9090/webservice?wsdl 如果返回一个 xml 就表明发布成功了。
在返回的 xml 当中每个方法对应一个 XSD 地址。在浏览器当中输入对应的 xsd 地址就可以看到该方法需要的参数和返回的值类型。
服务端调用:
通过测试工具 SOAPUI 进行模拟调用。创建对应 soap,然后找到方法,设置参数,发送请求就可以了。
一个简单的 webservice 服务就搞定了。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于