15: 11: 14.676 WARN FacesRequestAttributes: 121 - No se pudo registrar la destrucción de devolución de llamada [[email protected]1059fd6] para el atributo 'purchaseController' porque hace FacesRequestAttributes no apoyar este tipo de devoluciones de llamadaWARN: No se pudo registrar la destrucción de devolución de llamada
Este advertir mensaje aparece en mi registro mucho. Por cada frijol administrado cuando caduque. Caduca después de un tiempo dado, porque estoy usando MyFaces Orchestra.
he definido el org.springframework.web.context.request.RequestContextListener
en mi web.xml
, y yo no tengo el tarro de primavera únicos en mi ruta de clase (es decir, no es un problema de clase de carga)
Los documentos de FacesRequestAttribute dice:
NOTA: A diferencia de ServletRequestAttributes, esta variante no admite devolución de llamadas de destrucción para atributos de ámbito, ni para el alcance de la solicitud ni para el ámbito de la sesión. Si confía en esas devoluciones de llamadas de destrucción implícitas, considere la posibilidad de definir Spring RequestContextListener en su web.xml.
El purchaseController
es en realidad un bean gestionado sencillo (que no se extiende nada una implementación única Serializable
), anotado con @Controller
.
Update1:
Los granos en @Scope("request")
@Scope("session")
y parece verse afectada. Así que quería saber si esta advertencia representa un peligro para el flujo adecuado. Es decir. si algo realmente necesita esas devoluciones de llamada. Si no, me saltearé la advertencia con la configuración de lo4j.
Actualización 2:
me cavó un poco más lejos, y parece que esto sólo ocurre a veces . SI se utiliza el oyente, entonces RequestContextHolder.currentRequestAttributes()
devuelve el ServletRequestAttributes
, en lugar de FacesRequestAttributes
. Por lo tanto, parece que a veces el oyente no funciona y no establece los atributos actuales en el RequestContextHolder
.
Actualización 3:
que resultó en la depuración de RequestContextListener
, y aquí está el resultado:
07:21:31,518 DEBUG RequestContextListener:69 - Bound request context to thread: [email protected]
07:21:31,518 DEBUG RequestContextListener:89 - Cleared thread-bound request context: [email protected]
07:21:31,538 WARN FacesRequestAttributes:121 - Could not register destruction callback [[email protected]11aa152] for attribute 'org.apache.myfaces.orchestra.conversation.AccessScopeManager' because FacesRequestAttributes does not support such callbacks
07:21:31,541 WARN FacesRequestAttributes:121 - Could not register destruction callback [[email protected]1552393] for attribute 'localeController' because FacesRequestAttributes does not support such callbacks
....and so on, other request and session beans
Parece ser que la solicitud se destruye antes de que el acceso a los granos que se intente. Lo cual es muy extraño. ¿Podría deberse esto a un problema en la implementación del contenedor de servlets del manejo del oyente?
¿Cuál es la pregunta/problema? ¿Quieres deshacerte de las advertencias? ¿O desea poder registrar una devolución de llamada de destrucción de alguna manera? – BalusC
Más como si esta devolución de llamada es algo realmente necesario. Porque el marco en sí mismo lo está registrando, no yo. – Bozho
Solo para satisfacer mi curiosidad, ¿qué hay en el método 'destroy()' de estos 'DisposableBeanAdapter' registrados? –