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>

下一篇[未完待續]


分享到:


相關文章: