konnte keine Sperre für eine Komponente erhalten

8

Ich erhalte diesen Fehler manchmal in einer sitzungsweiten Komponente, habe aber immer noch nicht herausgefunden, was das verursacht. Irgendwelche Ideen?

%Vor%     
Joe 13.10.2010, 05:43
quelle

2 Antworten

16

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.

    
kraftan 13.10.2010, 07:49
quelle
4

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.

    
iandisme 07.09.2011 20:37
quelle

Tags und Links