2015-01-28 3 views
1

Отрывок из этого http://www.mulesoft.org/documentation/display/current/Configuring+Java+Components является:Mule Java компонентов и Потокобезопасная

When you specify the class directly on the component or pooled-component element, the PrototypeObjectFactory is used by default, and a new instance is created for each invocation, or a new pooled component is created in the case of the PooledJavaComponent

И я настроен класс Java в качестве компонента Mule Java, как показано ниже:

<component class="com.mycompany.SalesOrderProductsHandler" doc:name="Java" />. Класс SalesOrderProductsHandler реализовал org.mule.api.lifecycle.Callable и имеет одну переменную состояния с именем targetProductsIndex.

Мой вопрос следующим образом:

Будет ли новый экземпляр com.mycompany.SalesOrderProductsHandler получить каждый раз, когда создается новый запрос приходит?

ответ

1

Документация абсолютно правильная. С:

<component class="com.mycompany.SalesOrderProductsHandler" /> 

вы получите новый экземпляр com.mycompany.SalesOrderProductsHandler для каждого вызова.

+0

BTW Я подтвердил, что это все еще работает на Mule 3.6.0 :) –

+0

Просто для подтверждения: здесь каждый вызов означает каждый входящий запрос, не так ли? Если это правильно, могу ли я иметь какое-либо состояние в своем Java-компоненте, не беспокоясь о потокобезопасности? –

+1

«каждый вызов означает каждый входящий запрос» <- скорее всего, да, но, возможно, нет, если вы используете область «cache», «агрегатор» или другие процессоры сообщений маршрутизации ... И да, в этом случае ваш компонент может иметь состояние и не беспокойтесь о безопасности потоков. –

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