Ich bin eine Java Enterprise-Anwendung implementieren und deklarierte einen Filter für jede Anfrage, so wie der Server diese Anfrage verfolgt, erstellen Sie ein neues Filterobjekt für jede Anfrage, oder ihre ist nur ein Filter alle behandelt Anfrage, mit anderen Worten sind Java Webfilter Singletone?Sind Java Filter Singleton
Antwort
Lassen Sie uns zunächst die Definition von Singleton Pattern (Hervorhebung von mir) Bewertung:
In Software-Engineering, das Singleton-Muster ist ein Entwurfsmuster, dass die Instanziierung einer Klasse auf ein Objekt beschränkt.
Wenn Sie eine Klasse deklarieren, die die Filter
-Schnittstelle implementiert, braucht es einen public
Konstruktor (in der Regel der Standard-Konstruktor), so dass die Anwendungsserver es instanziiert könnte. Somit ist die Filter
nicht ein Singleton.
Beachten Sie, dass der Anwendungsserver eine einzelne Instanz pro Anwendungskontext z. per einer bereitgestellten Webanwendung, aber das ist nicht dasselbe wie mit einem Singleton. Warum? Weil Sie oder ein anderer Programmierer unvorsichtigerweise eine Instanz dieser Klasse erstellen können (auch wenn sie die Instanz nicht verwendet).
Kein Singleton, aber im Wesentlichen äquivalent zu "@ApplicationScoped" in CDI. –
@exabrial ja, das stimmt –
Die Antwort hängt davon ab, wie Sie es in web.xml definieren.
Zum Beispiel dieses Fragment von web.xml, erstellen Sie ein Objekt von Filter1
<filter>
<filter-name>Filter1</filter-name>
<filter-class>com.surasin.test.Filter1</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Aber diese framgemet von web.xml, erstellen Sie zwei Objekte von Filter1
<filter>
<filter-name>Filter1</filter-name>
<filter-class>com.surasin.test.Filter1</filter-class>
<init-param>
<param-name>my-param</param-name>
<param-value>my-param-value</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Filter1</filter-name>
<filter-class>com.surasin.test.Filter1</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 1. Java, Abhängigkeitsinjektion Singleton?
- 2. Java: getInstance() Singleton Leistung
- 3. Java Singleton Instanziierung
- 4. Java Singleton Pattern
- 5. Java Reflection und Singleton
- 6. Java-Synchronisation im Singleton-Muster
- 7. Generalisierte Singleton-Basisklasse in Java
- 8. Singleton mit Argumenten in Java
- 9. Java-Singleton-Zugriff durch Reflektion
- 10. Java Singleton mit Double Check
- 11. Java: Singleton mit ENUM .. Ist mein Objekt Singleton und threadsafe
- 12. JSP implizite Objekte sind Singleton-Objekte?
- 13. Sind Singleton-Klassen in IIS Thread-sicher?
- 14. Implementierung des Singleton-Musters in Java
- 15. Java-Ausnahme String-Filter
- 16. Java-Filter für Logstash
- 17. Java Filter Leistung Frage
- 18. Java 1.5 Filter JTable
- 19. Sollte ein Java Singleton statische Variablen verwenden?
- 20. @Lock (LockType.READ) Singleton Ejb in Java 8
- 21. Java EE @ Singleton EJB für Cache
- 22. Wie initialisiert Java Enum-basierte Singleton?
- 23. Singleton und öffentliche statische Variable Java
- 24. Erstellen eines Singleton-Objekts in Java
- 25. Java-Dienstprogramm Singleton mit passender statischer Schnittstelle
- 26. Kann nicht, dass Singleton-Typen sind Singleton-Typen nachweisen, während Typ Klasseninstanz zu erzeugen
- 27. Elasticsearch java api oder Filter
- 28. Java Hibernate Filter funktioniert nicht
- 29. Ratpack Servlet Filter in Java
- 30. Digital Filter, Mathematik in Java,
Ich bin nicht sicher, aber init() und destroy() werden nur einmal aufgerufen, aber für jede Anfrage muss sie doFilter durchlaufen ... Dieses Verhalten ist dasselbe wie Servlet-Init, Destroy oder Service-Methoden. – AurA
Related: http://StackOverflow.com/Q/3106452 – BalusC