我在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。我注意到了
的Javadocorg.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解决。
答案 0 :(得分:3)
默认情况下,常规servlet无法访问Seam上下文:Replacing servlets with Seam resources。您需要先使用wrapping the call in Seam Contexts或replacing the servlet with a Seam AbstractResource
进行整合。
我之前使用过这两种方式并且它们完美地工作。就个人而言,我更喜欢AbstractResource
因为你可以摆脱相应的web.xml
配置。