覆盖 JBoss EJB3.1 中的 JNDI 名称
overriding JNDI names in JBoss EJB3.1
我们正在使用 Maven 和 Artifactory,因此我们的 ear 文件的名称类似于
our-project-ear-0.0.1-20151215.151526-3.ear.
因此我们的 EJB 的 JNDI 名称具有类似
的名称
java:global/our-project-ear/our-project-ejb/AnEjbJar!com.acme.ourproject.SomeEjb.
这些名字不仅丑陋而且复杂,它们还嵌入了 Maven/Artifactory 添加的临时后缀。
我认为我们可以通过 JBoss 特定的 @RemoteHomeBinding
注释来简化名称,但我在 EAP 6.3 中找不到此注释。还有办法做到这一点吗?如果不是,我如何控制发布我的 EJB 的 JNDI 名称?
我自己想出来了。 @RemoteBinding
、@LocalBinding
、@RemoteHomeBinding
和 @LocalHomeBinding
注释已在 AS7.x 中逐步淘汰。 A version of the JBoss instructions for migrating from AS5/6 to AS7 (not the current one) 状态:
>In AS7 there is no possibility for custom JNDI names of EJB beans and it's not planned for 7.1.
>Therefor the annotation @RemoteBindings and @LocalBindings are not available.
推荐的方法是使用默认绑定。但是,也可以通过 @EJB
注释定义自定义 JNDI 名称,如 this Oracle blog:
中所述
The developer can select an additional JNDI name that resolves to a particular client view of a session bean by using the @EJB annotation. Starting with Java EE 6, the @EJB name() attribute value can be prefixed with any one of the three portable Java EE namespaces : java:global, java:app, java:module. This has the effect of exporting the dependency into the selected scope.
我想你要找的是:
@Ejb(lookup="java:/global/somecustomPath")
因为这不会影响在 JNDI 中绑定 bean 的位置,而是会影响在 JNDI 中找到它的位置。
如果我是对的,这是因为 JBOSS7 是一个 JEE6 应用程序服务器,并且 JEE6 在 JEE6 中引入了可移植全局 JNDI 名称的概念。
我们正在使用 Maven 和 Artifactory,因此我们的 ear 文件的名称类似于
our-project-ear-0.0.1-20151215.151526-3.ear.
因此我们的 EJB 的 JNDI 名称具有类似
的名称java:global/our-project-ear/our-project-ejb/AnEjbJar!com.acme.ourproject.SomeEjb.
这些名字不仅丑陋而且复杂,它们还嵌入了 Maven/Artifactory 添加的临时后缀。
我认为我们可以通过 JBoss 特定的 @RemoteHomeBinding
注释来简化名称,但我在 EAP 6.3 中找不到此注释。还有办法做到这一点吗?如果不是,我如何控制发布我的 EJB 的 JNDI 名称?
我自己想出来了。 @RemoteBinding
、@LocalBinding
、@RemoteHomeBinding
和 @LocalHomeBinding
注释已在 AS7.x 中逐步淘汰。 A version of the JBoss instructions for migrating from AS5/6 to AS7 (not the current one) 状态:
>In AS7 there is no possibility for custom JNDI names of EJB beans and it's not planned for 7.1.
>Therefor the annotation @RemoteBindings and @LocalBindings are not available.
推荐的方法是使用默认绑定。但是,也可以通过 @EJB
注释定义自定义 JNDI 名称,如 this Oracle blog:
The developer can select an additional JNDI name that resolves to a particular client view of a session bean by using the @EJB annotation. Starting with Java EE 6, the @EJB name() attribute value can be prefixed with any one of the three portable Java EE namespaces : java:global, java:app, java:module. This has the effect of exporting the dependency into the selected scope.
我想你要找的是:
@Ejb(lookup="java:/global/somecustomPath")
因为这不会影响在 JNDI 中绑定 bean 的位置,而是会影响在 JNDI 中找到它的位置。
如果我是对的,这是因为 JBOSS7 是一个 JEE6 应用程序服务器,并且 JEE6 在 JEE6 中引入了可移植全局 JNDI 名称的概念。