15: 11: 14,676 WARN FacesRequestAttributes: 121 - Не удалось зарегистрировать обратный вызов уничтожения [org.springframework.beans.factory.support.DisposableBeanAdapter@1059fd6] для атрибута purchaseController, поскольку FacesRequestAttributes не поддерживает такие обратные вызовы
Это предупреждение появляется в моем журнале много . Для каждого управляемого бина, когда он истекает. Срок действия истекает через определенное время, потому что я использую MyFaces Orchestra.
Я определил org.springframework.web.context.request.RequestContextListener
в моем web.xml
, и у меня нет только пружинных банок на моем пути к классам (т. Е. Не проблема загрузки классов)
Документы FacesRequestAttribute гласят:
ПРИМЕЧАНИЕ. В отличие от ServletRequestAttributes, этот вариант не поддерживает обратные вызовы уничтожения для атрибутов области действия ни для области запроса, ни для области сеанса. Если вы полагаетесь на такие неявные обратные вызовы уничтожения, рассмотрите возможность определения Spring RequestContextListener в вашем файле web.xml.
purchaseController
- это на самом деле простой управляемый бин (не расширяющий ничего, реализующий только Serializable
), помеченный @Controller
.
Update1:
Бобы в @Scope("request")
и @Scope("session")
, похоже, затронуты.
Поэтому я хотел знать, не представляет ли это предупреждение какую-либо опасность для правильного потока. То есть если что-то действительно нужно эти обратные вызовы. Если нет, я просто пропущу предупреждение с помощью конфигурации lo4j.
Обновление 2:
Я копал немного дальше, и кажется, что это происходит только , иногда . Если прослушиватель используется, то RequestContextHolder.currentRequestAttributes()
возвращает ServletRequestAttributes
, а не FacesRequestAttributes
. Похоже, что иногда слушатель не работает и не устанавливает текущие атрибуты в RequestContextHolder
.
Обновление 3:
Я включил отладку для RequestContextListener
, и вот результат:
07:21:31,518 DEBUG RequestContextListener:69 - Bound request context to thread: org.apache.catalina.connector.RequestFacade@1190ae9
07:21:31,518 DEBUG RequestContextListener:89 - Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@1190ae9
07:21:31,538 WARN FacesRequestAttributes:121 - Could not register destruction callback [org.springframework.beans.factory.support.DisposableBeanAdapter@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 [org.springframework.beans.factory.support.DisposableBeanAdapter@1552393] for attribute 'localeController' because FacesRequestAttributes does not support such callbacks
....and so on, other request and session beans
Похоже, что запрос уничтожается до попытки доступа к bean-компонентам. Что очень странно. Может ли это быть связано с проблемой в реализации контейнера слушателя обработки слушателя?