尝试恢复对话时,CDI会话ID始终为1并且捕获了NonexistentConversationException

时间:2012-12-16 22:37:39

标签: java cdi weld

我有两个共享CDI会话的JSF控制器和三个支持bean。在调用第一个控制器之后,调用非JSF Web应用程序以在(OpenAM / OpenSSO)上记录用户,然后调用第二个控制器。通过将“?cid = 1234”附加到第二个控制器的页面请求来保留会话ID。

我的控制器注释如下:

  

@Named(javax.inject.Named)

     

@ConversationScoped(javax.enterprise.context.ConversationScoped)

并按如下方式注入控制器:

  

@Inject(javax.inject.Inject)

     

私人短暂会话对话; (javax.enterprise.context.Conversation)

支持bean的注释如下:

  

@Named(javax.inject.Named)

这是在JBoss 7.1上运行的,它使用Weld for CDI。

这工作正常,但在进行了一些不相关的更改后,它不再有效。

现在的问题是,当调用第一个控制器,并且我调用conversation.begin()时,我返回的会话ID是始终 1.此外,当我回到第二个控制器时,我收到以下错误:

  

org.jboss.weld.context.NonexistentConversationException:WELD-000321找不到为id 1恢复的对话

我尝试使用新会话多次访问网络应用,我尝试从不同的标签和不同的浏览器访问它。会话ID“1”始终返回。另外,据我所知,我不是在两个控制器调用之间随时杀死会话或会话。

0 个答案:

没有答案