У меня странная (?) Проблема с EJB, который я хочу развернуть на своем сервере приложений Glassfish 3.1.
У меня есть этот компонент, который должен постоянно выполняться в Glassfish с использованием аннотации @Schedule
.Это работало хорошо для меня, пока я не добавил некоторый код в EJB, обращающийся к базе данных.
@Stateless
public class MyBean implements MyBeanLocal {
@Schedule(second = "*", minute = "*", hour = "*")
public void initiateProcess() {
MyCoordinator mc = new MyCoordinatorImpl();
List<Entity> entities = mc.methodAccessingDB();
}
}
Это мой EJB, который выполняется каждую секунду.Как я сказал выше, я могу развернуть этот EJB, и он успешно выполнится, если я не вызову ac.methodAccessingDB()
.Это означает, что я даже не могу развернуть его на Glassfish.Glassfish говорит мне
Недопустимый ejb jar [...]: он содержит ноль ejb.Примечание: 1. Для действительного ejb jar требуется как минимум один сеанс, объект (стиль 1.x / 2.x) или управляемый сообщениями компонент.2. EJB3 + объектные бины (@Entity) являются POJO, и, пожалуйста, упакуйте их как библиотечный jar.3. Если файл JAR содержит действительные EJB-компоненты, которые аннотированы аннотациями уровня компонентов EJB (@Stateless, @Stateful, @MessageDriven, @Singleton), пожалуйста, проверьте server.log, чтобы увидеть, были ли аннотации обработаны правильно.для получения более подробной информации.
Если я просто напишу List<Entity> entities = null;
вместо List<Entity> entities = ac.methodAccessingDB();
, я могу развернуть его, и он будет работать нормально.