@EJB 注入和企业命名上下文 - 两者之间的关系

发布于 2024-07-25 11:56:30 字数 318 浏览 3 评论 0原文

Java EE 规范规定,像这样的 EJB 注入:

@EJB MyInterface myBean;

将在企业命名上下文中创建 en 条目,即。 java:comp/env/.MyInterface/myBean。 由部署者负责将此上下文条目绑定到实际值并将该值注入到 myBean 字段中。

现在我感觉我在这里遗漏了一些东西:

为什么需要上下文条目? 所请求的 EJB 实例将被注入,那么为什么需要上下文中的条目呢? 为什么注入必须通过上下文条目进行?

The Java EE specification states that an EJB injection like this:

@EJB MyInterface myBean;

will create en entry in the Enterprise Naming Context, viz. java:comp/env/<FQN>.MyInterface/myBean. It is up to the deployer to bind this context entry to a real value and to inject this value in the myBean field.

Now I have the feeling I am missing something here:

Why is the context entry necessary? An instance of the requested EJB will be injected, so why is the entry in the context needed? Why does the injection has to happen via the context entry?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽清梦 2024-08-01 11:56:30

所有收到的答案都没有解决这个问题:如果注入注释提供了足够的信息来解决注入问题,为什么还需要 ENC 条目(所以我的第一个想法是它是多余的)。

答案是可以在部署描述符中覆盖注入。 这是因为 EJB 标准定义了开发人员角色。

它假设“bean 提供者”可以请求注入,甚至提供默认值。 但“应用程序汇编器”可以覆盖这些值。 假设“bean 提供者”使用注释或 XML,并且假设“组装者”主要使用 XML。

这就是 EJB 标准定义 ENC 和注入之间关系的原因。

All the received answers did not address the issue: why is an ENC entry needed if the injection annotation gives enough information to resolve the injection (so my first thought was that it was redundant).

The answer is that the injection can be overridden in the deployment descriptor. This is because the EJB standard defines developer roles.

It assumes that the "bean provider" can request an injection, even provide default values. But the "application assembler" can override these values. The "bean provider" is assumed to use annotations or XML, and the "assembler" is assumed to mainly use the XML.

That is why the EJB standard defines this relation between the ENC and an injection.

阳光下慵懒的猫 2024-08-01 11:56:30

我认为如果您需要注入一个有状态会话 Bean,您将需要一些上下文来了解您的 EJB 实例和一些先前注入的 EJB 依赖项(对该实例)之间的关系。

I think if you need to inject an Stateful Session Bean you gonna need some context that knows the relation between your EJB instance and some previously injected EJB dependency (to that instance).

将军与妓 2024-08-01 11:56:30

它允许您通过某种方式获得的字符串进行查找。

It is to allow you lookups by somehow obtained string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文