2012-04-18 3 views
1

I имеет следующую структуру:создания EJB с @Singletone аннотаций ejb3.1

@Stateless 
public class BasicCMIRP { 
    @EJB 
    private MyDummyBean basicMXBeanz; 
} 

следующий класс

@Singleton 
public class MyDummyBean { 
} 

Это работает хорошо, но если я могу изменить его и сделать MyDummyBean реализовать DynamicMBean следующим образом:

@Singleton 
public class MyDummyBean implements DynamicMBean { 
    // ... implementation methods go here 
} 

Я получаю Can not create Bean BasicCMIRP, исключение в журнале, почему это?

В прошлом я имел MyDummyBean реализовать DynamicMBean и сделал этот класс синглтон, пометив конструктор частного и создание статического getInstance() метода, но с новой Java EE 6 Я хотел использовать новую аннотацию, чтобы сделать свою жизнь проще, но что-то не работает, поскольку я ожидаю, что он сработает. Есть идеи?

+0

ах я новичок в stackoverflow, никогда не беспокоился об этом бит теперь примет ответы –

ответ

0

Я нашел решение: если бобин реализует более одного интерфейса, он должен быть помечен @LocalBean.

+1

Это только отчасти верно. Если ваш bean-компонент реализует бизнес-интерфейс, и вы хотите ввести его классом, а не интерфейсом THEN, вам понадобится 'LocalBean'. В классе 'BasicCMIRP' вы вводите' MyDummyBean' по классу, а не по интерфейсу 'DynamicMBean'. Это была ваша основная проблема. –

+0

Более конкретно, когда компонент не имеет интерфейсов, его клиентский вид по умолчанию является «LocalBean», а когда компонент реализует ровно один интерфейс (за пределами некоторых интерфейсов javax.ejb и java.io), по умолчанию клиентский вид - это локальный интерфейс. –

Смежные вопросы