Web Service 介绍及实现方式

        随着企业之间联系的不断紧密,企业之间的系统服务也不断接受新的挑战。例如一个金融公司与一家大数据公司展开了合作,金融公司需要调用大数据公司的数据来完成自身业务的开展。那么服务之间的调用是怎么实现呢?Http可以实现,但我觉得web service 是讨论这类问题时不能避开的一个答案。

        Web Service我的理解是更接近一种规范了,实现了这套规范的系统,可以互相之间交互数据已完成业务上的调用。它的特点有跨语言、跨平台,能够实现不同语言之间的互联互通。归结一句话:Web Service就是一种跨编程语言和跨操作系统平台的远程调用技术。

        Web Service遵从的协议叫做SOAP协议,全称叫做 Simple Object Access Protocol,简单对象访问协议。Web Service服务传输的数据格式是XML形式组织的,通过HTTP协议发送和接收结果。因此我们可以简便的理解为:SOAP协议=HTTP协议+XML数据格式。

       还有一个重要概念要提,就是WSDL( Web Services Description Language ),发布好一个web service 服务后怎么检查服务是否正常,答案就是查看WSDL文件。查看方式通常是在浏览器中打开服务的发布地址,然后后面加上 .wsdl即可。

        下面我们发布个简单的服务。

        服务端代码如下:

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class HelloService {
    private String sayHello(String name) {
        System.out.println("hello " + name);
        return "Hello " + name;
    }

    @WebMethod
    public String sayHi(String name) {
        return this.sayHello(name);
    }

    public static void main(String[] args) {
        Endpoint.publish("http://localhost:8081/sayhi", new HelloService());
    }
}

        代码和明晰,HelloService 是一个Web Service服务类,它对外提供了一个调用方法:sayHi。main函数中,我们用Endpoint来发布这个服务,发布方法的参数是地址、服务实例。

        话不多述,启动main函数。在浏览器中输入地址:http://localhost:8081/sayhi?wsdl,我们看浏览器返回结果:

9aa97e622556dd24d82e8e84b3b6eda7de1.jpg

        说明我们的服务发布成功,可以供外部调用了。

下来我们看外部系统如何调用这个服务。

在创建一个客户端工程。然后打开cmd命令行工具,使用jdk自带的客户端代码生成工具wsimport,生成客户端代码。生成方式如下:

11fddb38b637494402ba9f175e6976f5279.jpg

我当前目录在e盘,-s表示生成源码即java文件,-p用来指定包结构。执行命令即可生成代码了。

执行后我的E盘下生成情况如图:

f079c836e258016269a5e9e1a85050c5a7c.jpg

我们把java文件拷贝到客户端工程中去。

ddc7c061ea0ed767cbff7e4c90cd3b0d3d4.jpg

编写调用类ServiceClient:

public class ServiceClient {
    public static void main(String[] args) {
        HelloServiceService service = new HelloServiceService();

        HelloService service2 = service.getHelloServicePort();

        String result = service2.sayHi("Wrold");
        System.out.println(result);

    }
}

执行查看结果:fa0ccb2a0349470f4bc4c18b166f6c0ca95.jpg

需要特别注意的是wsimport那个定义包结构的参数,一定要输入正确。

 

转载于:https://my.oschina.net/u/3293327/blog/3036398

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值