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?
Antwort
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);
//...
}
Sie können es nur ein nicht-statisches Mitglied machen.
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.
- 1. Wie man Variablen im Logger-Formatierer eingibt?
- 2. Warum dürfen wir const mit Referenztypen verwenden, wenn wir ihnen nur null zuweisen?
- 3. Wie man eine statische Variable deklariert, aber nicht definiert
- 4. Boost Logger Statische Verknüpfung: funktioniert nicht
- 5. statische Variablen in Ruby
- 6. Statische Variablen in ASP.NET
- 7. Zuweisung Variablen nur in Javascript nicht definiert, wenn
- 8. Warum sollten wir statische Aufrufe in PHP verwenden?
- 9. Wie benutzt man verschiedene statische (globale) Variablen in verschiedenen Objekten?
- 10. Wie deklariert man statische Variablen in Objective-C?
- 11. Warum können wir statische Variablen nicht innerhalb eines Funktionskörpers deklarieren, selbst wenn die Funktion statisch ist?
- 12. Warum dürfen wir in einer Schnittstelle keinen Konstruktor angeben?
- 13. DotNet: Statische Variablen in DLL
- 14. Wie definiert man einen globalen benutzerdefinierten RoutedCommand?
- 15. Können wir statische virtuelle Funktionen haben? Wenn nicht, dann WARUM?
- 16. Java statische Klasse/Variablen
- 17. Const-Methode Zugriff auf statische Variablen
- 18. Wie überprüft man den Variablenwert, wenn dieser nicht definiert ist?
- 19. Best Practice: Java statische nicht finale Variablen
- 20. Ansible - Verwenden Sie Standard, wenn eine Variable nicht definiert ist
- 21. Warum dürfen wir eine letzte Hauptmethode in Java haben?
- 22. Warum sollten wir statische (feste) Portnummern in grundlegenden Netzwerkdiensten verwenden?
- 23. Statische Variablen in C++
- 24. Private nicht statische Variablen in Polymer?
- 25. Wie vermeidet man statische Kontextverweise, wenn ich einen Aktivitätskontext verwenden muss?
- 26. Statische Variablen in Setter
- 27. Statische Variablen in C#
- 28. Sollte ein Java Singleton statische Variablen verwenden?
- 29. Statische Variablen in Instanzmethoden
- 30. Warum verwenden wir pthread_exit(), wenn wir return verwenden können?
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? –