如何在Weld中检索所有现有的长时间运行的对话?

时间:2012-08-09 19:58:23

标签: cdi seam3 conversation-scope weld

我正在JBoss 7.1.1.Final,Weld,Seam 3中编写应用程序。我有以下bean:

@ConversationScoped
public class ConversationBean implements Serializable {

   @Inject
   Conversation conversation;

   private Article article;
...
}

现在,用户可能会创建多个会话,每个会话都将与ConversationBean的实例相关联。我需要能够获得与长时间运行的对话相关的所有实例。

我需要访问它们的原因是,如果用户多次打开一篇文章(因此他将使用同一篇文章创建多个对话)。如果他在一个对话中更改了文章,我希望能够在其他对话中刷新文章。

有没有一些标准方法可以做到这一点?

编辑:“article”实例由entityManager查找并在会话中进行管理。使用Seam Managed Persistence Context检索实体管理器。

3 个答案:

答案 0 :(得分:2)

我似乎明白你想要一个工作区切换器a-la Seam 2。 您可以使用Java EE 6和Weld执行此操作。看看这篇文章:

http://lucasterdev.altervista.org/wordpress/2012/01/09/workspace-management-with-cdi/

答案 1 :(得分:0)

请参阅http://docs.jboss.org/weld/reference/latest/en-US/html/contexts.html

@Inject @Http private HttpConversationContext conversationContext;

[...]    

     conversationContext.getConversations()

答案 2 :(得分:-1)

每次会话都只进行一次对话。注入会话将为您提供一个长时间运行的对话(如果尚未提升,则为临时对话)。