【问题标题】:Java EE 6, 5, 7 | List of managed beans or classes: EJBs , JSF beans and ..? [closed]Java EE 6、5、7 |托管 bean 或类的列表:EJB、JSF bean 和 ..? [关闭]
【发布时间】:2012-06-22 17:47:36
【问题描述】:

有人可以列出当前的托管 Bean 或 Java EE 5、6、7 中的类吗? 除了 EJB 和 JSF 托管 bean,它们是其他类吗?

在“EJB 3 in Action”一书的第 5 章(学习高级 EJB 概念)中提到:

"DI 仅在托管类中受支持并且您不能使用 在帮助程序或实用程序类中注入。”

这就是为什么我想知道通常可以支持依赖注入的托管 bean。

-如果有的话,请不要忘记提及在线参考和文档- 提前致谢。

【问题讨论】:

  • 你看过Docs for Platform MBeans吗?
  • @Brad 我刚刚调查了一下……好东西。你还有一些吗?谢谢!
  • @Brad:嗯,我认为亚瑟所说的“托管 bean”的概念与 MBean 没有任何关系。他似乎在谈论实例由容器管理、执行依赖注入等的类。
  • 你为什么不赞成我的问题?我只是问了一些简单的问题。这个问题不是愚蠢的,也不是直接引起混淆的......我希望我能追踪到那个投反对票的人!
  • @LuiggiMendoza 这个话题对我来说并不陌生。正如我根据我的小经验提到的一些案例,如 EJB、JSF Mbean。我在想这不仅仅是这些,这就是我问的原因,并认为这对像我这样的其他年轻人来说会受益。如您所见,该主题比预期的要广泛。

标签: java jsf jakarta-ee ejb managed-bean


【解决方案1】:

截至 EE 6:

  • EJB(EJB 3.1,第 2.8 节 - “与托管 Bean 规范的关系”)
  • CDI(JSR-299,第 1.2.3 节 - “与托管 bean 的关系”)
  • JSF(托管 Beans 1.0,MB.1.2 部分)

由于规范期望建立在托管 bean 规范之上,平台规范没有提供完整的列表,因此您必须查看 EE 6 中包含的每个规范。我对 JSF 的证据是最弱的,因为最新的 JSF 规范没有明确声明它建立在托管 bean 规范之上。但是,托管 bean 规范本身声明它旨在作为 JSF 的泛化。

也就是说,EE 6 平台规范中的表 EE.5-1 包含支持注入、PostConstruct 和 PreDestroy 的组件类列表。这个列表可以说比知道哪些组件技术列表是明确的“托管 bean”更有用。

  • Servlet(servlet、servlet 过滤器、事件监听器)
  • JSP(标签处理程序、标签库事件监听器)
  • JSF(作用域托管 bean)
  • JAX-WS(服务端点、处理程序)
  • EJB(bean、拦截器)
  • 托管 Bean [来自托管 bean 规范]
  • CDI(CDI 风格的托管 bean [几乎所有带有 beans.xml 的存档中的类],装饰器)
  • Java EE 平台(主类(静态)[应用程序客户端],登录回调处理程序)

【讨论】:

  • 依赖范围内的 CDI 注入对象算作托管对象吗?
  • @TomAnderson 根据 CDI 规范,“根据本规范的定义,大多数 Java 类,包括所有 JavaBean,都是托管 bean”,所以我认为是这样,但我不是 CDI 专家。
  • 短语“大多数 Java 类”不是您想在规范中找到的东西!我也不是 CDI 专家。您绝对可以注入这样的 bean,但我认为您不能将拦截器应用于对它们的方法调用。我不知道这是否意味着他们受到管理。没关系;一般来说,CDI bean 肯定在名单上。
  • “大多数 Java 类”的说法是口语化的。 3.1.1 节明确规定了类何时是托管 bean 的精确规则。
  • 这就是我要找的,谢谢!
【解决方案2】:

您是否知道任何 Java 类都可以通过编写符合 MBean Specification 的方式成为托管 bean。

您的问题要求在 Java EE 中提供“托管 bean 的当前列表”。所以简短的回答是“这取决于您正在运行的应用程序是否正在注册 MBean”。您可以针对您的 JVM 运行 JMX 客户端(例如 MX4J),以了解注册了哪些 bean。

我为Platform MBeans 提供的链接描述了一些可能在您的JVM 中默认可用的内容。

【讨论】:

  • 我想你说得对,我一直在寻找由容器或应用程序服务器和 java EE 版本的一个 API(如 JSF 2.0 或 Servlets ,和EJB)..但我认为您总体上是正确的。我得看看 MBean 规范。
  • 如果有人直接回答我的问题,我会等待,如果没有,我会接受你的。但首先 +1
猜你喜欢
  • 1970-01-01
  • 2014-04-30
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多