Seam&多次战争:在其他战争中,Contexts.getSessionContext()为null

时间:2010-10-26 16:49:35

标签: java session seam packaging

我在Weblogic 10.3.2和JSF 1.2上使用Seam 2.2.1.CR1。

我有2个war文件的耳朵应用程序。第一个战争是JSF / Seam应用程序,第二个战争有JSF / Seam,但也有一些Servlets页面。

当我在第一个Web应用程序的Session上下文中设置内容时:

Contexts.getSessionContext().set("pimUser", pimUser);

我可以在第二次战争中在Seam组件中正常注入它。但是,如果我试图从Servlet中获取被驱逐的pimUser,我就无法访问它:

PimUser user1 = (PimUser) Contexts.getSessionContext().get("pimUser");

Contexts.getSessionContext()为null。我注意到了

的Javadoc
org.jboss.seam.contexts.Contexts

表示:

Provides access to the current contexts associated with the thread.
     

作者:Gavin King Thomas Heute

这是否意味着2个war文件应该有不同的Contexts.getSessionScope()

我找到了一种允许我通过Session访问它的方式:

PimUser user2 = (PimUser) httpRequest.getSession().getAttribute("pimUser");

后一种方式似乎并不正确。我想通过Seam访问Seam会话上下文。

我发现使用(?)是Seam和多战应用程序(link)的问题,然而,这些应该由2.2.0.GA解决。

1 个答案:

答案 0 :(得分:3)

默认情况下,常规servlet无法访问Seam上下文:Replacing servlets with Seam resources。您需要先使用wrapping the call in Seam Contextsreplacing the servlet with a Seam AbstractResource进行整合。

我之前使用过这两种方式并且它们完美地工作。就个人而言,我更喜欢AbstractResource因为你可以摆脱相应的web.xml配置。