2009-07-29 1 views
3

Immer wieder habe ich gelesen, dass wir keine statischen Variablen in einer Session-Bean verwenden dürfen. Wie soll ich dann einen Logger für diese Bean bekommen und sie alle über die Bean-Methoden verwenden?Wenn wir statische Variablen in Session-Beans nicht verwenden dürfen, wie definiert man einen Logger?

+0

Ich bin mir nicht sicher (daher der Kommentar und keine Antwort), aber konnten Sie nicht einfach eine statische Protokollmethode in Ihrem Logger aufrufen oder wird das genauso schlimm wie eine statische Variable betrachtet? –

Antwort

7

Ich denke, Sie interpretieren die "Regel" ein wenig zu streng.

Sie sollten keinen Zustand eines Servlets/einer Session/Bean in einer statischen Variablen speichern, da dieser Verweis auf alle Instanzen dieses Typs aufgeteilt ist.

Ein Logger (normalerweise, oder sollte nicht) einen Zustand halten. Es ist völlig in Ordnung IMO statische Verweise auf eine Logger-Instanz zu verwenden, wenn man die übliche Praxis der Namensgebung/Kategorisieren Ihrer Logger folgen auf der Basis der Klassenname:

public class SomeTypeOfBean { 
    private static final Logger log = Logger.getLogger(SomeTypeOfBean.class); 
    //... 
} 
1

Sie können es nur ein nicht-statisches Mitglied machen.

3

nur nicht-blockierende statische Referenzen lesen (das ist, was einen Logger ist) sind in der Regel in Ordnung, wenn es keine Probleme mit ein paar Kopien von ihnen gibt (nach Ermessen des Anwendungsservers).

Das besagt, es gibt nichts, das besagt, dass ein Logger in einer statischen Variable sein muss. Es kann sich um eine Instanzvariable handeln (und eine vorübergehende, wenn Ihr Logger nicht serialisierbar ist).

Eine Sache mit den EJB-Regeln zu realisieren - es ist am wichtigsten zu verstehen, warum sie existieren und was einen App-Server stolpern könnte (wenn Sie tatsächlich App-Server unabhängig entwickeln). Sobald Sie das verstanden haben, wissen Sie, wie man mit ihnen arbeitet (und sie machen Sinn, wenn man bedenkt, was ein App-Server mit Ihrer Klasse zu tun erwartet). Wenn es nur ein Haufen willkürlicher Regeln ist, die auf ein Dokument geschrieben sind, dann werden Sie nicht in der Lage sein, herauszufinden, wie man mit ihnen arbeitet, anstatt von ihnen gefangen zu werden.

Verwandte Themen