Spring Boot中文参考指南(2.1.6)47、WebSockets

下一篇[未完待续]

Spring Boot中文参考指南(2.1.6)47、WebSockets/48、Web 服务

<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:

Spring Boot中文参考指南(2.1.6)47、WebSockets/48、Web 服务

<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 )

以下代码展示了一个典型示例:

Spring Boot中文参考指南(2.1.6)47、WebSockets/48、Web 服务

<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。你还可以自定义读取和连接超时,如下所示:

Spring Boot中文参考指南(2.1.6)47、WebSockets/48、Web 服务

<code>@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplateBuilder builder) {
return builder.messageSenders(new HttpWebServiceMessageSenderBuilder()
.setConnectTimeout(5000).setReadTimeout(2000).build()).build();
}/<code>

下一篇[未完待续]


分享到:


相關文章: