2010-08-04 3 views
2

Я занимаюсь разработкой приложений на Glassfish 3. У меня есть EJB, который выглядит следующим образом:Глядя в EJB динамически

@LocalBean 
@Stateless 
public class MyBean { 
    public void doSomething() {} 
} 

Мой код клиента (работает внутри одного приложения) выглядит следующим образом:

MyBean mb = (MyBean) InitialContext.doLookup(MyBean.class.getName()); 

Согласно нескольким источникам, это должен быть действительный метод поиска, но он генерирует исключение NameNotFoundException. Что я делаю не так?

ответ

2

По каким источникам? Я лично использовал бы портативные JNDI-имена, указанные в EJB 3.1. См:

В зависимости от упаковки, я хотел бы использовать модуль или с именем JNDI с областью приложения.

BTW, GlassFish регистрирует портативные имена JNDI во время развертывания.

+1

Мои источники: http://www.devx.com/tips/Tip/35010 и http://www.roseindia.net/ejb/ejb-lookup.shtml. Кажется, что оба они полностью полны дерьма. –

+2

@Mike До EJB 3.1 имена JNDI не были стандартизованы, поэтому нет общего правила, JNDI-имена зависят от сервера приложений. PS: Я, как правило, игнорирую roseindia и devx «технические подсказки», я не считаю их высококачественными ресурсами. –