Я хочу перевести длительный процесс в приложении Java EE из синхронного в асинхронное выполнение.Процесс должен запускаться автоматически, а затем запускаться каждый час.Проект выполняется в Glassfish 3.1 с Java EE 6.
После некоторого прочтения я считаю, что могу запускать такие сервисы в Java EE 6 через @Singleton
и @Startup
.Итак, я создаю новый класс
@Startup
@Singleton
public class MyService {
}
и запускаю существующие интеграционные тесты через maven.К моему удивлению, тесты провалились, вплоть до самого основного теста «страница есть».Они больше не находят веб-страницы, вместо этого получают страницы с ошибками.
Экспериментируя, я удаляю аннотацию @Startup
и снова запускаю тесты.На этот раз им это удается.
Запуск сервера вручную и переход на страницу дает ожидаемый результат: страница есть.Более того, в Eclipse тесты пройдены успешно с обоими аннотациями.Единственное отличие, которое я вижу, состоит в том, что сервер запускает затмение, а не плагин Cargo Maven.
Что здесь может пойти не так?Что мне нужно сделать, чтобы правильно использовать @Startup
?
Обновление: после возврата к IntelliJ IDEA из затмения у меня все еще остается эта проблема.Тем не менее, я вижу некоторые исключения - возможно, из них можно что-то сделать:
[# | 2011-07-25T10: 22: 51.529 + 0200 | SEVERE | glassfish3.1 | javax.enterprise.system.tools.deployment.org.glassfish.deployment.common | _ThreadID = 65; _ThreadName = Thread-1; | Исключительная ситуация при вызове класса org.glassfish.ejb.startup.EjbПрименение метода запуска
javax.ejb.EJBException: javax.ejb.CreateException: не удалось инициализировать службу Singleton MailService в com.sun.ejb.containers.AbstractSingletonContainer $ SingletonContextFactory.create (AbstractSingletonContainer.java:719) в com.sun.ejb.containersst.ContainingStainleSaingle449 вSingletonLifeCycleManager.doStartup (SingletonLifeCycleManager.java:155) at org.glassfish.ejb.startup.EjbApplication.start (EjbApplication.java:177) ...
Причина: javax.ejb.CreateException: не удалось инициализировать службу Singleton MailService в com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB (AbstractSingletonContainer.java:545) на com.sun.ejb.containers.AbstractSingletonContainer.access $ 100 (AbstractSingletonContainer.java:79) на сайтеcreate (AbstractSingletonContainer.java:717) ... еще 36
Вызвано: java.lang.NullPointerException в java.util.concurrent.ConcurrentHashMap.get (ConcurrentHashMap.java:768) в org.jboss.weld.manager.BeanManagerImpl.getBean (BeanManagerImpl.java:1209) в org.jboss.weld.manager.BeanManagerImpl.getBean (BeanManagerImpl.java:144) в org.glassfish.weld.services.JmpII (JCDISJIJD))