Apache flex flex和jsf访问同一个bean实例

Apache flex flex和jsf访问同一个bean实例,apache-flex,jsf,blazeds,icefaces,Apache Flex,Jsf,Blazeds,Icefaces,我将flex应用程序集成到jsf icefaces应用程序中(在带有ice:outputmedia标记的jspx站点中),并希望通过远程方式从flex访问jsf注入的同一个bean实例 我已经将blazeds连接到java bean。这个bean——和所有其他bean一样——通过注入jsf获得其他bean,但是当我从flex远程访问bean时,它不包含注入的bean(比如localizer和accesmanager,都是会话范围),并且我无法连接到jsf会话(FacesContext.getCu

我将flex应用程序集成到jsf icefaces应用程序中(在带有ice:outputmedia标记的jspx站点中),并希望通过远程方式从flex访问jsf注入的同一个bean实例

我已经将blazeds连接到java bean。这个bean——和所有其他bean一样——通过注入jsf获得其他bean,但是当我从flex远程访问bean时,它不包含注入的bean(比如localizer和accesmanager,都是会话范围),并且我无法连接到jsf会话(FacesContext.getCurrentInstance()为null)。这是因为flex创建了一个bean的新实例,我认为它与jsf注入的当前实例不同

我可以通过在Javabean中创建一个新的实体管理器从flex连接到数据库,但这不是我想要的,因为它又是另一个实体管理器……我想要持久化并通过accessmanager bean获取数据

我知道exadel fiji和flamingo,但我不能与fiji合作,因为我的jsf应用程序包括icefaces组件,然后它不能与fiji需要的richfaces合作。flamingo只能使用JBossSeam和spring。是这样吗

我也读过SpringFlex集成,但是jsf应用程序并不是用spring创建的,我不想在这么大的jsf应用程序中集成spring。 昨天我读了关于FlexFactory接口的文章。这个接口必须在我自己的工厂中实现,并在blazeds的service-config.xml中将其设置为工厂。我仍然实现自己的工厂,但我只通过servlet上下文获得应用程序范围的Bean,而我通过FlexContext.getServletContext().getAttribute(“Bean”);而不是会话范围的bean

我希望有机会连接flex和jsf。。。 谢谢

FacesContext.getCurrentInstance()为空

只有当当前请求未通过
FacesServlet
传递时,才会发生这种情况。换句话说,请求URL与
FacesServlet
URL模式不匹配。它就是负责创建threadlocal
FacesContext
实例的人

但是您实际上不需要这里的
FacesContext
。由于JSF只是在ServletAPI的顶部运行,所以您还可以转到低级,并利用它获取会话范围的托管bean。JSF将会话范围的托管bean存储为
HttpSession
的属性,托管bean名称作为键

因此,例如,如果您有一个会话范围的托管bean,其托管bean名称为
myBean
,并且您手头有
HttpServletRequest
,那么您也可以按如下方式访问它:

MyBean myBean = (MyBean) request.getSession().getAttribute("myBean");
FacesContext.getCurrentInstance()为空

只有当当前请求未通过
FacesServlet
传递时,才会发生这种情况。换句话说,请求URL与
FacesServlet
URL模式不匹配。它就是负责创建threadlocal
FacesContext
实例的人

但是您实际上不需要这里的
FacesContext
。由于JSF只是在ServletAPI的顶部运行,所以您还可以转到低级,并利用它获取会话范围的托管bean。JSF将会话范围的托管bean存储为
HttpSession
的属性,托管bean名称作为键

因此,例如,如果您有一个会话范围的托管bean,其托管bean名称为
myBean
,并且您手头有
HttpServletRequest
,那么您也可以按如下方式访问它:

MyBean myBean = (MyBean) request.getSession().getAttribute("myBean");

谢谢,这真的很有帮助!通过FlexContext,我得到了HttpRequest:HttpServletRequest hsr=FlexContext.getHttpRequest();this.accessManager=(accessManager)hsr.getSession().getAttribute(“accessManagerBean”);我不知道为什么我没有和它一起工作!我也在其他场合使用过这个词……但有时我工作几个小时后就失明了;)谢谢谢谢,这真的很有帮助!通过FlexContext,我得到了HttpRequest:HttpServletRequest hsr=FlexContext.getHttpRequest();this.accessManager=(accessManager)hsr.getSession().getAttribute(“accessManagerBean”);我不知道为什么我没有和它一起工作!我也在其他场合使用过这个词……但有时我工作几个小时后就失明了;)谢谢亲爱的David,你能分享你如何集成icefaces和blazeds的示例代码吗?我在这里回答你的问题:亲爱的David,你能分享你如何集成icefaces和blazeds的示例代码吗?我在这里回答你的问题: