|
|
|
HttpClient. Не работает timeout
|
|||
|---|---|---|---|
|
#18+
Есть проблема: Есть сервер который по REST api отдает определенную инфу. Есть клиент который по помощью Apache HttpClient отправляет на сервер запросы. Таймауты на клиенте выставляются и для соединения и для сокета. Код: java 1. 2. 3. 4. И вот тут происходит непонятное: если на сервере код, который формирует ответ (достает инфу из базы) зависает, на клиенте не срабатывает таймаут. Еще понятно почему не срабатывает таймаут на соединение - соединение успешно получено, но данных нет. Почему не срабатывает таймаут на сокет? или он начнет отсчет только когда начнется передача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 19:03:58 |
|
||
|
HttpClient. Не работает timeout
|
|||
|---|---|---|---|
|
#18+
SergeyAKM, наверно потому что клиент не знает что сервер упал. А узнать он не может потому что некому сообщить. А некому сообщить потому что сервер упал. Рекурсия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 19:49:50 |
|
||
|
HttpClient. Не работает timeout
|
|||
|---|---|---|---|
|
#18+
maytonSergeyAKM, наверно потому что клиент не знает что сервер упал. А узнать он не может потому что некому сообщить. А некому сообщить потому что сервер упал. Рекурсия... То есть вы хотите сказать, что чтобы на клиенте при запросе на сервер было выброшено исключение java.net.SocketTimeoutException, сервер должен послать команду? Серьезно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 20:17:37 |
|
||
|
HttpClient. Не работает timeout
|
|||
|---|---|---|---|
|
#18+
Я шучу. Это мозговой штурм чтобы встряхнуть мозги. А как ты вообще проверял? По этому фрагменту кода, даже не очевидно что у тебя соединение успешно получено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 20:30:43 |
|
||
|
HttpClient. Не работает timeout
|
|||
|---|---|---|---|
|
#18+
mayton, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Естественно это не боевой код, опушены catch и т.д. Но код рабочий, так как в нормальной ситуации данные возвращаются. И когда сервер медленно отдает данные иногда выскакивает SocketTimeoutException. Просто для отладки на сервере в метод поднятия данных с БД поставили большой sleep , и выяснялось что клиент при этом тоже виснет на client.execute(request). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 20:52:04 |
|
||
|
HttpClient. Не работает timeout
|
|||
|---|---|---|---|
|
#18+
строчка Код: java 1. лишняя, ее нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 20:54:41 |
|
||
|
HttpClient. Не работает timeout
|
|||
|---|---|---|---|
|
#18+
SergeyAKM, а что wireshark показывает? Может сервер пишет что-то в сокет но медленно? Или синк пакеты туда сюда бродят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 21:01:59 |
|
||
|
HttpClient. Не работает timeout
|
|||
|---|---|---|---|
|
#18+
забыл ник, не смотрел, это хорошая идея, завтра обязательно посмотрю. По поводу таймаута на сокет где-то читал, что срабатывает когда время между получением пакетов превышает заданное. Тут получается сокет открыт, но пакеты не пошли поэтому и не срабатывает. Может это баг библиотеки, и таймер включается с приходом первого пакета? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 21:14:34 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=194&tid=2127968]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 376ms |

| 0 / 0 |
