tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Broadhead <matthew.broadh...@nbmlaw.co.uk.INVALID>
Subject Re: tomee testing
Date Sun, 24 Jun 2018 11:58:10 GMT
i am loading the PU with a producer like
@ApplicationScoped
public class EntityManagerProducer {

     @PersistenceUnit(unitName = "sales")
     private EntityManagerFactory entityManagerFactory;

     @Produces
     @Default
     @RequestScoped
     public EntityManager create() {
         return this.entityManagerFactory.createEntityManager();
     }

     public void dispose(@Disposes @Default EntityManager entityManager) {
         if (entityManager.isOpen()) {
             entityManager.close();
         }
     }
}

On 24/06/18 13:46, Matthew Broadhead wrote:
> i changed
> @Descriptors(@Descriptor(name = "persistence.xml", path = 
> META-INF/persistence.xml"))
> to
> @Descriptors(@Descriptor(name = "persistence.xml", path = 
> "src/main/resources/META-INF/persistence.xml"))
> and now it is loading the persistence.xml
>
> i still get the same error.  if i turn logging up to TRACE i get the 
> below.  is there any way to find the particular mapping might be 
> causing the problem?
>
> org.apache.openejb.OpenEJBException: Creating application failed: 
> /home/matthew/git/case-management/sales/QuoteGeneratorTest: 
> org.apache.openejb.OpenEJBRuntimeException: 
> <openjpa-2.4.2-r422266:1777108 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: There was an 
> error when invoking the static newInstance method on the named factory 
> class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the 
> nested exception for details.: <openjpa-2.4.2-r422266:1777108 fatal 
> general error> org.apache.openjpa.persistence.PersistenceException: 
> There was an error when invoking the static newInstance method on the 
> named factory class 
> "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
> exception for details.
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:1042)
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:718)
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:714)
>     at 
> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:724)
>     at 
> org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:386)
>     at 
> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1068)
>     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.runners.ParentRunner.run(ParentRunner.java:363)
>     at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
>     at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
> Caused by: org.apache.openejb.OpenEJBException: 
> org.apache.openejb.OpenEJBRuntimeException: 
> <openjpa-2.4.2-r422266:1777108 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: There was an 
> error when invoking the static newInstance method on the named factory 
> class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the 
> nested exception for details.: <openjpa-2.4.2-r422266:1777108 fatal 
> general error> org.apache.openjpa.persistence.PersistenceException: 
> There was an error when invoking the static newInstance method on the 
> named factory class 
> "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
> exception for details.
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:873)
>     ... 21 more
> Caused by: org.apache.openejb.OpenEJBRuntimeException: 
> <openjpa-2.4.2-r422266:1777108 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: There was an 
> error when invoking the static newInstance method on the named factory 
> class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the 
> nested exception for details.
>     at 
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:136)
>     at 
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.<init>(ReloadableEntityManagerFactory.java:105)
>     at 
> org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:157)
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:867)
>     ... 21 more
> Caused by: <openjpa-2.4.2-r422266:1777108 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: There was an 
> error when invoking the static newInstance method on the named factory 
> class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the 
> nested exception for details.
>     at 
> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:73)
>     at 
> org.apache.openjpa.persistence.PersistenceProviderImpl.getBrokerFactory(PersistenceProviderImpl.java:149)
>     at 
> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:191)
>     at 
> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:63)
>     at 
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:109)
>     at 
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)
>     ... 24 more
> Caused by: java.lang.IllegalStateException: On a thread without an 
> initialized context nor a classloader mapping a deployed app
>     at 
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:287)
>     at 
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.getContext(ThreadSingletonServiceImpl.java:263)
>     at 
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:298)
>     at 
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:60)
>     at 
> org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:51)
>     at 
> org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:185)
>     at 
> org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:203)
>     at 
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.findBm(EntityManagerFactoryCallable.java:170)
>     at 
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.invoke(EntityManagerFactoryCallable.java:158)
>     at com.sun.proxy.$Proxy38.toString(Unknown Source)
>     at java.lang.String.valueOf(String.java:2994)
>     at java.lang.StringBuilder.append(StringBuilder.java:131)
>     at java.util.AbstractMap.toString(AbstractMap.java:559)
>     at java.text.MessageFormat.subformat(MessageFormat.java:1280)
>     at java.text.MessageFormat.format(MessageFormat.java:865)
>     at java.text.Format.format(Format.java:157)
>     at java.text.MessageFormat.format(MessageFormat.java:841)
>     at 
> org.apache.openjpa.lib.util.Localizer$Message.getMessage(Localizer.java:282)
>     at 
> org.apache.openjpa.lib.util.Localizer$Message.toString(Localizer.java:309)
>     at 
> org.apache.openjpa.lib.log.AbstractLog.toString(AbstractLog.java:138)
>     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:72)
>     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:67)
>     at 
> org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationProviderImpl.setInto(PersistenceProductDerivation.java:764)
>     at 
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:60)
>     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:498)
>     at 
> org.apache.openjpa.kernel.Bootstrap.invokeFactory(Bootstrap.java:131)
>     at 
> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:65)
>     ... 29 more
>
> On 24/06/18 13:02, Romain Manni-Bucau wrote:
>> mapping error in your model it seems or bad persistence unit 
>> definition if
>> you dont use scanning.
>>
>> Romain Manni-Bucau
>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>> <https://rmannibucau.metawerx.net/> | Old Blog
>> <http://rmannibucau.wordpress.com> | Github 
>> <https://github.com/rmannibucau> |
>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>> <https://www.packtpub.com/application-development/java-ee-8-high-performance> 
>>
>>
>>
>> Le dim. 24 juin 2018 à 12:52, Matthew Broadhead
>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>
>>> thanks.  removing the @Jars helped.  it is now injecting CDI bean fine.
>>> but now i get OpenJPA NPE on
>>> List<QuoteType> quoteTypeList = query.getResultList();
>>>
>>> <openjpa-2.4.2-r422266:1777108 nonfatal general error>
>>> org.apache.openjpa.persistence.PersistenceException: null
>>>       at 
>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1029)
>>>       at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:928)
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1032) 
>>>
>>>       at
>>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2382) 
>>>
>>>       at
>>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2080) 
>>>
>>>       at
>>> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35) 
>>>
>>>       at 
>>> org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1257)
>>>       at 
>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1013)
>>>       at 
>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:869)
>>>       at 
>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:800)
>>>       at
>>> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:541) 
>>>
>>>       at
>>> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:274)
>>>       at
>>> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290) 
>>>
>>>       at
>>> uk.me.kissy.sales.dao.QuoteTypeDao.selectQuoteTypes(QuoteTypeDao.java:51) 
>>>
>>>       at
>>>
>>> uk.me.kissy.sales.dao.QuoteTypeDao$$OwbNormalScopeProxy0.selectQuoteTypes(uk/me/kissy/sales/dao/QuoteTypeDao.java) 
>>>
>>>       at
>>> uk.me.kissy.sales.test.QuoteGeneratorTest.test1(QuoteGeneratorTest.java:96) 
>>>
>>>       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:498)
>>>       at
>>>
>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
>>>
>>>       at
>>>
>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
>>>
>>>       at
>>>
>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
>>>
>>>       at
>>>
>>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
>>>
>>>       at
>>>
>>> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:44) 
>>>
>>>       at
>>>
>>> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:40) 
>>>
>>>       at
>>>
>>> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1070) 
>>>
>>>       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.runners.ParentRunner.run(ParentRunner.java:363)
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 
>>>
>>> Caused by: java.lang.NullPointerException
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:452) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:412) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:305) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) 
>>>
>>>       at
>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1048)
>>>       at 
>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1006)
>>>       ... 45 more
>>>
>>>
>>> On 24/06/18 12:18, Romain Manni-Bucau wrote:
>>>> you don't need @Jars for that
>>>>
>>>> why you get an exception is cause appcomposers knows mysql has no EE
>>>> classes so it is excluded from the "find" logic. @Jars means "grab the
>>> jars
>>>> matching this prefix and scan them to include them in the deployed 
>>>> app".
>>>>
>>>> Romain Manni-Bucau
>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>> <http://rmannibucau.wordpress.com> | Github <
>>> https://github.com/rmannibucau> |
>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>> <
>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>
>>>>
>>>>
>>>> Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>
>>>>> i tried adding test scope to pom.xml
>>>>> <dependency>
>>>>>                <groupId>mysql</groupId>
>>>>> <artifactId>mysql-connector-java</artifactId>
>>>>> <version>${mysql.connector.version}</version>
>>>>>                <scope>test</scope>
>>>>>            </dependency>
>>>>>
>>>>> also added mysql-connector-java-5.1.33.jar to the root of
>>>>> src/test/resources but i still get
>>>>> java.lang.IllegalArgumentException: mysql not found in classpath
>>>>>        at
>>>>>
>>>>>
>>> org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020) 
>>>
>>>>>        at
>>>>>
>>>>>
>>> org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899) 
>>>
>>>>>        at
>>>>>
>>>>>
>>> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651) 
>>>
>>>>>
>>>>> On 24/06/18 12:01, Romain Manni-Bucau wrote:
>>>>>> Appcopposer loads classes in the classpath so add it as a test
>>>>> dependency.
>>>>>> Le dim. 24 juin 2018 11:37, Matthew Broadhead
>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>>>
>>>>>>> not much luck with arquillian. i am trying ApplicationComposer 
>>>>>>> again.
>>>>>>> now i understand the properties format
>>>>>>> @ContainerProperties({ @ContainerProperties.Property(name = 
>>>>>>> "sales",
>>>>>>> value = "new://Resource?type=DataSource"),
>>>>>>>             @ContainerProperties.Property(name = 
>>>>>>> "sales.JdbcDriver",
>>> value
>>>>>>> = "com.mysql.jdbc.Driver"),
>>>>>>>             @ContainerProperties.Property(name = "sales.JdbcUrl",
>>> value =
>>>>>>> "jdbc:mysql://localhost:3306/sales"),
>>>>>>>             @ContainerProperties.Property(name = "sales.Username",
>>> value =
>>>>>>> "admin"),
>>>>>>>             @ContainerProperties.Property(name = "sales.Password",
>>> value =
>>>>>>> "blahblah") })
>>>>>>>
>>>>>>> but now i get
>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>         at
>>>>>>>
>>>>>>>
>>> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43) 
>>>
>>>>>>>         at
>>>>>>>
>>>>>>>
>>> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86) 
>>>
>>>>>>> how to bundle the mysql driver? i tried
>>>>>>> @Jars("mysql")
>>>>>>>
>>>>>>> On 23/06/18 21:58, Romain Manni-Bucau wrote:
>>>>>>>> You need all your tested app needs (this is why classpath 
>>>>>>>> deploypent
>>>>>>>> solutions are easier to maintain).
>>>>>>>>
>>>>>>>> Maybe import our ziplock lib and use Mvn.Builder class if you are
>>> maven
>>>>>>>> based. It can help.
>>>>>>>>
>>>>>>>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
>>>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>
>>>>>>>>> ah ok.  i found
>>>>>>>>> .addAsManifestResource(new
>>>>> ClassLoaderAsset("META-INF/persistence.xml"),
>>>>>>>>> "persistence.xml")
>>>>>>>>>
>>>>>>>>> in
>>>>>>>>>
>>>>>>>>>
>>> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java 
>>>
>>>>>>>>> but now i am back to
>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>> qualifiers
>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>> for injection into Field Injection Point, field name : 
>>>>>>>>> quoteTypeDao,
>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>>>> Name:null, API
>>>>>>>>>
>>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
>>>
>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>
>>>>>>>>>          at
>>>>>>>>>
>>>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327) 
>>>>>
>>>>>>>>> so i must have missed a required class somewhere
>>>>>>>>>
>>>>>>>>> On 23/06/18 18:53, Matthew Broadhead wrote:
>>>>>>>>>> do i need to copy the persistence.xml to
>>> src/test/resources/META-INF?
>>>>>>>>>> or can i specify its location somewhere in config?
>>>>>>>>>>
>>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>>>>> SEVERE - Invalid EjbModule(name=sales,
>>>>>>>>>>
>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales) 
>>>
>>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>>>>> SEVERE - Invalid WebModule(name=sales,
>>>>>>>>>>
>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales) 
>>>
>>>>>>>>>> INFO - Set the 'openejb.validation.output.level' system 
>>>>>>>>>> property to
>>>>>>>>>> VERBOSE for increased validation details.
>>>>>>>>>> SEVERE - Unable to deploy collapsed ear in war
>>>>>>>>>>
>>> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales] 
>>>
>>>>>>>>>> org.apache.openejb.config.ValidationFailedException: Module 
>>>>>>>>>> failed
>>>>>>>>>> validation. AppModule(name=sales)
>>>>>>>>>>         at
>>>>>>>>>>
>>> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88) 
>>>
>>>>>>>>>>         at
>>>>>>>>>>
>>>>> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322) 
>>>>>
>>>>>>>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
>>>>>>>>>>> You can but you need to add all the object graph in the 
>>>>>>>>>>> archive.
>>>>> Here
>>>>>>>>>>> you
>>>>>>>>>>> miss an injection it seems (in your dao?).
>>>>>>>>>>>
>>>>>>>>>>> Side note: operatesondeployment and naming your archive is not
>>>>> needed
>>>>>>>>>>> here.
>>>>>>>>>>> It is useful when you deploy N > 1 archives.
>>>>>>>>>>>
>>>>>>>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
>>>>>>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>
>>>>>>>>>>>> i got the sample configuration from
>>>>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html 
>>>>>>>>>>>>
>>>>>>> under
>>>>>>>>>>>> remote section.
>>>>>>>>>>>>
>>>>>>>>>>>> now my problem is that i can't inject the CDI bean
>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api 
>>>>>>>>>>>> type
>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>> qualifiers
>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>> quoteTypeDao,
>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, 
>>>>>>>>>>>> WebBeansType:ENTERPRISE,
>>>>>>>>>>>> Name:null, API
>>>>>>>>>>>>
>>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
>>>
>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>
>>>>>>>>>>>>           at
>>>>>>>>>>>>
>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>>>>>>>>>           at
>>>>>>>>>>>>
>>>>>>>>>>>>
>>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196) 
>>>
>>>>>>>>>>>> i created the @Deployment using
>>>>>>>>>>>> @Inject
>>>>>>>>>>>>           private QuoteTypeDao quoteTypeDao;
>>>>>>>>>>>>
>>>>>>>>>>>>           @Deployment(name = "archive")
>>>>>>>>>>>>           public static WebArchive war() {
>>>>>>>>>>>>               return ShrinkWrap.create(WebArchive.class,
>>>>>>>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, 
>>>>>>>>>>>> "beans.xml")
>>>>>>>>>>>> .addClasses(QuoteTypeDao.class);
>>>>>>>>>>>>           }
>>>>>>>>>>>>
>>>>>>>>>>>>           @Test
>>>>>>>>>>>>           @OperateOnDeployment("archive")
>>>>>>>>>>>>           public void test1() {
>>>>>>>>>>>>               Quote quote = new Quote();
>>>>>>>>>>>>               Promotion promotion = null;
>>>>>>>>>>>>               List<QuoteType> quoteTypeList =
>>>>>>>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>>>>>>>>>>>               System.out.println("Quote type list size: " +
>>>>>>>>>>>> quoteTypeList.size());
>>>>>>>>>>>>               for (QuoteType quoteType : quoteTypeList) {
>>>>>>>>>>>> System.out.println(quoteType.getName());
>>>>>>>>>>>>                   // quoteGeneratorDao.generateQuote(quote,
>>>>> promotion,
>>>>>>>>>>>>                   // quoteType.getQuoteTypeCategories(),
>>>>> quoteQuestions,
>>>>>>>>>>>>                   // quoteInit, true);
>>>>>>>>>>>>                   assertEquals(0, 1);
>>>>>>>>>>>>               }
>>>>>>>>>>>>               assertEquals(0, 1);
>>>>>>>>>>>>           }
>>>>>>>>>>>>
>>>>>>>>>>>> can i not inject a CDI bean into the test using
>>>>>>>>>>>> arquillian-tomee-remote?
>>>>>>>>>>>>
>>>>>>>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>>>>>>>>>>>> It is not needed at all bit it appears in your stack. If 
>>>>>>>>>>>>> it is a
>>>>>>> copy
>>>>>>>>>>>> paste
>>>>>>>>>>>>> just drop it ;)
>>>>>>>>>>>>>
>>>>>>>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>>>>>>>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>
>>>>>>>>>>>>>> hi, i checked 
>>>>>>>>>>>>>> http://incubator.apache.org/projects/sirona.html
>>>>>>> but i
>>>>>>>>>>>>>> couldn't find any documentation.  is sirona a requirement 
>>>>>>>>>>>>>> for
>>>>>>>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor
>>> tests?
>>>>>>>>>>>>>> if so,
>>>>>>>>>>>>>> then how do i exclude the mysql lib from the configuration?
>>>>>>>>>>>>>> <!-- we monitor the test with sirona -->
>>>>>>>>>>>>>> <property name="javaagent">
>>>>>>>>>>>>>>
>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>>>>>>>>>>>> </property>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode 
>>>>>>>>>>>>>>> is not
>>>>>>> safe.
>>>>>>>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>>>>>>>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> thanks i added it using
>>>>>>>>>>>>>>>> <property
>>>>>>>>>>>>>>>>
>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>>>>>>>>>>>>> but i get these errors (which don't seem to stop 
>>>>>>>>>>>>>>>> execution)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> fail to transform
>>>>>>>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>>>>>>>>>>>> JSR/RET are not supported with computeFrames
>>>>>>>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not 
>>>>>>>>>>>>>>>> supported
>>>>> with
>>>>>>>>>>>>>>>> computeFrames option
>>>>>>>>>>>>>>>>             at org.apache.sirona.asm.Frame.a(Unknown 
>>>>>>>>>>>>>>>> Source)
>>>>>>>>>>>>>>>>             at
>>>>>>> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>>>>>>>>>>>> Source)
>>>>>>>>>>>>>>>> SEVERE - Can't create DataSource
>>>>>>>>>>>>>>>> java.lang.LinkageError: loader (instance of
>>>>>>>>>>>>>>>> java/net/URLClassLoader):
>>>>>>>>>>>>>>>> attempted  duplicate class definition for name:
>>>>>>>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> but this one is a stopper
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: 
>>>>>>>>>>>>>>>> Api
>>>>> type
>>>>>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>>>>>>>>>>>>> qualifiers
>>>>>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>>>>>>>>>>>>> quoteTypeDao,
>>>>>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
>>>>> WebBeansType:ENTERPRISE,
>>>>>>>>>>>>>>>> Name:null, API
>>>>>>>>>>>>>>>> Types:[java.lang.Object,uk.me
>>>>>>>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>>>>>>>>>>>
>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>
>>>>>>>>>>>>>>>> i tried enabling remote support as i am trying remote not
>>>>>>> embedded
>>>>>>>>>>>>>>>> tomee.remote.support = true
>>>>>>>>>>>>>>>> # tomee.serialization.class.blacklist = *
>>>>>>>>>>>>>>>> tomee.serialization.class.whitelist = *
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>> You can add it in libs property of arquillian container
>>>>> config.
>>>>>>>>>>>>>>>>> Just
>>>>>>>>>>>>>>>> prefix
>>>>>>>>>>>>>>>>> the coords with mvn:.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> It is a multiline property so you can add N libs to tomee
>>> lib
>>>>>>> this
>>>>>>>>>>>> way
>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>>>>>>>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> INFO: Downloading
>>>>> org.apache.tomee:apache-tomee:7.0.3:zip:plus
>>>>>>>>>>>> please
>>>>>>>>>>>>>>>>>> wait...
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> i have an arquillian test running up ok but it is
>>> complaining
>>>>>>>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please
>>> send
>>>>>>> the
>>>>>>>>>>>>>>>>>> following stack trace and this message to
>>>>>>>>>>>>>>>>>> users@tomee.apache.org :
>>>>>>>>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
>>>>>>>>>>>> Unable to
>>>>>>>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> is there any way to directly bring in the mysql 
>>>>>>>>>>>>>>>>>> driver from
>>>>>>> maven
>>>>>>>>>>>>>>>>>> central? or do i need to download manually and put it 
>>>>>>>>>>>>>>>>>> into
>>>>>>>>>>>>>>>>>> src/test/tomee/lib?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>>> You can theorically but I'd recommand you to write 
>>>>>>>>>>>>>>>>>>> it in
>>> the
>>>>>>>>>>>>>>>>>>> final
>>>>>>>>>>>>>>>> module
>>>>>>>>>>>>>>>>>>> instead of trying to use the parent which will be 
>>>>>>>>>>>>>>>>>>> executed
>>>>>>>>>>>>>>>>>>> before
>>>>>>>>>>>> any
>>>>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>>> modules.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> If A depends on B which depends on C then write your 
>>>>>>>>>>>>>>>>>>> tests
>>>>> in
>>>>>>>>>>>>>>>>>>> A for
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> complete app tests and write unit tests in B and C
>>>>>>> (potentially
>>>>>>>>>>>> using
>>>>>>>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> For reference:
>>>>>>>>>>>>>>>>>>>
>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | 
>>>>>>>>>>>>>>>>>>> Book
>>>>>>>>>>>>>>>>>>> <
>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>
>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>>>>>>>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my
>>> case.
>>>>>>> can
>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does
>>> everything
>>>>>>>>>>>>>>>>>>>> need to
>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>>> done through http? looking at
>>>>>>>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
>>>>>>>>> Arquilian
>>>>>>>>>>>>>> Test"
>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
>>>>>>> instance)
>>>>>>>>>>>> in a
>>>>>>>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once 
>>>>>>>>>>>>>>>>>>>> which
>>>>> are
>>>>>>>>>>>>>>>>>>>> all
>>>>>>>>>>>>>>>> modules
>>>>>>>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
>>>>>>> project.
>>>>>>>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>>>>> You can set the property openejb.location (or the 
>>>>>>>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>>>>> ones we
>>>>>>>>>>>>>> have)
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of
>>> the
>>>>>>>>>>>>>> properties
>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>> that it is filtered during the test and doesnt 
>>>>>>>>>>>>>>>>>>>>> require a
>>>>>>> maven
>>>>>>>>>>>>>> build
>>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Arquillian is great to test complete 
>>>>>>>>>>>>>>>>>>>>> application*s* in a
>>>>>>> real
>>>>>>>>>>>>>> server,
>>>>>>>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
>>>>>>>>>>>>>>>>>>>>> applications
>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app
>>>>>>> (single
>>>>>>>>>>>>>>>>>> deployment
>>>>>>>>>>>>>>>>>>>>> from the classpath + single test setup) and will 
>>>>>>>>>>>>>>>>>>>>> save a
>>>>> lot
>>>>>>> of
>>>>>>>>>>>>>> time.
>>>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
>>>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> |
>>> Book
>>>>>>>>>>>>>>>>>>>>> <
>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>
>>>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>>>>>>>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create 
>>>>>>>>>>>>>>>>>>>>>> some
>>>>>>> tests.
>>>>>>>>>>>> CDI
>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little
>>>>> uncertain
>>>>>>>>>>>>>>>>>>>>>> about
>>>>>>>>>>>>>> how
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> i was going to start by just loading the database as
>>>>>>>>>>>>>>>>>>>>>> normal as
>>>>>>>>>>>> it
>>>>>>>>>>>>>>>> is a
>>>>>>>>>>>>>>>>>>>>>> copy of production database. but how do i specify 
>>>>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>> username
>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>>>> password or any other properties that are needed to
>>>>>>>>>>>>>>>>>>>>>> connect to
>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> db?
>>> @ContainerProperties(@ContainerProperties.Property(name =
>>>>>>>>>>>> "mydb",
>>>>>>>>>>>>>>>>>> value
>>>>>>>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml 
>>>>>>>>>>>>>>>>>>>>>> file?
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> another question...is it better to start with
>>> Arquillian
>>>>> or
>>>>>>>>>>>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>>>>>>>>>>>
>>>
>



Mime
View raw message