1

我在 JBoss AS 7.1.1 上运行基于 CDI 的应用程序,它使用对话范围 Bean。我需要从 RESTeasy 服务调用这些 bean 之一。不幸的是,当我调用 Conversation Scoped Bean

@Inject
private ConversationBean service; 


@GET
@Produces("text/html")
@Path("/book")
public void bookTicket(Long l) {

    service.book(l);
    . . . .
} 

返回以下错误:

原因:org.jboss.weld.context.ContextNotActiveException: WELD-001303 范围类型 javax.enterprise.context.ConversationScoped 没有活动上下文

这个问题有什么解决方法吗?
谢谢!

4

1 回答 1

4

我知道我之前已经回答过这个问题(或者也许是@SessionScoped,同样的事情)。对话与 CDI 中的会话相关联。由于 JAX-RS 中没有会话,因此没有对话。在规范第 6.7.4 节中,它声明对话范围仅在 JSF 请求期间处于活动状态。

如果您想创建自己的 Scope 和 Context 就像对话一样,并使其可用于 JAX-RS 请求,那当然是可行的,但是您必须有一些位置来存储范围并将其与要求。

于 2013-01-15T17:20:35.213 回答