我正在嘗試為 webServiceTemplate 設定超時,但是當我執行marshalSendAndReceive()超時時會忽略。請求大約需要 5 秒,但在 coinfiguration 中我設定了 5 毫秒。我嘗試使用HttpComponentsMessageSender而不是HttpWebServiceMessageSenderBuilder,但它也沒有效果。那么有沒有辦法解決這個問題呢?
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setPackagesToScan(applicationProps.getPackagesToScan());
return marshaller;
}
@Bean
public WebServiceTemplate webServiceTemplate(final WebServiceTemplateBuilder builder) {
return builder.setMarshaller(marshaller()).setUnmarshaller(marshaller())
.messageSenders(List.of(
new BasicAuthHttpsConnectionMessageSender(props.getUsername(), props.getPassword()),
new HttpWebServiceMessageSenderBuilder()
.setConnectTimeout(Duration.ofMillis(5))
.setReadTimeout(Duration.ofMillis(5)).build()
)).build();
}
uj5u.com熱心網友回復:
這里,
new HttpWebServiceMessageSenderBuilder()
.setConnectTimeout(Duration.ofMillis(5))
.setReadTimeout(Duration.ofMillis(5)).build();
您需要提供較長的持續時間,即Duration.ofMillis(500)現在您可以看到效果。所以就像
new HttpWebServiceMessageSenderBuilder()
.setConnectTimeout(Duration.ofMillis(500))
.setReadTimeout(Duration.ofMillis(500)).build();
5 的持續時間millis很短,所以你不會注意到它。看這里
uj5u.com熱心網友回復:
而不是使用 Duration.ofMillis(5) 只需使用 setConnectTimeout(5)
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setPackagesToScan(applicationProps.getPackagesToScan());
return marshaller;
}
@Bean
public WebServiceTemplate webServiceTemplate(final WebServiceTemplateBuilder
builder) {
return builder.setMarshaller(marshaller()).setUnmarshaller(marshaller())
.messageSenders(List.of(
new BasicAuthHttpsConnectionMessageSender(props.getUsername(), props.getPassword()),
new HttpWebServiceMessageSenderBuilder()
.setConnectTimeout(5)
.setReadTimeout(5).build()
)).build();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/336927.html
