栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java EE6的类级别上声明@Resource和@EJB

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java EE6的类级别上声明@Resource和@EJB

java:comp/env/
命名空间是有时有点了解的功能。该名称空间对应于所谓的
Enterprise Naming Context
(ENC)。

这就像与每个组件相关联的私有“哈希图”一样,整个Web模块被视为一个组件,而各个EJB Bean也分别被视为组件。

您将此私有名称空间主要用于 别名目的 。如果在“ ejb / PlaceBid”下映射某些内容,则所有(帮助程序)代码都可以使用“ ejb /
PlaceBid”,并且在一个全局位置(本例中为servlet,但也可以是XML)可以确定精确映射的内容对它。如果所有代码都直接发送

java:global/...
到该名称,则可能会有数十个硬编码依赖项。

因此,如果需要额外的重定向,则可以使用它。


其他注意事项:

1.使用EJB SessionContext,您可以直接按以下方式引用此名称空间:

PlaceBid placeBid = (PlaceBid)sessionContext.lookup("ejb/PlaceBid");

这里的“ ejb / PlaceBid”是ENC中的相对名称。

2.如上所述,ENC对于每个组件都是私有的。不同的EJB可以将给定的相对名称映射为不同的名称。

context.lookup("java:comp/env/ejb/PlaceBid")
因此可以根据调用的组件返回不同的内容。

3.从历史上看,ENC早于我们现在所说的 注入
。在某种程度上,当您以XML指定映射时,您将某些东西“注入”到与该组件关联的私有“哈希映射”中。现代版本注入字段,构造函数或属性(setter)中,而旧版本注入“键”中。

即使在EJB3.1中,历史上的“注入”机制仍然在后台运行。如果您在字段上使用@EJB执行看似正常的注入,那么这还将在JNDI ENC中自动创建一个条目。例如

package test;@Statelesspublic class MyBean {   @EJB   private MyService myService;}

在这种情况下,注入到myService中的任何内容也将存储在ENC中,名称为

java:comp/env/test.MyBean/myService
。要使用您在Servlet上使用@EJB注释完成链接:您可以选择使用
name
属性指定在ENC中存储引用的名称:

@Statelesspublic class MyBean {   @EJB(name = "ejb/PlaceBid")   private MyService myService;}

有点反常理,但是在大多数情况下,

name
此处的属性并不是指向要注入对象的 来源的 东西,而是在ENC中用作注入 目标的对象



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号