下一篇[未完待续]
<code>英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-websockets.html/<code>
<code>英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-webservices.html/<code>
<code>GitHub:https://github.com/jijicai/Spring/tree/master/spring-boot/<code>
47、WebSockets
Spring Boot 为嵌入式 Tomcat、Jetty 和 Undertow 提供 WebSockets 自动配置。如果你将一个 war 文件部署到一个独立的容器中,Spring Boot 假设该容器负责其 WebSocket 支持的配置。
Spring Framework 为可以通过 spring-boot-starter-websocket 模块轻松访问的 MVC web 应用程序提供了丰富的 WebSocket 支持。(https://docs.spring.io/spring/docs/5.1.8.RELEASE/spring-framework-reference/web.html#websocket )
WebSocket 支持也可用于反应式 web 应用程序,需要在 spring-boot-starter-webflux 中包含 WebSocket API:
<code><dependency>
<groupid>javax.websocket/<groupid>
<artifactid>javax.websocket-api/<artifactid>
/<dependency>/<code>
48、Web 服务
Spring Boot 提供 Web 服务自动配置,因此你只需定义端点即可。
使用 spring-boot-starter-webservices 模块可以轻松访问 Spring Web 服务功能。(https://docs.spring.io/spring-ws/docs/3.0.7.RELEASE/reference/ )
可以分别为你的 WSDLs 和 XSDs 自动创建 SimpleWsdl11Definition 和 SimpleXsdSchema bean。为此,配置它们的位置,如下面示例所示:
<code>spring.webservices.wsdl-locations=classpath:/wsdl/<code>
48.1、使用 WebServiceTemplate 调用 Web 服务
如果需要从应用程序调用远程 Web 服务,可以使用 WebServiceTemplate 类。由于 WebServiceTemplate 实例通常需要在使用之前进行自定义,因此 Spring Boot 不提供任何单个自动配置的 WebServiceTemplate bean。然而,它确实自动配置了一个 WebServiceTemplateBuilder,它可以在需要时用于创建 WebServiceTemplate 实例。(https://docs.spring.io/spring-ws/docs/3.0.7.RELEASE/reference/#client-web-service-template )
以下代码展示了一个典型示例:
<code>@Service
public class MyService {
private final WebServiceTemplate webServiceTemplate;
public MyService(WebServiceTemplateBuilder webServiceTemplateBuilder) {
this.webServiceTemplate = webServiceTemplateBuilder.build();
}
public DetailsResp someWsCall(DetailsReq detailsReq) {
return (DetailsResp) this.webServiceTemplate.marshalSendAndReceive(detailsReq, new SoapActionCallback(ACTION));
}
}/<code>
默认情况下,WebServiceTemplateBuilder 使用类路径上可用的 HTTP 客户端库来检测合适的基于 HTTP 的 WebServiceMessageSender。你还可以自定义读取和连接超时,如下所示:
<code>@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplateBuilder builder) {
return builder.messageSenders(new HttpWebServiceMessageSenderBuilder()
.setConnectTimeout(5000).setReadTimeout(2000).build()).build();
}/<code>
下一篇[未完待续]
閱讀更多 IT薺薺菜 的文章