我正在尝试实现一个服务,该服务通过线程异步执行轮询,然后通知观察者列表。
其体系结构如下:多个并发、jsf会话bean、可以注册到单例服务,并在新的数据更新可用时由线程通知。通知后,每个jsf会话bean执行一些操作,方法是访问其他会话范围内的spring (这些是在context.xml中定义的服务)。
我现在面临的问题是,更新线程无法访问那些会话范围内的spring,因为它们的代理不能从更新线程中解决,这是可以理解的,因为该线程是在应用程序上下文之外实例化的,并且在可用bean上没有可见性。但是,如何在Spring中实现这样的机制呢?
我还尝试使用一个任务执行器bean,希望Spring以某种方式使它成为当前上下文的一部分,但失败了(通知的jsf会话bean调用的会话范围的spring无法解析)。
任何帮助都将不胜感激。谢谢。
编辑:添加了有关通信流程的更多信息。
每次新用户生成新会话时,都会创建相应的jsf会话bean。这个bean (一旦绑定到http会话)将被注册到spring服务(单例)。当至少注册一个jsf会话bean时(因此,当至少有一个观察者时),此服务将激活轮询机制。当服务发现新的更新可用时,它将通过调用它们的" update ()“方法通知注册的观察者。在此方法中,每个观察者(或jsf会话bean)将通过其他一些作为代理的春季会话bean执行一些操作。这就是“通信”失败的地方,因为原始轮询线程(更新服务中的线程)不知道如何解析spring代理。是否有办法使此信息可供轮询线程使用?谢谢。
发布于 2011-06-27 05:49:00
如何使用一个已知的对象-- JSF和Spring会话bean --作为观察者?您需要对每个请求轮询该对象。但在这种情况下,您最好只是投票的原始来源。
https://stackoverflow.com/questions/6490740
复制相似问题