在 Contexts and Dependency Injection (CDI) 1.0 OpenWebBeans 实现中,即使在会话 bean 类中声明具有 @Produces 注释的非静态字段,应用程序也可以成功启动,虽然该行为不符合 CDI 1.0 规范。
在 CDI 1.2 Weld 实现中,应用程序将无法启动,并且会抛出以下异常:
WELD-000096: Producer fields on session beans must be static. Field [{0}] declared on [{1}].
您可以通过向会话 bean 上的 producer 字段添加静态修饰符来解决此问题。
此规则将标记具有会话 bean 类中声明的 @Produces 注释的非静态字段。
以下元素和注释将类定义为会话 bean:
ejb-jar.xml 文件中 <session> 元素内的 <session-type>Singleton</session-type> 元素ejb-jar.xml 文件中 <session> 元素内的 <session-type>Stateless</session-type> 元素ejb-jar.xml 文件中 <session> 元素内的 <session-type>Stateful</session-type> 元素@Singleton、@Stateless 或 @Stateful 注释有关更多信息,请参阅以下资源: