1

我有两个 JSF 控制器和三个共享 CDI 对话的支持 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 进行 CDI。

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

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

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

我尝试使用新会话多次访问 Web 应用程序,并且尝试从不同的选项卡和不同的浏览器访问它。始终返回对话 ID“1”。此外,据我所知,我不会在两个控制器调用之间的任何时候终止会话或对话。

4

0 回答 0