java - How to specify the EJB bean name in the JNDI tree in JEE7 -


i'm not sure if generic jee6 question or if wildfly 10/jboss7 eap implementation specific question.

i'm trying specify/override default beanname used in ejb jndi mapping more meaningful me.

for example:

loginmanagerbean:

@stateless public class loginmanagerbean extends basemanagerbean implements loginmanager { .... } 

loginmanager:

@local public interface loginmanager{ .... } 

in context, wf10 automatically create jndi mapping ejb as:

ejb:myapp/myjar/loginmanagerbean!loginmanager 

in wildfly 10 documentation ejb naming conventions, says stateless beans:

ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface> 

.... ....

bean-name : name of bean doing lookup. bean name typically unqualified classname of bean implementation class, can overriden through either ejb-jar.xml or via annotations. bean name part cannot empty string in jndi name.

however, cannot seem find annotation use specify bean name in annotation. if read docs @ejb states beanname parameter is:

the ejb-name of enterprise java bean reference mapped

so docs, not seem beanname right parameter use.

so how can rename ejb beanname in mapping of choice? instance, annotation can use make mapping read:

ejb:myapp/myjar/myreallycoolname!loginmanager 

if you're using jbosseap 7/wildfly 10.x javaee 7, although same answer applies java ee 6.

you appear using local interfaces, none of instructions linked apply because remote ejb clients. therefore these statements:

in context, wf10 automatically create jndi mapping ejb as:

ejb:myapp/myjar/loginmanagerbean!loginmanager 

are incorrect.

when deploy application of jndi names logged in server console:

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 

most of time should not care jndi names because in general each ejb unique , server find right implementation:

public class loginclient {      @ejb     private loginmanager loginmanager;      ... 

}

if want use jndi lookups , want create more work can specify bean name:

@stateless(name="foo") public class loginmanagerbean implements loginmanager {     ... 

which yields:

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 

and can these if must:

loginmanager loginmanager = (loginmanager)(new initialcontext().lookup("java:app/serverapp/foo")); 

or using injection:

     @ejb(beanname="foo")      private loginmanager loginmanager; 

btw, i'm deploying sample ejb jar here (serverapp.jar). of names have additional path element if you're using ear file.


Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -