you can make an ear (so N webapps with N persistence modules and N
ejbmodules) but this needs more wiring and I'm not sure all the annotations
are 100% compatible with ear for CDI without producing an AppModule. We can
definitively enhance it since in this case we know we have a single module
!= persistence module which is a webapp. If you want to help us providing a
test case for instance I would be more than happy to help you to fix it.


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:38 GMT+01:00 Yann BLAZART <[email protected]
>:

> Ok, got it...  But this is not really intuitive.
> We can't make a webapp with other modules ???
>
>
> @Module
> @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 EjbJar war() {
>     return new EjbJar();
> }
>
>
> From: Yann BLAZART
> Sent: mercredi 23 décembre 2015 18:31
> To: '[email protected]'
> Subject: RE: [PRIVATE] ApplicationComposer 7.0.0 and @Jars
>
> 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]<mailto:[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.AfterDeploymentValidationImpl@36aab105
> <mailto:
> org.apache.webbeans.portable.events.discovery.AfterDeploymentValidationImpl@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.AfterDeploymentValidationImpl@36aab105
> <mailto:
> org.apache.webbeans.portable.events.discovery.AfterDeploymentValidationImpl@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.AfterDeploymentValidationImpl@36aab105
> <mailto:
> org.apache.webbeans.portable.events.discovery.AfterDeploymentValidationImpl@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.
>

Reply via email to