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?
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der javadoc von
FacesRequestAttributes
, können wir Lesen:Und, in der Tat, die
registerDestructionCallback()
Methode derFacesRequestAttributes
nicht viel Dinge:Aber mein Verständnis ist, dass die
RequestContextListener
(dass die Sie deklariert haben) übernehmen diese Aufgabe. SeinerequestDestroyed(ServletRequestEvent requestEvent)
Methode ist unten dargestellt:Und wenn Sie sich die javadoc von
ServletRequestAttributes#requestCompleted()
:So, ich denke das kann man getrost überspringen, WARNEN mit log4j-Konfiguration (vielleicht bestätigen Sie diese mit ein wenig debugging-Sitzung).
Komisch, die Methode, die Sie erwähnen sollten, zurückgreifen, um die aktuelle JSF-FacesContext, wenn überhaupt. Aber ich bin irgendwie spricht aus meinem Arsch und das Gefühl zu faul, heute Abend weiter zu gehen 🙂
ja, es fällt zurück auf den FacesContext über den Bau einer neuen FacesContextAttributes(FacesContext.getCurrentInstance()), und das ist das problem - dieses Objekt nicht registrieren callbacks. Was kann der Grund sein, für Sie fallen zurück, um es, statt mit dem one registriert den listener.
InformationsquelleAutor Pascal Thivent
Habe ich versucht, indem
vorgeschlagen von erhan14 auf dieser forum-post.
Und die Warnung verschwand für mich. Hoffe, es hilft.
Vielen Dank für bemerken, mein Fehler.
InformationsquelleAutor Boon