随着企业之间联系的不断紧密,企业之间的系统服务也不断接受新的挑战。例如一个金融公司与一家大数据公司展开了合做,金融公司须要调用大数据公司的数据来完成自身业务的开展。那么服务之间的调用是怎么实现呢?Http能够实现,但我以为web service 是讨论这类问题时不能避开的一个答案。java
Web Service个人理解是更接近一种规范了,实现了这套规范的系统,能够互相之间交互数据已完成业务上的调用。它的特色有跨语言、跨平台,可以实现不一样语言之间的互联互通。归结一句话:Web Service就是一种跨编程语言和跨操做系统平台的远程调用技术。web
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,咱们看浏览器返回结果:大数据
说明咱们的服务发布成功,能够供外部调用了。this
下来咱们看外部系统如何调用这个服务。spa
在建立一个客户端工程。而后打开cmd命令行工具,使用jdk自带的客户端代码生成工具wsimport,生成客户端代码。生成方式以下:
我当前目录在e盘,-s表示生成源码即java文件,-p用来指定包结构。执行命令便可生成代码了。
执行后个人E盘下生成状况如图:
咱们把java文件拷贝到客户端工程中去。
编写调用类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); } }
执行查看结果:。
须要特别注意的是wsimport那个定义包结构的参数,必定要输入正确。