Komponenten mit Sitzungsumfang werden standardmäßig synchronisiert. Das heißt, Seam sorgt dafür, dass immer nur eine Anfrage auf eine solche Komponente zugreifen kann. Alle anderen Anfragen müssen warten, bis der erste fertig ist. Um das Verhungern zu verhindern, haben die wartenden Anfragen ein Timeout (siehe für die entsprechende Implementierung). Wenn die wartende Anforderung nicht auf die Komponente zugreift, bis die Zeitüberschreitung erreicht ist, löst die SynchronizationInterceptor
eine org.jboss.seam.core.LockTimeoutException
aus.
Angenommen, Anforderungen A und B, benötigen Sie Ihre importUser
Komponente und A ist zuerst. Wenn A viel Zeit benötigt, um zu beenden, endet B in LockTimeoutException
. Versuchen Sie herauszufinden, wie eine Anforderung an importUser
länger als das definierte Zeitlimit dauern kann, um die Ursache Ihres Problems zu finden.
Schöne Antwort (+1) –
@Arthur Danke! – kraftan
Dies passiert nicht, weil ein langer Ausführungsbefehl vorhanden ist, der jedoch erscheint, wenn eine Ausnahme von dieser Methode ausgelöst wird und Sie versuchen, auf die gleiche Funktionalität zuzugreifen. – Joe