Los componentes del ámbito de la sesión están sincronizados por defecto. Eso significa que Seam se ocupa de que solo una solicitud a la vez pueda acceder a dicho componente. Todas las demás solicitudes tienen que esperar hasta que termine la primera. Para evitar la inanición, las solicitudes de espera tienen un tiempo de espera (ver org.jboss.seam.core.SynchronizationInterceptor
para la implementación correspondiente). Cuando la solicitud de espera no obtiene acceso al componente hasta que se alcanza el tiempo de espera, el SynchronizationInterceptor
arroja un org.jboss.seam.core.LockTimeoutException
.
Asumiendo a las solicitudes, A y B, necesita su componente importUser
y A es el primero. Si A tarda mucho en finalizar, B terminará en el LockTimeoutException
. Para encontrar la causa de su problema, intente averiguar cómo una solicitud al importUser
puede tomar más tiempo que el tiempo de espera definido.
Buena respuesta (+1) –
@Arthur ¡Gracias! – kraftan
Esto no ocurre porque hay un comando de ejecución larga, pero parece surgir cuando se lanza una excepción desde este método y está intentando volver a acceder a la misma funcionalidad. – Joe