Wir alle wissen, dass es in der Web Tier die Möglichkeit gibt, dass nur eine einzige Instanz eines gegebenen Servlets existiert, die mehrere Anfragen bedient. Dies kann zu Threading-Problemen in Instanzvariablen führen.Ist es sicher, ein EJB als Instanzvariable in ein Servlet zu injizieren?
Meine Frage ist, ist es sicher, ein EJB mit der @ EJB Annotation in ein Servlet als Instanzvariable zu injizieren?
Mein erster Instinkt wäre nein, unter der Annahme, dass die gleiche Instanz des EJB mehrere Anfragen gleichzeitig bedienen würde. Es scheint, dass dies auch der Instinkt einer Reihe anderer Programmierer sein würde: Don't inject to servlets
Allerdings bin ich zu der falschen Schlussfolgerung gesprungen. Was in das Servlet injiziert wird, ist eindeutig ein Proxy. Unter der Haube bedient der Container tatsächlich jede Anfrage mit einer anderen Instanz und behält die Thread-Sicherheit bei? Wie dieses Forum vorschlagen würde: Do inject to servlets
Es scheint eine Menge widersprüchliche Meinungen zu geben. WELCHES IST RICHTIG???
Diese Antwort ist richtig, soweit es geht, aber es behandelt nicht die Thread-Sicherheitsbedenken des OP. Ich glaube, dass die folgende Antwort von inferreddesign die richtige sein sollte. –
Ich denke ein EJB mit @Inject (CDI, JEE 6) wird genauso sicher sein, oder? – marcus