WebSphere Spring引导应用程序的设置超时时间

问题描述 投票:0回答:1

我正在使用在LibertyCode服务器上运行的spring boot应用程序,

我有一个配置了超时的Web服务器:

ClientConfig configuration = new ClientConfig();
        configuration.property(ClientProperties.CONNECT_TIMEOUT, connecTimeout);
        configuration.property(ClientProperties.READ_TIMEOUT, readTimeout);
        apiClient = ClientBuilder.newClient(configuration);
        WebTarget target = apiClient.target(uri);
        Response response = target.request(MediaType.APPLICATION_JSON_VALUE).header("accept", "application/json")
                .header("Content-Type", "application/json").get();

它在我的本地计算机上完美运行(基于没有Websphere的tomcat)但是当我在WebSphere服务器上进行战争时,超时是ignored!这就是我的server.xml

中使用的功能
   <feature>localConnector-1.0</feature>
        <feature>restConnector-1.0</feature>
        <feature>beanValidation-1.1</feature>
        <feature>adminCenter-1.0</feature>
        <feature>transportSecurity-1.0</feature>

请任何帮助

spring-boot jax-rs websphere
1个回答
0
投票

您可以尝试将<feature>restConnector-1.0</feature>更改为<feature>restConnector-2.0</feature>吗?我认为1.0连接器会泄漏JAX-RS-基本上将其包括在应用程序中,即使您打包自己的JAX-RS和CXF版本,等等。发生这种情况时,您会得到Liberty的JAX-RS版本(基于CXF,但不允许用户为API甚至可能为某些实现类加载特定于CXF的实现类。此外,我认为restConnector-1.0功能使用的JAX-RS较旧版本可能不支持连接和读取超时。

如果移至restConnector-2.0无效,那么我建议显式添加jaxrs-2.1功能,然后使用JAX-RS API而非特定于实现的API。它看起来像:

Client apiClient = ClientBuilder.newBuilder()
                                .connectTimeout(connecTimeout)
                                .readTimeout(readTimeout)
                                .build();
WebTarget target = apiClient.target(uri);
Response response = target.request(MediaType.APPLICATION_JSON)
                          .header("Content-Type", MediaType.APPLICATION_JSON)
                          .get();

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.