我需要确保给定的 bean 是使用会话范围定义的。
我知道我可以使用ctx.isSingleton()
或ctx.isPrototype()
,其中ctx
是我的(Web)Application Context,但是,没有isSession()
。
如果你想知道为什么我需要这样的东西,请检查这个问题。
相关:我可以以编程方式确定Spring bean是否不是单例吗?
我会尝试:
AbstractApplicationContext abstractContext = (AbstractApplicationContext) context;
BeanFactory = beanFactory = abstractContext.getBeanFactory();
BeanDefinition beanDefinition = ((DefaultListableBeanFactory)beanFactory).
getBeanDefinition("beanName");
boolean isSessionScope = "session".equals(beanDefinition.getScope());
我不是100%确定这是否是一个定义。getScope()返回“session”或“sessions_scope”或类似的内容,但我认为找到正确的字符串应该没有问题。
获取< code > DefaultListableBeanFactory 的另一种方法是通过注入或实现< code>BeanFactoryAware接口来获取它。
如果应用程序上下文属于< code > GenericApplicationContext 类型,则可以直接使用< code > GenericApplicationContext . getbean definition(String name)方法。
我仍在学习合适的JavaEE模式,希望您能给我一些关于解决这个问题的最佳工具的建议。 我有一个需要管理多个智能代理实例的系统。客户端可以创建新实例,也可以按名称访问所需实例。多个客户端可以同时访问同一个代理。 我们的计划是通过REST接口向代理公开操作,因此调用可能类似于: 这些会话在重启后不会持续,所以我不寻求资源管理。 我的想法是,我们可以使用一个会话bean来管理名称到代理的映射,然后将其注
> 在EJB3.0及其之前的版本中,该问题是如何处理的? 如果它保留了客户端特定的会话状态,那么单个实例将拥有所有客户端(试图并发访问)的特定数据?它会安全吗?? 如果我们可以在其他会话bean中使用静态最终变量和静态初始值设定项块或静态方法来初始化它们(因为静态变量也是每个类的数据,而不是每个实例的数据),以便跨bean共享公共数据,那么单例会话bean需要什么呢? 在singleton中使用业
问题内容: 有状态会话bean和HTTP会话之间有什么关系吗?我们将需要有状态会话Bean的用例是什么,而HTTP会话需要哪些用例。我可以将有状态会话Bean公开为静态Web服务吗? 问题答案: HTTP是一种无状态协议, 这意味着 它是服务器和客户端之间的实际传输协议- 是“无状态的, 因为它在调用之间不记得任何东西。 现在,首先阅读一下什么是HTTPSession和什么是Session Bea
有状态会话bean定义如下: 无状态会话bean无状态会话bean不维护与客户端的会话状态。当客户机调用无状态bean的方法时,该bean的实例变量可能包含特定于该客户机的状态,但仅限于调用期间。当方法完成时,客户端特定状态不应保留。然而,客户端可能会更改池化无状态bean中实例变量的状态,并且此状态将保留到下一次调用池化无状态bean时。除了在方法调用期间,无状态bean的所有实例都是等效的,允
因此,我尝试使用JSF托管bean上的方法访问HttpSession的属性 但是我得到了一个 为什么啊? 在我的一个会话bean被销毁之前,我需要访问该会话打开的外部服务的连接列表,它们当然存储在会话属性对象上。 我该怎么做?