Hi the exception means you don't implement javax.jms.MessageListener. Maybe double check your class. Also ensure you dont use a wrong jms api but the org.apache.openejb:javaee-api one at runtime.
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> 2015-05-22 19:14 GMT+02:00 Renato Pereira Back <[email protected]>: > Hello, > > I am trying to run some tests with Open EJB and got the following error > when running an application with a MDB (EJB 2.0) declared on ejb-jar.xml as > follows: > > > > <message-driven> > <display-name>FechamentoMDB</display-name> > <ejb-name>FechamentoMDB</ejb-name> > > <ejb-class>br.com.softplan.sider.sip.bens.moveis.contabilidade.fechamento.FechamentoMDB</ejb-class> > <transaction-type>Bean</transaction-type> > <acknowledge-mode>Auto-acknowledge</acknowledge-mode> > <message-driven-destination> > <destination-type>javax.jms.Queue</destination-type> > </message-driven-destination> > </message-driven> > > Here's the stack trace: > > > > 22/05/2015 11:12:17 org.apache.openejb.util.OpenEJBErrorHandler > handleUnknownError > GRAVE: FATAL ERROR: Unknown error in Assembler. Please send the following > stack trace and this message to [email protected] : > java.lang.IllegalStateException: When annotating a bean class as > @MessageDriven without declaring messageListenerInterface, the bean must > implement exactly one interface, no more and no less. > beanClass=br.com.softplan.sider.sip.bens.moveis.movimentacoes.movimento.MovimentoMDB > interfaces= > at > org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:2603) > at > org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1726) > at > org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:344) > at > org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:379) > at > org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:884) > at > org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:757) > at > org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:515) > at > org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:373) > at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:352) > at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:147) > at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:65) > at org.apache.openejb.OpenEJB.init(OpenEJB.java:292) > at org.apache.openejb.OpenEJB.init(OpenEJB.java:272) > 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.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36) > at > org.apache.openejb.core.LocalInitialContextFactory.init(LocalInitialContextFactory.java:69) > at > org.apache.openejb.core.LocalInitialContextFactory.init(LocalInitialContextFactory.java:51) > at > org.apache.openejb.core.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:40) > at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667) > at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) > at javax.naming.InitialContext.init(InitialContext.java:223) > at javax.naming.InitialContext.<init>(InitialContext.java:175) > at > br.com.softplan.sider.sip.test.SipEJBCaseTest.getDataSource(SipEJBCaseTest.java:97) > at > br.com.softplan.sider.sip.test.SipEJBCaseTest.runScript(SipEJBCaseTest.java:86) > at > br.com.softplan.sider.sip.test.SipEJBCaseTest.scriptsShutdown(SipEJBCaseTest.java:107) > at > br.com.softplan.sider.sip.test.SipEJBCaseTest.tearDown(SipEJBCaseTest.java:102) > 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) > at > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33) > at org.junit.runners.ParentRunner.run(ParentRunner.java:309) > at > org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) > at > org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) > at > org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) > 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.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) > at > org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) > at > org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) > at > org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) > at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) > > So far, I can add that no Annotations are being used and my MDB extends a > class that implements MessageDrivenBean and MessageListener. > I tried updating to EJB 2.1 with the following definition: > > > > <message-driven> > <display-name>FechamentoMDB</display-name> > <ejb-name>FechamentoMDB</ejb-name> > > <ejb-class>br.com.softplan.sider.sip.bens.moveis.contabilidade.fechamento.FechamentoMDB</ejb-class> > <messaging-type>javax.jms.MessageListener</messaging-type> > <transaction-type>Bean</transaction-type> > <activation-config> > <activation-config-property> > > <activation-config-property-name>acknowledgeMode</activation-config-property-name> > > <activation-config-property-value>AutoAcknowledge</activation-config-property-value> > </activation-config-property> > <activation-config-property> > > <activation-config-property-name>destinationType</activation-config-property-name> > > <activation-config-property-value>javax.jms.Queue</activation-config-property-value> > </activation-config-property> > </activation-config> > </message-driven> > > But that went up to no good, as the same error happened. > > There's no way I can upgrade it to EJB 3, so I was wondering if you could > somehow help me. > > Thanks in advance, > > RENATO PEREIRA BACK > ANALISTA IMPLEMENTADOR > UNIDADE DE GESTÃO PÚBLICA > Softplan/Poligraph > +55 48 3027-8000 > www.softplan.com.br > twitter.com/softplanonline > >
