2013-12-22 5 views
0

Если вы указали пользовательский обработчик, чтобы вернуть его, что он делает? Остановляет ли она цепочку/поток? Если да, то как долго? Как это влияет на общий поток? CONTINUE и ABORT достаточно понятны, но этот ответ я не могу понять.Axis 2: что делает InvocationResponse.SUSPEND?

ответ

0

Подробнее о каждом статусе обработчика возвращается двигатель внутренней оси.

(1) InvocationResponse.CONTINUE

Это дает сигнал для продолжения процесса выполнения сообщения.

(2) InvocationResponse.SUSPEND

Это означает, что сообщение не может продолжаться, как некоторые из условий не выполняется еще, так что вам нужно, чтобы приостановить выполнение и ждать.

Например, может быть обработчик, который приостанавливает выполнение и сохраняет контекст сообщения, а когда условия выполняются, пересылайте сообщение. Лучшим примером для этого является надежная передача сообщений (RM), она работает с последовательностью сообщений. Если вызов службы состоит из более одного сообщения и , если второй идет до первого, обработчик RM приостанавливает выполнение вызова сообщения, соответствующего второму сообщению, до тех пор, пока оно не получит . Когда он получит первое сообщение, RM будет вызывать это, а затем после этого он будет вызывать (или возобновлять) второе сообщение и т. Д.

Таким образом, период времени приостановки будет до тех пор, пока не будут выполнены условия до/как объясняется в сценарии РМ.

(3) InvocationResponse.ABORT

Что-то пошло не так, поэтому вам нужно удалить сообщение и пусть инициатор знают об этом

+0

Так это означает, что, когда обработчик возвращает 'InvocationResponse.SUSPEND' , операция приостанавливается до тех пор, пока не будет получено другое сообщение? Помимо получения другого сообщения, какие другие возможные события могут спровоцировать возобновление работы? –

+0

В сценарии RM он ожидает сообщения следующего последовательного сообщения, если не будет ожидаемого сообщения, то InactivityTimeout достигнет, а затем очистит поток, в нашем сценарии RM нет смысла возобновлять поток, если никаких предварительных условий не выполняется, например сообщение ожидаемая последовательность. Надеюсь, вы поймете эту идею. – jayalalk

+0

Да, я думаю, у меня появилась идея RM. Я просто пытаюсь понять, как будет выглядеть фактическая реализация. Как еще одна операция сможет сказать, что ранее приостановленная операция возобновилась? Что представляет собой операцию в первую очередь: поток, постоянный «MessageContext» и т. Д.? –

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