Можем ли мы сделать веб-скрипт Alfresco Java потокобезопасным?

У меня есть веб-скрипт, для которого я не хочу делать несколько вызовов одновременно. Если я получаю несколько вызовов одновременно, я хочу выполнить веб-скрипт один за другим. Можем ли мы это сделать? Если да, объясните процесс.

Заранее спасибо!


person Sheljith krishnan    schedule 13.07.2016    source источник
comment
Добро пожаловать в StackOverflow. Вопросы, требующие помощи в отладке (почему этот код не работает?), должны включать желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для их воспроизведения, в самом вопросе. Вопросы без четкой формулировки проблемы бесполезны для других читателей. См. раздел Как создать минимальный, полный и проверяемый пример.   -  person Marcos Pérez Gude    schedule 13.07.2016
comment
Добавить синхронизированный блок обычным способом Java?   -  person Gagravarr    schedule 13.07.2016


Ответы (2)


Вы можете вызвать метод с аннотацией синхронизации в файле executeImp веб-скрипта.

person izodev    schedule 13.07.2016
comment
спасибо, это действительно решило мою проблему.. Извините за задержку повтора, был занят другими делами.... - person Sheljith krishnan; 03.10.2016

Сначала используйте requiresnew в определении веб-скрипта. Это гарантирует, что каждый вызов находится в своей собственной транзакции, и у вас не возникнет проблем с откатом и т. д.

В большинстве случаев это решит все ваши проблемы. Если нет, то вы, вероятно, решаете проблему не с той стороны, и вам понадобится очередь перед Alfresco, например ActiveMQ.

person Tahir Malik    schedule 13.07.2016
comment
Это решение не гарантирует выполнение одного за другим. И я думаю, что Alfresco создает новую транзакцию для каждого вызова веб-скрипта, даже если requirenew не установлен - person izodev; 13.07.2016
comment
Нет, это не так, и это часть одной большой сделки. Единственный способ убедиться в этом — установить для него значение requirednew. И если вы используете ActiveMQ и, таким образом, используете механизм очереди, вы можете быть уверены, что они выполняются друг за другом. - person Tahir Malik; 13.07.2016