我有一个使用cdi
和resteasy
的Quarkus应用程序。我有一个标注为SessionScoped
import javax.enterprise.context.SessionScoped;
@SessionScoped
public class SessionScopedBean implements Serializable {}
将这个bean注入我的Web资源时,我得到javax.enterprise.inject.UnsatisfiedResolutionException
:
@Path("/dep")
public class DependencyResource {
private final SessionScopedBean ses;
public DependencyResource(SessionScopedBean ses) {
this.ses = ses;
}
}
堆栈跟踪:
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException:
Unsatisfied dependency for type SessionScopedBean and qualifiers [@Default]
- java member: DependencyResource#<init>()
- declared on CLASS bean [types=[DependencyResource], qualifiers=[@Default, @Any], target=DependencyResource]
at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:472)
at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:404)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:212)
如果我将其更改为ApplicationScoped
或RequestScoped
,则可以正常运行,而无需进行其他任何更改。
SessionScoped
bean是否可以与Quarkus 1.0.0.CR1一起使用?
答案 0 :(得分:2)
在Quarkus中,有SessionContext
,但它直接连接到Undertow
扩展名中,而不是Arc(Quarkus DI)的一部分的请求或应用程序上下文,您几乎总是在组件需要它时获得它
因此,请检查您是否启用了undertow
扩展名,或尝试手动添加该扩展名,以查看有帮助。