【问题标题】:Is Reflection allowed within EJBs?EJB 中是否允许反射?
【发布时间】:2015-05-31 15:28:20
【问题描述】:

我想知道,在 EJB (EJB3.x) 中允许使用哪些反射部分,不鼓励使用哪些部分,禁止使用哪些部分。

[编辑] 我一般说的是不同 EJB 类型上的 getMethod()、method.invoke() 等东西,所以没有 java POJO 的东西。

我搜索了 EJB 核心规范,但没有找到真正的提示。

我个人认为,避免在框架之外使用反射是一种很好的编程风格,但问题仍然存在,标准允许哪些部分?

提前致谢!

【问题讨论】:

  • 这个问题不具体。在 EJB 中的什么环境下?因为 ejb 会话 bean 中使用的第三方库可能会使用反射。但是对 ejb 会话 bean 本身执行反射调用当然不是一个好主意,因为 ejb 容器如何提供对 bean 的引用取决于实现,有些使用代理,有些继承自您自己的会话 bean
  • 感谢您的提示,我详细说明了我的问题。我的意思是对 EJB 类型使用反射。

标签: reflection ejb ejb-3.0 ejb-3.1 ejb-3.2


【解决方案1】:

您是否看到规范 EJB 3.1 在第 21.2.2 点中所说的内容?

企业 bean 不得尝试查询类以获取有关声明的信息 由于安全规则,企业 bean 无法以其他方式访问的成员 Java 语言的。企业 bean 不得尝试使用反射 API 来访问 Java 编程语言的安全规则使信息不可用。

一般来说 - 您不应违反语言定义的安全规则。

【讨论】:

  • 我找到了那个。我曾经了解到,在 EJB 上通常禁止使用反射,但这没有涉及。这意味着只要方法是公共的,EJB 代理上的 method.invoke() 就可以了,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多