Web Service,即“Web 处事”,简写为 WS,从字面上领略,它其实就是“基于 Web 的处事”。而处事却是两边的,有处事需求方,软件开发,就有处事提供方。处事提供方对外宣布处事,处事需求方挪用处事提供方所宣布的处事。其实也就是这些了,没有几多高峻上的对象。
本文将从实战的角度,描写利用 Java 开拓 WS 的东西及其利用进程。
假如说得再专业一点,WS 其实就是成立在 HTTP 协议上实现异构系统通讯的东西。没错!WS 说白了照旧基于 HTTP 协议的,也就是说,数据是通过 HTTP 举办传输的。
自从有了 WS,异构系统之间的通讯不再是遥不行及的空想。好比:可在 PHP 系统中挪用 Java 系统对外宣布的 WS,获取 Java 系统中的数据,可能把数据推送到 Java 系统中。
假如您想相识更多关于 WS 的那些观念与术语,可以看看下面的百度百科:
http://baike.baidu.com/view/67105.htm
本日我想与各人分享的主题是,如安在 Java 中宣布与挪用 WS?但愿本文可以或许对您有所辅佐!
1. 利用 JDK 宣布 WS
第一步:您要做的第一件工作就是,写一个处事接口。
<!-- lang: java --> package demo.ws.soap_jdk; import javax.jws.WebService; @WebService public interface HelloService { String say(String name); }
在接口上放一个 WebService 注解,说明该接口是一个 WS 接口(称为“Endpoint,端点”),个中的要领是 WS 要领(称为“Operation,操纵”)。
第二步:实现这个 WS 接口,在实现类中完成详细业务逻辑,为了简朴,我们照旧写一个 Hello World 意思一下吧。
<!-- lang: java --> package demo.ws.soap_jdk; import javax.jws.WebService; @WebService( serviceName = "HelloService", portName = "HelloServicePort", endpointInterface = "demo.ws.soap_jdk.HelloService" ) public class HelloServiceImpl implements HelloService { public String say(String name) { return "hello " + name; } }
第三步:写一个 Server 类,用于宣布 WS,劳务派遣管理系统,直接利用 JDK 提供的东西即可实现。
<!-- lang: java --> package demo.ws.soap_jdk; import javax.xml.ws.Endpoint; public class Server { public static void main(String[] args) { String address = "http://localhost:8080/ws/soap/hello"; HelloService helloService = new HelloServiceImpl(); Endpoint.publish(address, helloService); System.out.println("ws is published"); } }
只需利用 JDK 提供的 javax.xml.ws.Endpoint 即可宣布 WS,只需提供一个 WS 的地点(address),还需提供一个处事实例(helloService)。
此刻您就可以运行 Server 类的 main 要领了,会在节制台里看到“ws is published”的提示,此时恭喜您,WS 已乐成宣布了!
第四步:打开您的欣赏器,在地点栏中输入以下地点:
http://localhost:8080/ws/soap/hello?wsdl
留意:以上地点后头有一个 ?wsdl 后缀,在 Server 类中的 address 里却没有这个后缀。此时,在欣赏器中会看到如下 XML 文档:
当看到这份 WSDL 文档时,也就意味着,您宣布的 WS 处事此刻可以被别人利用了。
2. 通过客户端挪用 WS
第一步:利用 JDK 提供的呼吁行东西生成 WS 客户端 jar 包。
JDK 安装目次下有个 bin 目次,内里存放了大量的呼吁行东西,只要您的 Path 情况变量指向了该路径,就能在呼吁节制台上利用 JDK 提供的相关呼吁。
个中,有一个名为 wsimport 的呼吁行东西,正是用来通过 WSDL 生成 WS 客户端代码的,您只需要输入以下呼吁即可:
wsimport http://localhost:8080/ws/soap/hello?wsdl jar -cf client.jar . rmdir /s/q demo
对以上三行呼吁表明如下:
最终您将会获得一份名为 client.jar 的 jar 包,将这个 jar 包设置到您的 classpath 中,软件开发,利便在下面的代码中利用个中的类。
能力:可以将以上三行呼吁放入一个 bat 文件中,在 Windows 中双击即可运行。
第二步:写一个 Client 类,用于挪用 WS,需要利用上一步生成的 WS 客户端 jar 包。
<!-- lang: java --> package demo.ws.soap_jdk; public class Client { public static void main(String[] args) { HelloService_Service service = new HelloService_Service(); HelloService helloService = service.getHelloServicePort(); String result = helloService.say("world"); System.out.println(result); } }