2010-09-24 4 views
0

У меня есть несколько конкретных вопросов о веб-сервисов (SOAP через HTTP):SOAP через HTTP Web Services и таймаутов

  1. клиент вызывает веб-службы. Если в середине вызова клиент завершает свое собственное подключение, сервер знает, что соединение было прекращено?
  2. Это больше вопрос по HTTP. Возможно ли, чтобы клиент вызывал веб-службу и был вынужден ждать некоторое количество времени до того, как фактически произойдет обработка? Например, если у меня есть веб-сервис, сгенерированный на сервере, возможно ли, чтобы звонок застрял, прежде чем он ударил мой код реализации? Возможно, пул потоков для сервлетов слишком занят? Я приравниваю это к тому, когда веб-сайт захлопнулся от трафика (т. Е. Эффект Slashdot).

Большое спасибо!

ответ

0

1) Да, когда вы думаете об HTTP (который почти во всех случаях превышает Tcp), клиент close() будет запускать закрытие связи, и соединение с сервером будет выпущено (см. Также Tcp protocol).

2) Для большинства реализаций сервера максимальный размер параллельных работников (например, размер пула потоков). Вот почему длительное время выполнения сервера может быть плохим, потому что оно блокирует входящий запрос, если все потоки заняты (и клиенты снова загружаются, что делает его еще более серьезным). Способ справиться с этим - установить тайм-ауты (как на стороне клиента, так и на стороне сервера). Поиск правильного тайм-аута не является тривиальным, это сильно зависит от вашего прецедента.

Смежные вопросы