下一篇[未完待續]
<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薺薺菜 的文章