Mat*_*ler 4 jndi java-ee stateful-session-bean ejb-3.0
我是Java EE的新手,我无法弄清楚为什么我应该更喜欢JNDI查找而不是注入有状态会话bean?(这就是我在关于它的课程幻灯片上阅读的内容)
通常,当您处于不支持注入的上下文中时,正在执行JNDI查找.
如果您处于上下文中,仍有几个原因.一个是当你注入的bean将被序列化时,并且在反序列化之后不知道如何再次重新注入(当在客户端上使用状态时,这发生在JSF本机托管bean上).
最后一个原因可能是老师想到的原因.有状态会话bean可以被钝化(之后它们将被序列化),并且在某些情况下,您可能也不希望注入的资源也被序列化.在这种情况下,您不会将资源存储在实例变量中,但每次需要时都会从JNDI请求一个新资源.
另一个原因是,使用JNDI,您可以以编程方式决定要检索哪个bean,但这不是特定于有状态会话bean,并且适用于任何类型的注入.
注意,上面主要是关于注入INTO有状态会话bean.正如Miljen正确陈述的那样,还存在将有状态会话bean注入某些东西的问题.如果您还没有为SFSB分配范围(通过CDI的@SessionScope,@ RequestScope等),那么注入Servlet或其他共享资源(如应用程序范围的托管bean)将向所有用户公开相同的SFSB,这是你最不想要的东西.
如果您不能使用CDI(例如,您可能只是不知道它存在),那么通过JNDI获取SFSB是一种解决方法.如果你希望保持状态的时间长于单个方法调用,那么你必须将它存储在某个地方,例如在HTTP会话中.
| 归档时间: |
|
| 查看次数: |
2765 次 |
| 最近记录: |