WARNUNG: Konnten Sie nicht registrieren, Vernichtung, Rückruf

15:11:14,676 WARNEN FacesRequestAttributes:121 - Konnten Sie nicht registrieren, Zerstörung callback - [org.springframework.beans.factory.support.DisposableBeanAdapter@1059fd6] für das Attribut 'purchaseController", weil FacesRequestAttributes unterstützt nicht solche Rückrufe

Diese warn-Meldung erscheint in meinem log viel. Für jede managed-bean, sobald er abgelaufen ist. Es läuft nach einer bestimmten Zeit, denn ich bin mit MyFaces Orchestra.

Ich habe die org.springframework.web.context.request.RequestContextListener in meinem web.xml, und ich habe nicht die Feder jar einzigen, die auf mein classpath (also nicht class-loading-problem)

Den docs von FacesRequestAttribute sagt:

HINWEIS: Im Gegensatz zu ServletRequestAttributes, wird diese Variante nicht unterstützt, Zerstörung Rückrufe für scoped Attribute, weder für die Anfrage Umfang noch für den Gültigkeitsbereich einer session. Wenn du dich auf solche implizite Zerstörung Rückrufe, betrachten Sie definieren eine Feder in Ihrem RequestContextListener web.xml.

Den purchaseController ist eigentlich ein einfacher managed bean (nicht länger alles, was eine Umsetzung nur Serializable), versehen mit @Controller.

Update1:

Werden die Bohnen in @Scope("request") und @Scope("session") scheinen betroffen zu sein.
Also wollte ich wissen, ob diese warnen, stellt keine Gefahr für die richtige Strömung. I. e. wenn etwas wirklich braucht diese Rückrufe. Wenn nicht, werde ich einfach überspringen Sie die Warnung mit der lo4j config.

Update 2:

Ich grub ein wenig weiter, und es scheint, dass dies geschieht nur manchmal. WENN der Hörer verwendet wird, dann RequestContextHolder.currentRequestAttributes() gibt die ServletRequestAttributes eher als FacesRequestAttributes. So es scheint, dass manchmal der Hörer nicht funktioniert und nicht die aktuellen Attribute in der RequestContextHolder.

Update 3:

Drehte ich debug auf für RequestContextListener, und hier ist das Ergebnis:

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

Scheint es, dass die Anforderung zerstört wird, bevor der Zugang zu den Bohnen versucht. Das ist sehr seltsam. Dies könnte sein, dass aufgrund eines Problems in der servlet-container-Implementierung der listener-handling?

Was ist die Frage/problem? Sie wollen, um loszuwerden, die Warnungen? Oder Sie wollen in der Lage sein, zu registrieren, eine Vernichtung, Rückruf in irgendeiner Weise?
Mehr, wie, ob dieser Rückruf ist etwas, was wirklich gebraucht wird. Da das framework selbst ist, registrieren Sie ihn, nicht mich.
Nur um meine Neugierde zu befriedigen, was gibt es in der destroy() Methode dieser registriert DisposableBeanAdapter?
In meiner Bohnen (Controller) gibt es nichts. Also momentan ist es kein problem, dass dies nicht gelingt. Aber wenn ich auf add a custom destroy () - Methode (ohne Implementierung DisposableBean), dann fürchte ich, es wird nicht aufgerufen werden, in diesen Situationen. (Die DisposableBeanAdapter findet, und ruft die benutzerdefinierte zerstören, Methoden)

InformationsquelleAutor Bozho | 2010-01-16

Schreibe einen Kommentar