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 org.jboss.seam.core.SynchronizationInterceptor
für die entsprechende Implementierung). Wenn die wartende Anforderung nicht auf die Komponente zugreift, bis die Zeitüberschreitung erreicht ist, gibt% code_%% SynchronizationInterceptor
zurück.
Angenommen, die Anforderungen A und B benötigen Ihre org.jboss.seam.core.LockTimeoutException
-Komponente und A ist die erste. Wenn A viel Zeit zum Beenden benötigt, endet B in importUser
. Versuchen Sie herauszufinden, wie eine Anforderung für LockTimeoutException
länger als das definierte Zeitlimit dauern kann, um die Ursache für Ihr Problem zu finden.
Ich hatte eine Seite, auf der das bei hoher Last selten passieren würde. Ich war in der Lage, die Häufigkeit dieses Auftretens zu reduzieren, indem ich diese Annotation auf die beanstandete Seam-Objektklasse setzte:
%Vor%Dadurch erhöht sich die Zeitüberschreitung auf fünf Sekunden anstelle der Standardsekunde, die Seam ihnen gibt. Es ist nur ein Pflaster, aber ich wollte dieses Ungetüm nicht umschreiben.
Tags und Links seam