Я два приложения развернут на GlassFish - приложения А и В.CDI и EJB смешайте с GlassFish 3.1
Оба развернуты в качестве военного пакета, приложение B используют некоторые компоненты из приложения А.
Теперь в приложении ИИ имеет интерфейс:
public interface BusinessInterface() extends SomeOtherInterface {
void someAction();
}
у меня 3 реализации этого интерфейса - два в приложении А, один в приложении B: BusinessInterfaceA1, BusinessInterfaceA2, BusinessInterfaceB
До тех пор, пока все они являются CDIBeans, все в порядке - я использую пользовательские аннотации @Qualifier (@ BusinessInterfaceA1, @ BusinessInterfaceA2) и аннотацию @Default для реализации B, чтобы отличать их.
Но теперь мне нужны обе реализации приложения, чтобы быть государственными EJB, и это то, где это становится смешно.
Когда я только добавить @Statefull аннотацию на обеих реализациях я получил что-то вроде этого:
javax.servlet.ServletException: org.jboss.weld.exceptions.WeldException: WELD-000049
детали:
java.lang.IllegalStateException: Unable to convert ejbRef for ejb BusinessInterfaceA1 to a business object of type interface SomeOtherInterface
Как я могу это исправить? Мне нужно все реализации будет доступен в способе, которым я мог бы придать им нравится
@Inject @SomeAnnotation private BusinessInterface businessInterface;
Это было долгое время, так как я нуждался в этом, у меня нет надлежащих условий, чтобы проверить это прямо сейчас, но все равно спасибо. – slnowak