我继承了一个Java EE Web应用程序,其中包含一组JSF,它使用EJB注入来访问@Remote
接口:
@EJB(lookup = "java:global/myapp-business/myapp-services/CustomerFacadeBean")
它可以工作,但是当我正在审查部署人员的应用程序时,我想将其作为参数。
我认为开发人员必须有充分的理由只使用lookup
,所以作为第一个尝试,我愿意复制相同的场景。
但是,我希望有意见使这种注射尽可能“便携”和“可配置”。如果我在Ejb 2的旧时代没有错,那么web.xml中就会有ejb-ref。
答案 0 :(得分:1)
@EJB
声明EJB引用,并且应用程序服务器需要在部署时支持EJB引用的可配置绑定。注释的lookup
属性允许开发人员指定默认绑定,除非部署者覆盖它。您需要查阅应用程序服务器文档以确定如何配置此绑定。
注意,@EJB
注释具有name
属性,这是部署者必须配置的属性。如果未提供name属性,则默认为<class>/<member>
。例如,如果类为test.MyBean
且字段为myEjb
,则EJB引用名称为test.MyBean/myEjb
。
答案 1 :(得分:0)
从J2EE 6+查找属性是JNDI查找以解析目标所必需的。旧版本中使用的JNDI查找的其他方式如下所示:@EJB(name =“myBean”)在组件命名空间中创建引用java:comp / env / myBean。 如果在属性中没有指定name,那么它会创建一个引用为java:comp / env / com.example.MyClass / myField