2016-07-10 1 views
0

У меня есть следующий код для HTTP таймаута поддержка:org.glassfish.jersey.client.ClientProperties таймауты не работают на WildFly

Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class); 
    client.property(ClientProperties.CONNECT_TIMEOUT, 1000); 
    client.property(ClientProperties.READ_TIMEOUT, 1000); 
    WebTarget target = client.target(url); 
    Response response = target.request(MediaType.APPLICATION_JSON_TYPE).post(null, Response.class); 

Он отлично работает для отдельного приложения Java. Он ждет 1000 мс для ответа, затем происходит java.net.SocketTimeoutException.

Мне нужно использовать этот код на WildFly 8.2.0. Проблема в том, что после 1000 мс ожидания ничего не происходит. Этот код ждет бесконечного времени. Я думаю, что ClientProperties.CONNECT_TIMEOUT и ClientProperties.READ_TIMEOUT не подходят для WildFly. Возможно, мне придется использовать другие константы. Кто-нибудь знает, в чем проблема?

ответ

2

ClientProperties - это особый класс джерси, его свойства специфичны для джерси. Wildfly использует RestEasy как поставщик JAX-RS.

Вы можете настроить Apache, лежащий в основе HttpClient здесь: https://docs.jboss.org/resteasy/docs/3.0.17.Final/userguide/html/RESTEasy_Client_Framework.html

Чтобы настроить тайм-аут в HTTPClient: https://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/

+0

Спасибо за ответ. Должен ли я переписать весь код (для http-запросов) и изменить зависимости из-за констант ClientProperties? (Несмотря на то, что HTTP-запросы выполнены правильно). Кажется немного странным :( –

+1

Ну, вы используете определенное поведение. Обычно я создаю метод-производитель и провод в клиентах таким образом, что он касается только одной точки. –