2011-02-08 4 views
1

По какой-то странной причине я получаю следующее исключение.Исключение класса для исключения из состояния ejb

2011-02-08 09:53:30,667 ERROR [STDERR] (QuartzScheduler_Worker-9) java.lang.ClassCastException: org.javassist.tmp.java.lang.Object_$$_javassist_seam_7 cannot be cast to no.kommuneforlaget.fagsystem.saksapp.service.report.SystemlogListener 
2011-02-08 09:53:30,668 ERROR [STDERR] (QuartzScheduler_Worker-9)  at no.kommuneforlaget.fagsystem.saksapp.jobs.ESBLogListener.checkESBEvents(ESBLogListener.java:71) 
2011-02-08 09:53:30,668 ERROR [STDERR] (QuartzScheduler_Worker-9)  at no.kommuneforlaget.fagsystem.saksapp.jobs.ESBLogListener.scheduler(ESBLogListener.java:119) 
2011-02-08 09:53:30,668 ERROR [STDERR] (QuartzScheduler_Worker-9)  at sun.reflect.GeneratedMethodAccessor466.invoke(Unknown Source) 
2011-02-08 09:53:30,668 ERROR [STDERR] (QuartzScheduler_Worker-9)  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
2 

Я знаю, что это не должно быть исключение класса, потому что его правильный класс.

Код:

SystemlogListener systemlogListener = (SystemlogListener) Component.getInstance("systemlogListener", ScopeType.SESSION, true); 

А класс

@Name("systemlogListener") 
@Scope(ScopeType.SESSION) 
@AutoCreate 
@Stateful 
@TransactionManagement(TransactionManagementType.CONTAINER) //default 
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 
public class SystemlogListener implements SystemlogListenerLocal, Serializable { 

Можно ли обнаружить ошибку я сделал?

ответ

2

Я предполагаю, что Component.getInstance (...) возвращает введенный класс. Внедрение, которое вводится, не обязательно должно быть класса вашей реализации, а только вашего локального/удаленного интерфейса. Значит, вы можете применить к вашему интерфейсу SystemlogListenerLocal, но не к вашей реализации SystemlogListener.

Причина в реализации вашего AppServer, который мог бы использовать, например. прокси и делегирует методы вашей реальной реализации.

+0

Да, конечно. Я должен использовать интерфейс полностью. Не могу поверить, что я забыл об этом :) –

+0

Не могли бы вы поделиться образцом рабочего кода? Я получаю такое же исключение, у меня есть класс и интерфейс ... Но как мне заставить myClass получить экземпляр ... – efirat

+0

Я думаю, что это должно быть: myBeanInterface mb = (myBeanInterface) Component.getInstance ("myBeanName" , правда); – efirat