问题
I'm developing an application on Glassfish 3. I have an EJB that looks like this:
@LocalBean
@Stateless
public class MyBean {
public void doSomething() {}
}
My client code (running inside the same application) looks like this:
MyBean mb = (MyBean) InitialContext.doLookup(MyBean.class.getName());
According to a few sources, this should be a valid lookup method, but it throws a NameNotFoundException. What am I doing wrong?
回答1:
According to what sources? I would personally use portable JNDI names specified in EJB 3.1. See:
- Portable Global JNDI names by Mahesh Kannan
- What is the syntax for portable global JNDI names in EJB 3.1? in GlassFish's EJB FAQ
- Portable Global JNDI Names by Ken Saks
- Application-specified Portable JNDI Names by Ken Saks
Depending on the packaging, I would use a module-scoped or an application-scoped JNDI name.
BTW, GlassFish logs the portable JNDI names at deployment time.
来源:https://stackoverflow.com/questions/3402317/looking-up-an-ejb-dynamically