2009-03-24 2 views
1

я создал и EJB с удаленным интерфейсом:давая EJB в JNDI

@Stateless 
public class TestSessionBean implements TestSessionRemote 
{ 

    public void businessMethod() 
    { 
      System.out.println ("***businessMethod"); 
    } 
} 

Я для доступа к нему из другого компонента (например, сервлет) работает на сервере с помощью:

ic = new InitialContext(); 
ic.lookup("myEJB"); 

Я использую netBeans 6.5.1 и glassfish v2.

Как я могу это сделать?

Спасибо, идо

ответ

2

фактически ejb3 использование именования по умолчанию, которым я не нашел способ обойти.

Имя для боба будет что-то вроде: TestSessionBean # package.TestSessionBean

Для Асесса дистанционного обслуживания вы можете сделать что-то вроде этого

InitialContext ctx = new InitialContext(); 
ctx.lookup(interfaceClass.getSimpleName()+"#"+interfaceClass.getName()); 

где InterfaceClass класса вашего пульта интерфейс.

Обратите внимание, что вы не указали удаленный интерфейс (или локальный, если на то пошло) для этого веб-сервера. вы не сможете уговорить theejb из другого контекста.

Что касается изменения имени, которое на самом деле я не думаю, это возможно с помощью анотаций. не уверен, хотя

+1

Жаль, что воскресил это почти месяц спустя. В Glassfish v2 вы можете делать @Stateless (mappedName = "fooBean"), а затем вы можете искать с помощью "fooBean". Это зависит от поставщика - он не переносится. Будьте осторожны, потому что в Glassfish 3 (EJB 3.1) это меняет некоторые. Вы все равно можете использовать сопоставленное имя с удаленным интерфейсом, но теперь есть стандартизованная настройка именования java: global. См. Http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html, если вы еще недостаточно запутались. – Jim