@Descriptor(s) work only if the descriptor is directly in the project. When I want to have a separate module for JPA for exemple, it doesn't work. I just retested.
-----Original Message----- From: Romain Manni-Bucau [mailto:[email protected]] Sent: mercredi 23 décembre 2015 18:39 To: [email protected] Subject: Re: [PRIVATE] ApplicationComposer 7.0.0 and @Jars @Descriptor(s) should allow you to setup JPA and keep it a simple webapp (single module) 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-12-23 18:30 GMT+01:00 Yann BLAZART <[email protected] >: > Well, I have more information. > > In CdiScanner I can see the classes in BeanInfo beans. > > But just after the following condition is true : > > } else if (ejbJar.webapp && !appInfo.webAppAlone) { > continue; > } > > (CdiScanner: 118) > So the classes are not take in care... > > Is it because I have a module for my persistenceUnit ? So What can I > do to include the metrics-cdi jar ? > > > > From: Yann BLAZART > Sent: mercredi 23 décembre 2015 18:17 > To: [email protected] > Subject: [PRIVATE] ApplicationComposer 7.0.0 and @Jars > > Hello, I want to make unit test with metrics-cdi. > > This lib have a CDI extension. So in my ApplicationComposer I have to > embed it with the @Jars. > > > If I make a simple test like in the simple project attached, it > start, I have a bug with a Singleton scope, this is not a problem > because the Author will correct it this evening. > > But When I try to make a more complexe test in my real project, the > classe MetricProducer is not found, it seems the jar is not scanned correctly. > > My "real" code : > > > @RunWith(ApplicationComposer.class) > @Classes( > cdi = true, > innerClassesAsBean = true, > cdiInterceptors = {RequiredNewInterceptor.class, > RequiredInterceptor.class}, > value = { > LoggerProducer.class, > TxRunner.class, > HazelCastProducer.class, > ExtractIDService.class, > FeedsPUEntityManagerProducer.class, > HZCService.class, > FeedsFlowMapStore.class, > FeedsFlowRawMapStore.class, > FeedsFlowSourceMapStore.class, > GenericQStore.class, > GenericQStoreFactory.class, > FeedsQProducer.class, > DBReporterService.class, > MetricsCDIProducer.class, > ComponentIDCardProducer.class > > } > > ) > @Jars(value = "metrics-cdi") > public class FeedsQProducerTest extends > AbstractApplicationComposerHelper { ... > > @Module > @PersistenceRootUrl(value = "") // must use value="" (BUG) public > Persistence generateFeedsPU() throws Exception { > return super.createPersistenceFromFile(FeedsFlow.class); > } > > @Configuration > public Properties config() { > Properties properties = new Properties(); > this.addDataSourceInProperties(properties, "feedsDS"); > this.overridePersistenceUnitProperties("feedsPU", properties, > PersistenceUnitXmlProperties.SCHEMA_GEN_DATABASE_ACTION, > "drop-and-create"); > return properties; > } > > > > And the stack trace : > > INFO - All injection points were validated successfully. > SEVERE - CDI Beans module deployment failed > org.apache.webbeans.exception.WebBeansDeploymentException: Error while > sending SystemEvent to a CDI Extension! > org.apache.webbeans.portable.events.discovery.AfterDeploymentValidatio > nImpl@36aab105 > <mailto: > org.apache.webbeans.portable.events.discovery.AfterDeploymentValidatio > nImpl@36aab105 > > > at > org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:697) > at > org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:485) > at > org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(BeanManagerImpl.java:480) > at > org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidationEvent(BeansDeployer.java:670) > at > org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:283) > at > org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:202) > at > org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:180) > at > org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:894) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:694) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:690) > at > org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:720) > at > org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:384) > at > org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1043) > at > org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40) > at > org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) > at > org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) > at > org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) > at > org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) > at > org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) > at > org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) > at > org.junit.runners.ParentRunner.run(ParentRunner.java:363) > at > org.junit.runner.JUnitCore.run(JUnitCore.java:137) > at > com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117) > at > com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) > at > com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) > at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:483) > at > com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) > Caused by: org.apache.webbeans.exception.WebBeansException: > java.lang.reflect.InvocationTargetException > at > org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:318) > at > org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:676) > ... 33 more > Caused by: java.lang.reflect.InvocationTargetException > at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:483) > at > org.apache.webbeans.event.ObserverMethodImpl.invoke(ObserverMethodImpl.java:347) > at > org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(ContainerEventObserverMethodImpl.java:82) > at > org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:312) > ... 34 more > Caused by: java.lang.NullPointerException: bean parameter may not be null > at > org.apache.webbeans.util.Asserts.assertNotNull(Asserts.java:52) > at > org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:708) > at > org.apache.webbeans.container.InjectableBeanManager.getReference(InjectableBeanManager.java:165) > at > io.astefanutti.metrics.cdi.MetricsExtension.getBeanInstance(MetricsExtension.java:123) > at > io.astefanutti.metrics.cdi.MetricsExtension.configuration(MetricsExtension.java:99) > ... 41 more > > javax.enterprise.inject.spi.DeploymentException: couldn't start owb > context > > at > org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:182) > at > org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:894) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:694) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:690) > at > org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:720) > at > org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:384) > at > org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1043) > at > org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40) > at > org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) > at > org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) > at > org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) > at > org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) > at > org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) > at > org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) > at > org.junit.runners.ParentRunner.run(ParentRunner.java:363) > at > org.junit.runner.JUnitCore.run(JUnitCore.java:137) > at > com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117) > at > com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) > at > com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) > at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:483) > at > com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) > Caused by: org.apache.openejb.OpenEJBRuntimeException: > org.apache.webbeans.exception.WebBeansDeploymentException: Error while > sending SystemEvent to a CDI Extension! > org.apache.webbeans.portable.events.discovery.AfterDeploymentValidatio > nImpl@36aab105 > <mailto: > org.apache.webbeans.portable.events.discovery.AfterDeploymentValidatio > nImpl@36aab105 > > > at > org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:206) > at > org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:180) > ... 27 more > Caused by: org.apache.webbeans.exception.WebBeansDeploymentException: > Error while sending SystemEvent to a CDI Extension! > org.apache.webbeans.portable.events.discovery.AfterDeploymentValidatio > nImpl@36aab105 > <mailto: > org.apache.webbeans.portable.events.discovery.AfterDeploymentValidatio > nImpl@36aab105 > > > at > org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:697) > at > org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:485) > at > org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(BeanManagerImpl.java:480) > at > org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidationEvent(BeansDeployer.java:670) > at > org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:283) > at > org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:202) > ... 28 more > Caused by: org.apache.webbeans.exception.WebBeansException: > java.lang.reflect.InvocationTargetException > at > org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:318) > at > org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:676) > ... 33 more > Caused by: java.lang.reflect.InvocationTargetException > at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:483) > at > org.apache.webbeans.event.ObserverMethodImpl.invoke(ObserverMethodImpl.java:347) > at > org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(ContainerEventObserverMethodImpl.java:82) > at > org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:312) > ... 34 more > Caused by: java.lang.NullPointerException: bean parameter may not be null > at > org.apache.webbeans.util.Asserts.assertNotNull(Asserts.java:52) > at > org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:708) > at > org.apache.webbeans.container.InjectableBeanManager.getReference(InjectableBeanManager.java:165) > at > io.astefanutti.metrics.cdi.MetricsExtension.getBeanInstance(MetricsExtension.java:123) > at > io.astefanutti.metrics.cdi.MetricsExtension.configuration(MetricsExtension.java:99) > ... 41 more > > > The code in the extension : > > > private static <T> T getBeanInstance(BeanManager manager, Class<T> clazz) { > Bean<?> bean = manager.resolve(manager.getBeans(clazz)); > return (T) manager.getReference(bean, clazz, > manager.createCreationalContext(bean)); > } > > bean is null... > > Any idea why it works in the little project ? Or any suggestion for me > to find ? > > I run in debug, I saw that ApplicationComposer is looking well the > Jar, but when it comes in CdiScanner, no more beans.... > > Regards > > > This message and any attachments (the "message") is intended solely > for the intended addressees and is confidential. > If you receive this message in error,or are not the intended > recipient(s), please delete it and any copies from your systems and > immediately notify the sender. Any unauthorized view, use that does > not comply with its purpose, dissemination or disclosure, either whole > or partial, is prohibited. Since the internet cannot guarantee the > integrity of this message which may not be reliable, BNP PARIBAS (and > its subsidiaries) shall not be liable for the message if modified, > changed or falsified. > Do not print this message unless it is necessary,consider the environment. > > > ---------------------------------------------------------------------- > ------------------------------------------------------------ > > Ce message et toutes les pieces jointes (ci-apres le "message") sont > etablis a l'intention exclusive de ses destinataires et sont > confidentiels. > Si vous recevez ce message par erreur ou s'il ne vous est pas destine, > merci de le detruire ainsi que toute copie de votre systeme et d'en > avertir immediatement l'expediteur. Toute lecture non autorisee, toute > utilisation de ce message qui n'est pas conforme a sa destination, > toute diffusion ou toute publication, totale ou partielle, est > interdite. L'Internet ne permettant pas d'assurer l'integrite de ce > message electronique susceptible d'alteration, BNP Paribas (et ses > filiales) decline(nt) toute responsabilite au titre de ce message dans > l'hypothese ou il aurait ete modifie, deforme ou falsifie. > N'imprimez ce message que si necessaire, pensez a l'environnement. >
