2017-02-23 5 views
2

javadocs(http://docs.oracle.com/javaee/6/api/javax/enterprise/inject/package-summary.html)によると、Beanにパブリックフィールドがある場合、@Dependantとして分類する必要があります。Beanが@ApplicationScopedとして宣言されていて、パブリックフィールドがある場合はどうなりますか?

私たちのコードベースでは、Beanが@ApplicationScopedと@Singletonの両方にある状況がありますが、パブリックフィールドがあります。このBeanは@Dependantとして扱われるのですか?それとも@ApplicationScopedとして動作するのでしょうか?

おかげ

答えて

2

あなたのコンテナが完全にJ2EE仕様に準拠されていない、これは無効な豆で、コンテナが起動からアプリケーションを防ぐべきであると表示されます。私はこれがTomee 1.7.2の場合であることを確認しました。

パブリックフィールドは、コンテナがプロキシできないため、マネージドBeanでは使用できません。これは、より低いスコープをより高いスコープに注入する場合には不可欠です(例えば@Request@Applicationに入れる)。あなたのコンテナは、@ApplicationScoped beanを代理する必要がないので、これを許可していると思われます。

あなたのコンテナがそうでない場合でも、仕様に準拠するようにコードを変更することをお勧めします。そうしないと、将来のアップグレード/移行後に破損する可能性があります。

+0

weblogicをコンテナとして使用しています。実際にエラーが発生した場合は、エラーの処理方法がわからなくても、実行するのではなく、うまくいかないとうれしいです。 – codemonkey

関連する問題