Я пытаюсь написать тест интеграции для существующего приложения Java EE, которое использует Seam и Hibernate и развертывается в Glassfish.Почему возникает событие InstantiationException, когда тест JUnit пытается запустить Seam?
Однако в настоящее время тест не запускает шов в самом начале. Кажется, это связано с тем, что он не может создать экземпляр компонента Quartz Scheduler - см. Код ниже. Трассировка стека исключений также ниже.
Любая помощь была бы оценена ...
Это могут быть ненужные подробности, но я написал тест с использованием JUnit (а не TestNG), как описано here. Тест расширяет AbstractSeamTest и имеет методы @Test, которые создают экземпляр ComponentTest и переопределяют testComponents, как описано here. Приложение развертывается в существующий локальный экземпляр Glassfish, используя Cargo в фазе предварительной интеграции Maven, и тест запускается с использованием плагина Failsafe.
InitialiseQuartz класс:
@Name("initialiseQuartz")
@Scope(ScopeType.APPLICATION)
@Startup
public class InitialiseQuartz {
private QuartzTriggerHandle qth;
@In(create=true)
private EmailService emailService;
@Create
public void startSchedule() {
System.out.print("Schedule started");
qth = emailService.generateDailyEmail("0 0 7 * * ?");
}
@Destroy
public void stopSchedule() {
try {
qth.cancel();
} catch (SchedulerException se) {
}
}
}
Стек след:
org.jboss.seam.InstantiationException: Could not instantiate Seam component: initialiseQuartz
at org.jboss.seam.async.AbstractDispatcher.extractAndValidateParameters(AbstractDispatcher.java:171)
at org.jboss.seam.async.AbstractDispatcher.createTimerSchedule(AbstractDispatcher.java:113)
at org.jboss.seam.async.ThreadPoolDispatcher.scheduleInvocation(ThreadPoolDispatcher.java:56)
at org.jboss.seam.async.ThreadPoolDispatcher.scheduleInvocation(ThreadPoolDispatcher.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
at org.jboss.seam.async.ThreadPoolDispatcher_$$_javassist_seam_3.scheduleInvocation(ThreadPoolDispatcher_$$_javassist_seam_3.java)
at org.jboss.seam.async.AsynchronousInterceptor.aroundInvoke(AsynchronousInterceptor.java:40)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
at uk.police.kent.optica.schedule.EmailService_$$_javassist_seam_2.generateDailyEmail(EmailService_$$_javassist_seam_2.java)
at uk.police.kent.optica.schedule.InitialiseQuartz.startSchedule(InitialiseQuartz.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
at uk.police.kent.optica.schedule.InitialiseQuartz_$$_javassist_seam_1.startSchedule(InitialiseQuartz_$$_javassist_seam_1.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)
at org.jboss.seam.Component.callComponentMethod(Component.java:2275)
at org.jboss.seam.Component.callCreateMethod(Component.java:2198)
at org.jboss.seam.Component.newInstance(Component.java:2158)
at org.jboss.seam.contexts.Contexts.startup(Contexts.java:304)
at org.jboss.seam.contexts.Contexts.startup(Contexts.java:278)
at org.jboss.seam.contexts.ServletLifecycle.endInitialization(ServletLifecycle.java:143)
at org.jboss.seam.init.Initialization.init(Initialization.java:744)
at org.jboss.seam.mock.AbstractSeamTest.startSeam(AbstractSeamTest.java:929)
at com.ipl.rdhi.acceptance.RdhiAdapterIT.setUpBeforeClass(RdhiAdapterIT.java:118)
Шов версии 2.2. Я думаю, что проблема была вызвана тем, что он не смог запустить Seam и посмотреть на разных форумах, кажется, довольно много боли в попытке заставить Seam работать со встроенным JBoss. Я замечаю, что документация Seam 2.3 с тех пор оставила SeamTest в пользу использования Arquillian, но, к сожалению, это не вариант для меня, так как это Glassfish версии 2.1, а Arquillian поддерживает только 3.1. –