2017-08-16 2 views
2

Ich experimentiere mit @Resource in einem Servlet, um zu sehen, ob wir es verwenden können, um Konfigurationsparameter leicht zu injizieren (dies ist Servlet 3.0 Webapp in Glassfish 4.1.1).Glassfish/Wildfly nicht fehlgeschlagen, wenn @Resource nicht aufgelöst werden kann?

Mir war in https://stackoverflow.com/a/45715196/53897 gesagt, dass das Verhalten, das ich ein @Resource String userName sah null sein, wenn verwendet, wenn es nicht, wenn die env-Einträge in web.xml aufgelöst werden kann, nicht vorhanden ist, falsch waren die Spezifikation nach, aber das Das Verhalten von WildFly war das gleiche.

Frage ist: Ist das ein bekannter Fehler? Gibt es eine Flagge, die das "fail if not resolvable" erzwingen kann?

EE.5.4.1.3

....
Es ist oft zweckmäßig, ein Feld oder eine Methode als Injektion Ziel zu erklären, aber eine Standard angeben:

+2

Ich plauderte mit einem der WildFly-Entwickler darüber und er bat mich, ein Ticket zu erhöhen. Siehe https://issues.jboss.org/browse/WFLY-9235. Wenn dies tatsächlich ein Fehler ist, dann ist es etwas, das der TCK nicht abfängt, weshalb GlassFish es auch vermisste. –

Antwort

2

Dies ist für einfache env Einträge erlaubt Wert im Code, wie im folgenden Beispiel dargestellt.

// Die maximale Anzahl der vom Deployer konfigurierten Steuerbefreiungen.
@Resource int maxExemptions = 4; // Standardwerte 4

Um diesen Fall zu unterstützen, darf der Container nur einen Wert für diese Ressource einfügen, wenn der Deployer einen Wert zum Überschreiben des Standardwert angegeben hat.
.....

+0

Seufzer. Wer das für eine gute Idee hielt, musste sich offenbar nie mit einem fehlerhaften Konfigurationseintrag herumschlagen, der stillschweigend ignoriert wurde und noch in Java EE 7 (Seite 84) steckt. Defaults sind eine schlechte Idee für diese Dinge. Die Frage ist, ob die Formulierung verlangt, dass ein Standardwert zur Verfügung gestellt wird oder ob der Null-Fall auch in Ordnung ist? Seufz wieder. –

Verwandte Themen