I am using EJB 3.1 in my application.
I want to send one EJB's JNDI look-up name in my application to another application so that it can use that at run time & communicate with my EJB. As the look-up name depends upon the name of the ear files deployed on the EJB container & the name of these ear files will be changing every time any changes are done in my application.
What is the procedure of finding out the look-up name of the any EJB programmatically.
First of all, I wouldn't recommend that approach. Why don't you fix JNDI names of your EJBs?
That said, you can call a method InitialContext#list
to iterate through the JNDI tree and find out the name of your EJB. There is a nice code example here, so I won't repeat it. An important note - calling ctx.list("")
will only give you first level of JNDI tree, so you will have to call that method recursively in order to obtain EJB names. Hint: EJBs are usually deployed under branch ejb.
See also: