You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Yann BLAZART <ya...@externe.bnpparibas.com> on 2015/12/23 18:16:54 UTC

[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
                        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
                        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
                        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.