在 WildFly 上重新部署后,CDI 无法在 @Requestscoped REST 服务中将 @Singleton 设置为 @Provider
Posted
技术标签:
【中文标题】在 WildFly 上重新部署后,CDI 无法在 @Requestscoped REST 服务中将 @Singleton 设置为 @Provider【英文标题】:CDI can't set @Singleton into @Provider in @Requestscoped REST service after redeploy on WildFly 【发布时间】:2014-07-01 05:22:06 【问题描述】:我有 AuthenticationFilter,它注入了带有 @Singleton 注释的 UserController。当我第一次部署我的应用程序时 - 一切都很好,但是当我重新部署应用程序然后我尝试从任何 REST 服务中获取一些东西时 - 我经常收到:
Can not set app.auth.UserController field
app.web.rest.auth.AuthenticationFilter.userController to
app.auth.UserController$Proxy$_$$_Weld$EnterpriseProxy$
即使我杀死服务器并重新启动它,问题仍然存在。但是经过几次重启问题终于消失了。
有人知道什么会导致这个错误吗?
【问题讨论】:
在重新部署之前尝试清理目标目录 事实上我总是在重新部署之前清除目标目录 单例、CDI 还是 EJB? 这是 EJB 单例 这里应该说明使用环境 【参考方案1】:我也遇到过这个问题。每次部署我都会随机失败注入(EJB)@Singleton
,甚至(CDI)ApplicationScoped
。
我的问题是我确实没有拥有beans.xml
。不知何故,没有beans.xml
,项目无法正确初始化。
当我添加(完全为空的)beans.xml
时,它已解决。希望对您有所帮助。
【讨论】:
以上是关于在 WildFly 上重新部署后,CDI 无法在 @Requestscoped REST 服务中将 @Singleton 设置为 @Provider的主要内容,如果未能解决你的问题,请参考以下文章
Java 的 CDI 事件是不是聚集在 WildFly 中?
无法将 JSF + CDI 项目从 Tomcat 迁移到 Wildfly