2016-07-13 20 views
0

Ich habe ein Webskript, für das ich nicht mehrere Anrufe gleichzeitig möchte. Wenn ich mehrere Anrufe gleichzeitig bekomme, möchte ich das Webscript nacheinander ausführen. Können wir das tun? Wenn ja, bitte erläutern Sie den Vorgang.Können wir Alfresco Java-Webscript threadsicher machen?

Vielen Dank im Voraus!

+1

Willkommen bei StackOverflow. Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein spezifisches Problem oder einen Fehler und den kürzesten Code enthalten, der für die Reproduktion in der Frage erforderlich ist. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve). –

+0

Hinzufügen eines synchronisierten Blocks in der üblichen Java-Art? – Gagravarr

Antwort

1

Sie können eine Methode mit der Annotation synchronisieren im executeImp des Webscripts aufrufen

+0

danke es hat wirklich mein Problem gelöst .. Sorry für die verzögerte Wiederholung, war mit einigen anderen Arbeiten beschäftigt .... –

2

Verwenden Sie zuerst die requiresnew in Ihrer Webscript-Definition. Dies stellt sicher, dass jeder Anruf in seiner eigenen Transaktion ist und Sie keine Probleme mit dem Zurücksetzen etc. bekommen werden.

In den meisten Fällen wird dies alle Probleme lösen, die Sie haben werden. Wenn nicht, dann beheben Sie wahrscheinlich das Problem auf der falschen Seite und Sie benötigen eine Warteschlange vor Alfresco wie ActiveMQ.

+0

Diese Lösung garantiert nicht die Ausführung nacheinander. Und ich denke, dass Alfresco eine neue Transaktion für jeden Webscript-Aufruf erstellt, selbst wenn die requirednew nicht gesetzt ist. – izodev

+0

Nein, es ist nicht Teil einer großen Transaktion. Der einzige Weg, dies zu gewährleisten, besteht darin, neue Anforderungen zu stellen. Und wenn Sie ActiveMQ verwenden und somit einen Warteschlangenmechanismus verwenden, können Sie sicherstellen, dass sie nacheinander ausgeführt werden. –