2015-01-02 2 views
4

Действительно ли HTTPBuilder в резьбе Grails?Насколько безопасен поток HTTPBuilder от Grails?

Если HTTPBuilder подключен к классу сервиса Grails, будет ли он безопасен в использовании? Или он должен быть создан при каждом вызове?

Кажется, нет конкретного ответа относительно того, является ли HTTPBuilder в Grails потокобезопасным или нет. Я склонен пойти с непобедимым из-за отсутствия документации по этому конкретному аспекту, но я бы хотел получить окончательный ответ.

Код, похоже, указывает, что должно быть нормально обрабатывать несколько запросов из нескольких потоков, если они перейдут на тот же URL-адрес с тем же контекстом (заголовки, аутентификаторы и т. Д.).

+0

Передано влево, потому что? – Thihara

+0

Приобретено, потому что. –

ответ

3

Возможно, вы имели в виду groovyx.net.http.HTTPBuilder? Он имеет несколько полей, которые изменяются с помощью методов вызова, и нет синхронизации или блокировки, и нет использования потокобезопасных коллекций или других классов, поэтому нет, это очень безопасно для потоков. Большинство строителей схожи с состоянием, и их следует считать небезопасными.

+0

Какие поля фактически изменены вызывающими методами, отличными от конструкторов? Существует AsyncHttpBuilder http://groovy.codehaus.org/modules/http-builder/doc/async.html, который расширяет HttpBuilder, отправляя вызовы в threadpool и используя диспетчер соединений потоковой сети. Но, если поля HttpBuilder были изменены путем вызова методов, то это не сработало бы ... –

+0

Множество :) Один пример - 'setHeaders' называет' clear' на 'defaultRequestHeaders', который является экземпляром' StringHashMap', простой подкласс «HashMap». Также существует несколько мутаторов, например. 'setEncoderRegistry',' setParserRegistry' и т. д. –

+0

Правильно, но вам придется явно их называть. Поэтому я предполагаю, что если вы делаете запрос SAME с одинаковыми заголовками, он может работать. Хотя 'getClient' тоже ленив, что может создать некоторые проблемы. Тогда AsyncHTTPBuilder немного вводит в заблуждение. –

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