Я столкнулся с одной проблемой, которую не могу понять. Я хотел бы добавить один EJB в другой, как это:
@Stateless
public class MainEJB {
@EJB
private HelperEJB helper;
}
@Stateless
public class HelperEJB implements HelperInterface {
}
Как видите, HelperEJB предоставляется через представление без интерфейса (примечание: HelperInterface
- это интерфейс из внешней библиотеки, а не интерфейс EJB). Это не работает, и я получу следующее исключение:
javax.naming.NamingException: Lookup failed for 'org.mycompany.ejb.HelperEJB #org.mycompany.ejb.HelperEJB'
Однако, если HelperEJB
не реализует какой-либо интерфейс:
@Stateless
public class HelperEJB {
}
Это будет работать. Это также будет работать, если у меня есть @Local
интерфейс, стоящий между MainEJB и HelperEJB.
Почему это невозможно сделать с помощью интерфейса без интерфейса, как в моей первой попытке?