2017-08-16 71 views
2

我正在試驗一個servlet中的@Resource,看看我們是否可以使用它輕鬆注入配置參數(這是Glassfish 4.1.1中的servlet 3.0 webapp)。如果@Resource無法解析,Glassfish/Wildfly不會失敗?

我被告知https://stackoverflow.com/a/45715196/53897我看到的@Resource String userName的行爲在使用時爲空,如果web.xml中的env-entries不存在,根據規範錯誤地解決該問題,但是WildFly的行爲是一樣的。

問題是:這是一個已知的錯誤嗎?有沒有可以強制執行「如果不能解決就失敗」的標誌?

+2

我和其中一位WildFly的開發者談論了這件事,他讓我提出一張票。請參閱https://issues.jboss.org/browse/WFLY-9235。如果確實發現這是一個bug,那麼它就是TCK無法捕捉的,這也是GlassFish錯過了它的原因。 –

回答

2

這是允許簡單的ENV條目:

EE.5.4.1.3

....
這是很方便的聲明一個字段或方法注入目標,但 指定一個默認代碼中的值,如以下示例所示。

//由部署者配置的最大免稅額。
@Resource int maxExemptions = 4; //默認爲4

爲了支持這種情況,如果 部署者指定了一個值來覆蓋默認值,那麼容器只能爲該資源注入一個值。
.....

+0

感嘆。誰認爲這是一個好主意顯然不需要處理錯誤的配置條目,而且它仍然在Java EE 7(第84頁)中。對於這些東西,默認值是一個糟糕的主意。問題是如果措辭要求提供默認值,或者空例也可以?再次感嘆。 –