我不确定这是一个通用的JEE6问题,还是一个Wildfly 10/JBoss7EAP实现的特定问题。
我试图指定/重写EJB映射中使用的默认beanName,使之对我更有意义。
例如:
LoginManagerBean:
@Stateless
public class LoginManagerBean extends BaseManagerBean implements LoginManager {
....
}LoginManager:
@Local
public interface LoginManager{
....
}在此上下文中,WF10将自动为该EJB创建JNDI映射,如下所示:
ejb:myApp/myJar/LoginManagerBean!LoginManager在用于EJB命名约定的Wildfly 10文档中,它提到了无状态bean:
ejb:/! ………… bean-name :这是您正在查找的bean的名称。bean名称通常是bean实现类的不限定类名,但可以通过ejb-jar.xml或通过注释覆盖。bean名称部分不能是JNDI名称中的空字符串。
但是,我似乎找不到在注释中使用哪个注释来指定bean名称。如果我读取@EJB的文档,它会声明beanName参数是:
此引用映射到的企业Java Bean的ejb名称
因此,从文档来看,beanName似乎不是正确使用的参数。
那么,如何在映射中将EJB重命名为我所选择的东西呢?例如,我可以使用什么注释来读取映射:
ejb:myApp/myJar/MyReallyCoolName!LoginManager发布于 2017-04-08 01:19:07
如果您使用的是JBossEAP 7/WildFly10.x,那么这就是JavaEE 7,尽管JavaEE 6也有相同的答案。
您似乎只使用本地接口,所以您所链接的指令都不适用,因为它们只适用于远程EJB客户端。因此,这些声明:
在此上下文中,WF10将自动为该EJB创建JNDI映射,如下所示: ejb:myApp/myJar/LoginManagerBean!LoginManager
是完全不正确的。
部署应用程序时,所有JNDI名称都记录在服务器控制台中:
java:global/serverapp/LoginManagerBean!com.stackoverflow.p43282192.LoginManager
java:app/serverapp/LoginManagerBean!com.stackoverflow.p43282192.LoginManager
java:module/LoginManagerBean!com.stackoverflow.p43282192.LoginManager
java:global/serverapp/LoginManagerBean
java:app/serverapp/LoginManagerBean
java:module/LoginManagerBean大多数情况下,您不应该关心JNDI名称,因为通常每个EJB都是唯一的,服务器将找到正确的实现:
public class LoginClient {
@EJB
private LoginManager loginManager;
...}
如果您想使用JNDI查找,并且希望为自己创建更多的工作,那么可以指定bean名称:
@Stateless(name="Foo")
public class LoginManagerBean implements LoginManager {
...产生的结果:
java:global/serverapp/Foo!com.stackoverflow.p43282192.LoginManager
java:app/serverapp/Foo!com.stackoverflow.p43282192.LoginManager
java:module/Foo!com.stackoverflow.p43282192.LoginManager
java:global/serverapp/Foo
java:app/serverapp/Foo
java:module/Foo如果你必须的话,你可以查一下这些:
LoginManager loginManager = (LoginManager)(new InitialContext().lookup("java:app/serverapp/Foo"));或使用注射:
@EJB(beanName="Foo")
private LoginManager loginManager;顺便说一下,我只是在这里部署示例EJB (serverapp.jar)。如果使用EAR文件,其中一些名称有一个额外的path元素。
https://stackoverflow.com/questions/43282192
复制相似问题