getMetaData () löst die interne NullPointerException aus

8

Der Aufruf von getMetaData () für eine Komponente in ColdFusion 10 scheint zufällig eine interne NullPointerException auszulösen. Während diese Ausnahme weder offen gelegt wird noch die eigentliche Anfrage betrifft (und somit für unsere Anwendungen selbst nicht kritisch ist), füllt sie die exception.log -Dateien immer noch schnell auf.

Ich habe festgestellt, dass dies mit dem Pfad-Caching von ColdFusion zusammenhängen könnte, da ich diese NullPointerException-Einträge nur auf dem Produktionsserver erhalte. Ich habe auch bemerkt, dass diese Ausnahme nur einmal pro Komponente ausgelöst wird, wo ich getMetaData () anwende, obwohl nicht jeder erste Aufruf es auszulösen scheint.

Zur Klarstellung: getMetaData () funktioniert einwandfrei, aber es protokolliert manchmal eine NullPointerException in der clientFusion-Datei exception.log.

Kennt jemand eine Lösung (außer das Caching oder die Datei exception.log zu deaktivieren)?

Hintergrund: Ich verwende getMetaData (), um Komponenten zu identifizieren, besonders nützlich, wenn <cfinterface> verwendet wird.

%Vor%     
Alex 18.06.2014, 12:16
quelle

3 Antworten

0

Sie könnten getMetaData () in einem try / catch-Block umherirren und innerhalb des catch-Blocks leer haben, anstelle des standardmäßigen e.printStackTrace (), da dies für die Ausführung der eigentlichen Anwendung nicht entscheidend ist.

    
Triavanicus 09.07.2014 04:32
quelle
0

Wie oft ändern sich Ihre Komponenten? Gibt es eine Möglichkeit, die Zeiten, in denen die Dateien geändert wurden, mit der Zeit zu vergleichen, in der die Ausnahme ausgelöst wurde? Ich bin bei dir über die Möglichkeit, das Caching zu verursachen.

Aus Neugier, wenn Sie in der Lage sind, vor dem Aufruf von getMetaData() , könnten Sie den Servlet-Pfad explizit NULLEN?

%Vor%

Das kann dabei helfen, die NULL-Bedingung dort zu erfüllen, die dann auf den Aufruf von request.getServletPath() zurückgreifen und möglicherweise die Pfadprobleme lösen würde.

Ich habe meine Logs überprüft und einen solchen Fehler nicht gefunden, aber wahrscheinlich sind meine Aufrufe von getMetaData() nicht so häufig wie bei Ihnen.

    
Tristan Lee 17.10.2014 01:47
quelle
0

Es scheint eine seltene Rasse Bedingung zwischen Anfrage bezogen werden (w / o Sitzungskennung) und der Initialisierung der Session als getMetaData () wirft die Ausnahme, wenn im Sitzungsbereich auf ein beliebiges Element verwendet wird, so dass es auch dann nicht hängen auf einer benutzerdefinierten Komponente, sondern coldfusion.runtime.SessionScope .

Leider ist es sehr schwierig, diese Frage zu reproduct. Manchmal passiert es, aber dann tut es nicht für Stunden oder sogar Tage. Ich legte einen Bericht bei Adobe Bugbase , aber sie können in diesen nicht sehen, wenn ich nicht sagen kann, die zu reproduzierenden Schritte.

    
Alex 17.10.2014 08:35
quelle