gpt4 book ai didi

jakarta-ee - 为什么更喜欢 JNDI 查找而不是有状态 session bean 的 EJB 注入(inject)?

转载 作者:行者123 更新时间:2023-12-04 23:25:32 25 4
gpt4 key购买 nike

我对 Java EE 很陌生,我不明白为什么我应该更喜欢 JNDI 查找而不是有状态 session bean 的注入(inject)? (这就是我在关于它的类(class)幻灯片上读到的)

最佳答案

通常,当您处于不支持注入(inject)的上下文中时,会进行 JNDI 查找。

如果您处于这种情况,仍然有几个原因。一种是当您注入(inject)的 bean 将被序列化时,并且在反序列化后不知道如何再次重新注入(inject)(在客户端上使用状态时,JSF native 托管 bean 会发生这种情况)。

这最后一个原因可能就是老师心目中的原因。有状态 session bean 可以被钝化(之后它们将被序列化),并且在某些情况下您可能不希望注入(inject)的资源也被序列化。在这种情况下,您不会将资源存储在实例变量中,而是会在每次需要时从 JNDI 请求一个新的。

另一个原因是,使用 JNDI,您可以以编程方式决定检索哪个 bean,但这并不特定于有状态 session bean,并且适用于任何地方的所有类型的注入(inject)。

请注意,以上主要是关于注入(inject) INTO 有状态 session bean。正如上面的 Miljen 正确指出的,还有将有状态 session bean 注入(inject)某物的问题。如果您没有为 SFSB 分配范围(通过 CDI 的 @SessionScope、@RequestScope 等),那么注入(inject) Servlet 或其他共享资源(如应用程序范围的托管 bean)将向所有用户公开相同的 SFSB,这是您最可能不想要的。

如果您不能使用 CDI(例如,您可能只是不知道它存在),那么通过 JNDI 获取 SFSB 是一种解决方法。如果您想让状态保持比单个方法调用更长的时间,那么您将不得不将它存储在某个地方,例如在 HTTP session 中。

关于jakarta-ee - 为什么更喜欢 JNDI 查找而不是有状态 session bean 的 EJB 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13331756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com