Java Seam&;多重战争:上下文。getSessionContext()在其他战争中为空

Java Seam&;多重战争:上下文。getSessionContext()在其他战争中为空,java,session,seam,packaging,Java,Session,Seam,Packaging,我在Weblogic 10.3.2和JSF 1.2上使用Seam 2.2.1.CR1 我有一个带有2个war文件的ear应用程序。第一个war是一个JSF/Seam应用程序,第二个war有JSF/Seam,但也有一些servlet页面 当我在第一个web应用程序的会话上下文中设置内容时: Contexts.getSessionContext().set("pimUser", pimUser); 在第二次世界大战中,我可以将其正常地注入Seam组件中。但是,如果我试图从Servlet中获取被拒绝

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

我有一个带有2个war文件的ear应用程序。第一个war是一个JSF/Seam应用程序,第二个war有JSF/Seam,但也有一些servlet页面

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

Contexts.getSessionContext().set("pimUser", pimUser);
在第二次世界大战中,我可以将其正常地注入Seam组件中。但是,如果我试图从Servlet中获取被拒绝的pimUser,我将无法访问它:

PimUser user1 = (PimUser) Contexts.getSessionContext().get("pimUser");
context.getSessionContext()为空。我注意到

org.jboss.seam.contexts.Contexts
说:

作者:加文·金·托马斯·赫特

这是否意味着这两个war文件应该具有不同的
上下文。getSessionScope()

我找到了一种方法,可以让我在整个会话中访问它,如下所示:

PimUser user2 = (PimUser) httpRequest.getSession().getAttribute("pimUser");
然而,后一种方法似乎并不正确。我想通过Seam访问Seam会话上下文


我发现Seam和multi-war应用程序()曾经存在问题(?),但是,这些问题应该已经由2.2.0.GA解决。

常规servlet默认情况下无法访问Seam上下文:。您需要首先通过或对其进行集成


我以前用过这两种方法,它们都很好用。就个人而言,我更喜欢
AbstractResource
,因为您可以摆脱相应的
web.xml
配置。

JEE 5教程说:您可以按名称将对象值属性与会话相关联。属于同一web上下文并正在处理属于同一会话的请求的任何web组件都可以访问这些属性。两个战争(你可以把战争看作是一个网络环境)并不共享它们的环境。
PimUser user2 = (PimUser) httpRequest.getSession().getAttribute("pimUser");