установить время ожидания для загрузочного приложения WebSphere Spring - PullRequest
0 голосов
/ 31 октября 2019

Я использую приложение весенней загрузки, которое работает на сервере LibertyCode,

У меня есть веб-сервер, настроенный с таймаутом:

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

, он отлично работает на моей локальной машине(на основе tomcat без веб-сферы), но когда я запускаю войну на сервере WebSphere, тайм-аут был , игнорируется ! это функции, используемые в моем 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>

Любая помощь, пожалуйста

1 Ответ

2 голосов
/ 01 ноября 2019

Можете ли вы попробовать изменить <feature>restConnector-1.0</feature> на <feature>restConnector-2.0</feature>? Я думаю, что разъем 1.0 пропускает JAX-RS - в основном, включая его для приложения - даже если вы упаковываете свою собственную версию JAX-RS, CXF и т. Д. Когда это происходит, вы получаете версию JAX-RS Liberty (которая основана наCXF, но не позволяет пользователям загружать классы реализации, специфичные для CXF) для API и, возможно, даже некоторые классы реализации. Кроме того, я думаю, что функция restConnector-1.0 использует более старую версию JAX-RS, которая может не поддерживать время ожидания подключения и чтения.

Если переход к restConnector-2.0 не работает, то я бы предложил явно добавитьфункция jaxrs-2.1, а затем использование API-интерфейсов JAX-RS вместо специфичных для реализации 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();

Надеюсь, это поможет!

...