继续翻译:本指南将指导您使用Spring使用基于SOAP的Web服务。您将构建一个客户端,该客户端使用SOAP从基于WSDL的Webservice服务获取国家数据。您将能够根据某个国家的名称查询该国家的数据。
SOAP(简单对象访问协议)是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息,采用了两个协议:HTTP 和XML(标准通用标记语言下的一个子集)。HTTP用于实现 SOAP 的RPC 风格的传输, 而XML 是它的编码模式。
我利用业余时间,翻译了Spring官网的例子,方便中文不好的同学,将陆续发到头条上,欢迎大家关注,也可以上我个人BLOG:itmanclub.com,上面有已经翻译过的。
![f093f6e585c940768fb4b25dc6bec308.png](https://img-blog.csdnimg.cn/img_convert/f093f6e585c940768fb4b25dc6bec308.png)
程序结构
└── src └── main └── java └── hello
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework gs-consuming-web-service 0.1.0org.springframework.boot spring-boot-starter-parent 2.1.6.RELEASE1.8org.springframework.boot spring-boot-starter org.springframework.ws spring-ws-core org.springframework.boot spring-boot-maven-plugin org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 0.12.3generateWSDLhello.wsdlhttp://localhost:8080/ws/countries.wsdl
Spring Boot将会你做如下的事:
- 将 classpath 里面所有用到的jar包构建成一个可执行的 JAR 文件,方便执行你的程序
- 搜索public static void main()方法并且将它当作可执行类
- 根据springboot版本,去查找相应的依赖类版本,当然你可以定义其它版本。
在本地运行目标Web服务
按照指南中的步骤操作,或者只拷贝存储库并从其完整目录运行服务(例如,使用mvn spring-boot:run)。您可以通过在浏览器中访问http://localhost:8080/ws/countries.wsdl来验证是否有效。
生成基于WSDL的域对象
SOAP Web服务的描述写在WSDL中。JAXB提供了一种从WSDL(或更确切地说,在WSDL的节中包含的XSD)生成Java类的简单方法。本次国家查询服务的WSDL可以在http://localhost:8080/ws/countries.wsdl上找到。
要从Maven中的WSDL生成Java类,需要在pon.xml中增加如下设置:
org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 0.13.1generateWSDLhello.wsdlhttp://localhost:8080/ws/countries.wsdl
此安装程序将为在指定的URL上找到的WSDL生成类,并将这些类放入hello.wsdl包中。
要对Gradle执行相同的操作,您的构建文件中将需要以下内容:
task genJaxb { ext.sourcesDir = "${buildDir}/generated-sources/jaxb" ext.classesDir = "${buildDir}/classes/jaxb" ext.schema = "http://localhost:8080/ws/countries.wsdl" outputs.dir classesDir doLast() { project.ant { taskdef name: "xjc