You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@deltaspike.apache.org by Remo Meier <re...@adnovum.ch> on 2016/08/16 08:03:47 UTC
Jersey, OpenEJB, Deltaspike
Hi
I attempt to get get the Jersey integration running together with
Deltaspike, OpenEJB and Test Control according to the documentation at
the bottom of the page here:
https://deltaspike.apache.org/documentation/test-control.html
Not working so far is the injection of CDI beans into JAX-RS resources.
The resulting exceptions look like like:
MultiException stack 1 of 1
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no
object available for injection at
SystemInjecteeImpl(requiredType=EntityManagerFactory,parent=KatharsisMgmtFeature,qualifiers={},position=-1,optional=false,self=false,unqualified=null,1475912655)
at
org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:75)
at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:945)
at
org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:979)
at
org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1054)
at
org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1045)
at
org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:711)
at
org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:648)
at
org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:829)
at
org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:453)
at
org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184)
at
org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350)
at
org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at
org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)
at
org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347)
at
org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:311)
at
org.glassfish.jersey.jetty.JettyHttpContainer.<init>(JettyHttpContainer.java:474)
at
org.glassfish.jersey.jetty.JettyHttpContainerProvider.createContainer(JettyHttpContainerProvider.java:60)
at
org.glassfish.jersey.server.ContainerFactory.createContainer(ContainerFactory.java:81)
at
org.glassfish.jersey.jetty.JettyHttpContainerFactory.createServer(JettyHttpContainerFactory.java:161)
at
ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwareJettyTestContainer.<init>(DeltaspikeAwareJettyTestContainer.java:41)
at
ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwareJettyTestContainerFactory.create(DeltaspikeAwareJettyTestContainerFactory.java:16)
at
org.glassfish.jersey.test.JerseyTest.createTestContainer(JerseyTest.java:277)
at org.glassfish.jersey.test.JerseyTest.setUp(JerseyTest.java:607)
at
ch.adnovum.moap.movie.management.web.EntityAccessTest.setUp(EntityAccessTest.java:50)
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.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.RunBefores.evaluate(RunBefores.java:24)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at
org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.runChild(CdiTestRunner.java:177)
at
org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.runChild(CdiTestRunner.java:76)
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.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$BeforeClassStatement.evaluate(CdiTestRunner.java:372)
at
org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$AfterClassStatement.evaluate(CdiTestRunner.java:393)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at
org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.run(CdiTestRunner.java:144)
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:459)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
KatharsisMgmtFeature is a regular Feature. And their is a Producer that
makes the EntityManagerFactory available with @Inject.
The application works if I manually register a
org.glassfish.hk2.utilities.binding.AbstractBinder bean as singleton to
the Application and use it to bind CDI beans to jersey/hk2 with
AbstractBinder.bind(x).to(y). But I would rather prefer for Jersey to
directly access the CDI beans instead of bridging those with the
AbstractBinder.
My dependencies for Jersey currently look like:
compile 'org.glassfish.jersey.core:jersey-client:2.23.1'
compile 'org.glassfish.jersey.core:jersey-common:2.23.1'
compile
'org.glassfish.jersey.test-framework:jersey-test-framework-core:2.23.1'
compile
'org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jetty:2.23.1'
compile
'org.glassfish.jersey.containers:jersey-container-jetty-http:2.23.1'
compile 'org.glassfish.jersey.bundles.repackaged:jersey-guava:2.23.1'
compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x:2.23.1'
compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-transaction:2.23.1'
compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-servlet:2.23.1'
The last three are new jersey libraries first having become available
last year. Documentation about those is available here:
https://jersey.java.net/documentation/latest/cdi.support.html.
Potentially that api would open up the possiblity for a small deltaspike
library that does all the necessary integration work (request scoping,
cdi binding), probably independent of Jetty.
Or is there a complete example somewhere?
Regards Remo
Re: Jersey, OpenEJB, Deltaspike
Posted by Remo Meier <re...@adnovum.ch>.
yes, maybe. I basically just followed the instructions on
https://deltaspike.apache.org/documentation/test-control.html. And the
jersey test framework looked quite good to me. Maybe the instructions
could be completed with alternatives. For me it is now working quite ok.
Personally it would be great to have a second full-fledged container
next to openejb. Having all of them would be great but unrealistic I
guess. Weld seems to be a dead end because wildfly does not run as
embedded library (as far as I know). Glassfish might work
Regards Remo
> +1, what about simply using openejb with the built-in CXF?
> Do you need something special from Jersey?
>
> LieGrue,
> strub
>
>
>
>
>
>> On Tuesday, 16 August 2016, 15:00, Gerhard Petracek <ge...@gmail.com> wrote:
>>> hi remo,
>> if you would like to stick with tomee/openejb as well as with jersey, you
>> need a setup which integrates jersey with owb like jersey-weld2-se is doing
>> it with weld (or jersey with the cdi 1.1+ api) or you need a setup which
>> integrates tomee/openejb with jersey.
>>
>> the last time i looked at jersey, only the out-of-the-box integration with
>> weld worked as expected.
>> -> if jersey still doesn't provide a better out-of-the-box integration
>> (based on the cdi 1.1+ api or with owb directly), you need to contact one
>> of the two communities (tomee or jersey) or replace one of the parts.
>>
>> regards,
>> gerhard
>>
>>
>>
>>
>> 2016-08-16 10:03 GMT+02:00 Remo Meier <re...@adnovum.ch>:
>>
>>> Hi
>>>
>>> I attempt to get get the Jersey integration running together with
>>> Deltaspike, OpenEJB and Test Control according to the documentation at the
>>> bottom of the page here:
>>>
>>> https://deltaspike.apache.org/documentation/test-control.html
>>>
>>> Not working so far is the injection of CDI beans into JAX-RS resources.
>>> The resulting exceptions look like like:
>>>
>>> MultiException stack 1 of 1
>>> org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object
>>> available for injection at SystemInjecteeImpl(requiredTyp
>>> e=EntityManagerFactory,parent=KatharsisMgmtFeature,qualifier
>>>
>> s={},position=-1,optional=false,self=false,unqualified=null,1475912655)
>>> at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThir
>>> tyResolver.java:75)
>>> at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:945)
>>> at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLoca
>>> torImpl.java:979)
>>> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
>>> e(ServiceLocatorImpl.java:1054)
>>> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
>>> e(ServiceLocatorImpl.java:1045)
>>> at org.glassfish.jersey.model.internal.CommonConfig.configureFe
>>> atures(CommonConfig.java:711)
>>> at org.glassfish.jersey.model.internal.CommonConfig.configureMe
>>> taProviders(CommonConfig.java:648)
>>> at org.glassfish.jersey.server.ResourceConfig.configureMetaProv
>>> iders(ResourceConfig.java:829)
>>> at org.glassfish.jersey.server.ApplicationHandler.initialize(Ap
>>> plicationHandler.java:453)
>>> at org.glassfish.jersey.server.ApplicationHandler.access$500(Ap
>>> plicationHandler.java:184)
>>> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
>>> ationHandler.java:350)
>>> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
>>> ationHandler.java:347)
>>> at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
>>> at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
>>> at org.glassfish.jersey.internal.Errors.processWithException(Er
>>> rors.java:255)
>>> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
>>> ationHandler.java:347)
>>> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
>>> ationHandler.java:311)
>>> at org.glassfish.jersey.jetty.JettyHttpContainer.<init>(JettyHt
>>> tpContainer.java:474)
>>> at org.glassfish.jersey.jetty.JettyHttpContainerProvider.create
>>> Container(JettyHttpContainerProvider.java:60)
>>> at org.glassfish.jersey.server.ContainerFactory.createContainer
>>> (ContainerFactory.java:81)
>>> at org.glassfish.jersey.jetty.JettyHttpContainerFactory.createS
>>> erver(JettyHttpContainerFactory.java:161)
>>> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
>>>
>> reJettyTestContainer.<init>(DeltaspikeAwareJettyTestContainer.java:41)
>>> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
>>> reJettyTestContainerFactory.create(DeltaspikeAwareJettyTes
>>> tContainerFactory.java:16)
>>> at org.glassfish.jersey.test.JerseyTest.createTestContainer(Jer
>>> seyTest.java:277)
>>> at org.glassfish.jersey.test.JerseyTest.setUp(JerseyTest.java:607)
>>> at ch.adnovum.moap.movie.management.web.EntityAccessTest.setUp(
>>> EntityAccessTest.java:50)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>>> ssorImpl.java:62)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>>> thodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:483)
>>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
>>> FrameworkMethod.java:50)
>>> at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
>>> ectiveCallable.java:12)
>>> at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
>>> ameworkMethod.java:47)
>>> at org.junit.internal.runners.statements.RunBefores.evaluate(
>>> RunBefores.java:24)
>>> at org.junit.internal.runners.statements.RunAfters.evaluate(Run
>>> Afters.java:27)
>>> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
>>> 4ClassRunner.java:78)
>>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>>> runChild(CdiTestRunner.java:177)
>>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>>> runChild(CdiTestRunner.java:76)
>>> 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.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Be
>>> foreClassStatement.evaluate(CdiTestRunner.java:372)
>>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Af
>>> terClassStatement.evaluate(CdiTestRunner.java:393)
>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>>> run(CdiTestRunner.java:144)
>>> 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.runTe
>>> sts(RemoteTestRunner.java:459)
>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
>>> sts(RemoteTestRunner.java:678)
>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
>>> RemoteTestRunner.java:382)
>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
>>> RemoteTestRunner.java:192)
>>>
>>> KatharsisMgmtFeature is a regular Feature. And their is a Producer that
>>> makes the EntityManagerFactory available with @Inject.
>>>
>>> The application works if I manually register a
>>> org.glassfish.hk2.utilities.binding.AbstractBinder bean as singleton to
>>> the Application and use it to bind CDI beans to jersey/hk2 with
>>> AbstractBinder.bind(x).to(y). But I would rather prefer for Jersey to
>>> directly access the CDI beans instead of bridging those with the
>>> AbstractBinder.
>>>
>>> My dependencies for Jersey currently look like:
>>>
>>> compile 'org.glassfish.jersey.core:jersey-client:2.23.1'
>>> compile 'org.glassfish.jersey.core:jersey-common:2.23.1'
>>> compile 'org.glassfish.jersey.test-framework:jersey-test-framework-
>>> core:2.23.1'
>>> compile 'org.glassfish.jersey.test-framework.providers:jersey-test-
>>> framework-provider-jetty:2.23.1'
>>> compile 'org.glassfish.jersey.containers:jersey-container-jetty-
>>> http:2.23.1'
>>> compile
>> 'org.glassfish.jersey.bundles.repackaged:jersey-guava:2.23.1'
>>> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x:2.23.1'
>>> compile
>> 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-transaction:2.23.1'
>>> compile
>> 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-servlet:2.23.1'
>>> The last three are new jersey libraries first having become available last
>>> year. Documentation about those is available here:
>>> https://jersey.java.net/documentation/latest/cdi.support.html.
>>> Potentially that api would open up the possiblity for a small deltaspike
>>> library that does all the necessary integration work (request scoping, cdi
>>> binding), probably independent of Jetty.
>>>
>>> Or is there a complete example somewhere?
>>>
>>> Regards Remo
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
Re: Jersey, OpenEJB, Deltaspike
Posted by Mark Struberg <st...@yahoo.de.INVALID>.
+1, what about simply using openejb with the built-in CXF?
Do you need something special from Jersey?
LieGrue,
strub
> On Tuesday, 16 August 2016, 15:00, Gerhard Petracek <ge...@gmail.com> wrote:
> > hi remo,
>
> if you would like to stick with tomee/openejb as well as with jersey, you
> need a setup which integrates jersey with owb like jersey-weld2-se is doing
> it with weld (or jersey with the cdi 1.1+ api) or you need a setup which
> integrates tomee/openejb with jersey.
>
> the last time i looked at jersey, only the out-of-the-box integration with
> weld worked as expected.
> -> if jersey still doesn't provide a better out-of-the-box integration
> (based on the cdi 1.1+ api or with owb directly), you need to contact one
> of the two communities (tomee or jersey) or replace one of the parts.
>
> regards,
> gerhard
>
>
>
>
> 2016-08-16 10:03 GMT+02:00 Remo Meier <re...@adnovum.ch>:
>
>> Hi
>>
>> I attempt to get get the Jersey integration running together with
>> Deltaspike, OpenEJB and Test Control according to the documentation at the
>> bottom of the page here:
>>
>> https://deltaspike.apache.org/documentation/test-control.html
>>
>> Not working so far is the injection of CDI beans into JAX-RS resources.
>> The resulting exceptions look like like:
>>
>> MultiException stack 1 of 1
>> org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object
>> available for injection at SystemInjecteeImpl(requiredTyp
>> e=EntityManagerFactory,parent=KatharsisMgmtFeature,qualifier
>>
> s={},position=-1,optional=false,self=false,unqualified=null,1475912655)
>> at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThir
>> tyResolver.java:75)
>> at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:945)
>> at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLoca
>> torImpl.java:979)
>> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
>> e(ServiceLocatorImpl.java:1054)
>> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
>> e(ServiceLocatorImpl.java:1045)
>> at org.glassfish.jersey.model.internal.CommonConfig.configureFe
>> atures(CommonConfig.java:711)
>> at org.glassfish.jersey.model.internal.CommonConfig.configureMe
>> taProviders(CommonConfig.java:648)
>> at org.glassfish.jersey.server.ResourceConfig.configureMetaProv
>> iders(ResourceConfig.java:829)
>> at org.glassfish.jersey.server.ApplicationHandler.initialize(Ap
>> plicationHandler.java:453)
>> at org.glassfish.jersey.server.ApplicationHandler.access$500(Ap
>> plicationHandler.java:184)
>> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
>> ationHandler.java:350)
>> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
>> ationHandler.java:347)
>> at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
>> at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
>> at org.glassfish.jersey.internal.Errors.processWithException(Er
>> rors.java:255)
>> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
>> ationHandler.java:347)
>> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
>> ationHandler.java:311)
>> at org.glassfish.jersey.jetty.JettyHttpContainer.<init>(JettyHt
>> tpContainer.java:474)
>> at org.glassfish.jersey.jetty.JettyHttpContainerProvider.create
>> Container(JettyHttpContainerProvider.java:60)
>> at org.glassfish.jersey.server.ContainerFactory.createContainer
>> (ContainerFactory.java:81)
>> at org.glassfish.jersey.jetty.JettyHttpContainerFactory.createS
>> erver(JettyHttpContainerFactory.java:161)
>> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
>>
> reJettyTestContainer.<init>(DeltaspikeAwareJettyTestContainer.java:41)
>> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
>> reJettyTestContainerFactory.create(DeltaspikeAwareJettyTes
>> tContainerFactory.java:16)
>> at org.glassfish.jersey.test.JerseyTest.createTestContainer(Jer
>> seyTest.java:277)
>> at org.glassfish.jersey.test.JerseyTest.setUp(JerseyTest.java:607)
>> at ch.adnovum.moap.movie.management.web.EntityAccessTest.setUp(
>> EntityAccessTest.java:50)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>> ssorImpl.java:62)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>> thodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:483)
>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
>> FrameworkMethod.java:50)
>> at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
>> ectiveCallable.java:12)
>> at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
>> ameworkMethod.java:47)
>> at org.junit.internal.runners.statements.RunBefores.evaluate(
>> RunBefores.java:24)
>> at org.junit.internal.runners.statements.RunAfters.evaluate(Run
>> Afters.java:27)
>> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
>> 4ClassRunner.java:78)
>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>> runChild(CdiTestRunner.java:177)
>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>> runChild(CdiTestRunner.java:76)
>> 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.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Be
>> foreClassStatement.evaluate(CdiTestRunner.java:372)
>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Af
>> terClassStatement.evaluate(CdiTestRunner.java:393)
>> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>> run(CdiTestRunner.java:144)
>> 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.runTe
>> sts(RemoteTestRunner.java:459)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
>> sts(RemoteTestRunner.java:678)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
>> RemoteTestRunner.java:382)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
>> RemoteTestRunner.java:192)
>>
>> KatharsisMgmtFeature is a regular Feature. And their is a Producer that
>> makes the EntityManagerFactory available with @Inject.
>>
>> The application works if I manually register a
>> org.glassfish.hk2.utilities.binding.AbstractBinder bean as singleton to
>> the Application and use it to bind CDI beans to jersey/hk2 with
>> AbstractBinder.bind(x).to(y). But I would rather prefer for Jersey to
>> directly access the CDI beans instead of bridging those with the
>> AbstractBinder.
>>
>> My dependencies for Jersey currently look like:
>>
>> compile 'org.glassfish.jersey.core:jersey-client:2.23.1'
>> compile 'org.glassfish.jersey.core:jersey-common:2.23.1'
>> compile 'org.glassfish.jersey.test-framework:jersey-test-framework-
>> core:2.23.1'
>> compile 'org.glassfish.jersey.test-framework.providers:jersey-test-
>> framework-provider-jetty:2.23.1'
>> compile 'org.glassfish.jersey.containers:jersey-container-jetty-
>> http:2.23.1'
>> compile
> 'org.glassfish.jersey.bundles.repackaged:jersey-guava:2.23.1'
>>
>> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x:2.23.1'
>> compile
> 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-transaction:2.23.1'
>> compile
> 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-servlet:2.23.1'
>>
>> The last three are new jersey libraries first having become available last
>> year. Documentation about those is available here:
>> https://jersey.java.net/documentation/latest/cdi.support.html.
>> Potentially that api would open up the possiblity for a small deltaspike
>> library that does all the necessary integration work (request scoping, cdi
>> binding), probably independent of Jetty.
>>
>> Or is there a complete example somewhere?
>>
>> Regards Remo
>>
>>
>>
>>
>>
>>
>>
>>
>
Re: Jersey, OpenEJB, Deltaspike
Posted by Gerhard Petracek <ge...@gmail.com>.
hi remo,
ds-test-control uses the same instance for @Before and @Test methods (per
default).
activating deltaspike.testcontrol.use_test_class_as_cdi_bean is the only
known way to get the effect you described.
(in that case you get dependent-scoped test-instances, >if< you don't
specify a scope for the test-class.)
regards,
gerhard
2016-08-17 16:28 GMT+02:00 Remo Meier <re...@adnovum.ch>:
> Hi Gerhard
>
> Thx. Seems that injection is working fine for normal JAX-RS Resources, but
> not for JAX-RS Features. I will investigate this further.
>
> An other issue I have noticed that test classes get loaded twice by
> openejb. The stack traces look like (1.7.1 version):
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner at localhost:52037
> Thread [main] (Suspended (entry into method <init> in BasicTest))
> BasicTest.<init>() line: 17
> NativeConstructorAccessorImpl.newInstance0(Constructor<?>, Object[])
> line: not available [native method]
> NativeConstructorAccessorImpl.newInstance(Object[]) line: 62
> DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45
> Constructor<T>.newInstance(Object...) line: 408
> InjectableConstructor<T>.doInjection() line: 72
> InjectionTargetImpl<T>.newInstance(CreationalContextImpl<T>) line: 190
> InjectionTargetImpl<T>.produce(Map<Interceptor<?>,?>,
> CreationalContextImpl<T>) line: 173
> InjectionTargetImpl<T>(AbstractProducer<T>).produce(CreationalContext<T>)
> line: 172
> ManagedBean<T>(AbstractOwbBean<T>).create(CreationalContext<T>) line: 122
> ManagedBean<T>.create(CreationalContext<T>) line: 67
> DependentContext.getInstance(Contextual<T>, CreationalContext<T>)
> line: 68
> DependentContext(AbstractContext).get(Contextual<T>,
> CreationalContext<T>) line: 125
> BeanManagerImpl.getReference(Bean<?>, Type, CreationalContext<?>)
> line: 789
> InjectableBeanManager.getReference(Bean<?>, Type,
> CreationalContext<?>) line: 165
> CdiTestRunner.createTest() line: 203
> BlockJUnit4ClassRunner$1.runReflectiveCall() line: 266
> BlockJUnit4ClassRunner$1(ReflectiveCallable).run() line: 12
> CdiTestRunner(BlockJUnit4ClassRunner).methodBlock(FrameworkMethod) line:
> 263
> CdiTestRunner(BlockJUnit4ClassRunner).runChild(FrameworkMethod,
> RunNotifier) line: 78
> CdiTestRunner.runChild(FrameworkMethod, RunNotifier) line: 177
> CdiTestRunner.runChild(Object, RunNotifier) line: 76
> ParentRunner$3.run() line: 290
> ParentRunner$1.schedule(Runnable) line: 71
> CdiTestRunner(ParentRunner<T>).runChildren(RunNotifier) line: 288
> ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 58
> ParentRunner$2.evaluate() line: 268
> CdiTestRunner$BeforeClassStatement.evaluate() line: 372
> CdiTestRunner$AfterClassStatement.evaluate() line: 393
> CdiTestRunner(ParentRunner<T>).run(RunNotifier) line: 363
> CdiTestRunner.run(RunNotifier) line: 144
> JUnit4TestReference.run(TestExecution) line: 86
> TestExecution.run(ITestReference[]) line: 38
> RemoteTestRunner.runTests(String[], String, TestExecution) line:
> 459
> RemoteTestRunner.runTests(TestExecution) line: 678
> RemoteTestRunner.run() line: 382
> RemoteTestRunner.main(String[]) line: 192
> Thread [ReaderThread] (Running)
> Daemon Thread [LogStreamAsync.Thread] (Running)
> Daemon Thread [RetryTimer] (Running)
>
>
> and
>
>
> Thread [main] (Suspended (entry into method <init> in BasicTest))
> BasicTest.<init>() line: 17
> NativeConstructorAccessorImpl.newInstance0(Constructor<?>, Object[])
> line: not available [native method]
> NativeConstructorAccessorImpl.newInstance(Object[]) line: 62
> DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45
> Constructor<T>.newInstance(Object...) line: 408
> InjectableConstructor<T>.doInjection() line: 72
> InjectionTargetImpl<T>.newInstance(CreationalContextImpl<T>) line: 190
> InjectionTargetImpl<T>.produce(Map<Interceptor<?>,?>,
> CreationalContextImpl<T>) line: 173
> InjectionTargetImpl<T>(AbstractProducer<T>).produce(CreationalContext<T>)
> line: 172
> ManagedBean<T>(AbstractOwbBean<T>).create(CreationalContext<T>) line: 122
> ManagedBean<T>.create(CreationalContext<T>) line: 67
> DependentContext.getInstance(Contextual<T>, CreationalContext<T>)
> line: 68
> DependentContext(AbstractContext).get(Contextual<T>,
> CreationalContext<T>) line: 125
> BeanManagerImpl.getReference(Bean<?>, Type, CreationalContext<?>)
> line: 789
> InjectableBeanManager.getReference(Bean<?>, Type,
> CreationalContext<?>) line: 165
> CdiTestRunner$ContainerAwareMethodInvoker.evaluate() line: 326
> RunBefores.evaluate() line: 26
> RunAfters.evaluate() line: 27
> CdiTestRunner(ParentRunner<T>).runLeaf(Statement, Description,
> RunNotifier) line: 325
> CdiTestRunner(BlockJUnit4ClassRunner).runChild(FrameworkMethod,
> RunNotifier) line: 78
> CdiTestRunner.runChild(FrameworkMethod, RunNotifier) line: 177
> CdiTestRunner.runChild(Object, RunNotifier) line: 76
> ParentRunner$3.run() line: 290
> ParentRunner$1.schedule(Runnable) line: 71
> CdiTestRunner(ParentRunner<T>).runChildren(RunNotifier) line: 288
> ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 58
> ParentRunner$2.evaluate() line: 268
> CdiTestRunner$BeforeClassStatement.evaluate() line: 372
> CdiTestRunner$AfterClassStatement.evaluate() line: 393
> CdiTestRunner(ParentRunner<T>).run(RunNotifier) line: 363
> CdiTestRunner.run(RunNotifier) line: 144
> JUnit4TestReference.run(TestExecution) line: 86
> TestExecution.run(ITestReference[]) line: 38
> RemoteTestRunner.runTests(String[], String, TestExecution) line: 459
> RemoteTestRunner.runTests(TestExecution) line: 678
> RemoteTestRunner.run() line: 382
> RemoteTestRunner.main(String[]) line: 192
>
> For example, @Before and @Test get called on different instances. It works
> when I annotate the test class with @Singleton. Not sure about the
> Deltaspike internals, but maybe @RunWith should imply @Singleton. I have
> only seen this when using with Jersey. Maybe because it uses request
> scoping by default and messes something up within deltaspike.
>
> Regards Remo
>
>
>
> Am 16.08.2016 um 15:00 schrieb Gerhard Petracek:
>
>> hi remo,
>>
>> if you would like to stick with tomee/openejb as well as with jersey, you
>> need a setup which integrates jersey with owb like jersey-weld2-se is
>> doing
>> it with weld (or jersey with the cdi 1.1+ api) or you need a setup which
>> integrates tomee/openejb with jersey.
>>
>> the last time i looked at jersey, only the out-of-the-box integration with
>> weld worked as expected.
>> -> if jersey still doesn't provide a better out-of-the-box integration
>> (based on the cdi 1.1+ api or with owb directly), you need to contact one
>> of the two communities (tomee or jersey) or replace one of the parts.
>>
>> regards,
>> gerhard
>>
>>
>>
>> 2016-08-16 10:03 GMT+02:00 Remo Meier <re...@adnovum.ch>:
>>
>> Hi
>>>
>>> I attempt to get get the Jersey integration running together with
>>> Deltaspike, OpenEJB and Test Control according to the documentation at
>>> the
>>> bottom of the page here:
>>>
>>> https://deltaspike.apache.org/documentation/test-control.html
>>>
>>> Not working so far is the injection of CDI beans into JAX-RS resources.
>>> The resulting exceptions look like like:
>>>
>>> MultiException stack 1 of 1
>>> org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no
>>> object
>>> available for injection at SystemInjecteeImpl(requiredTyp
>>> e=EntityManagerFactory,parent=KatharsisMgmtFeature,qualifier
>>> s={},position=-1,optional=false,self=false,unqualified=null,1475912655)
>>> at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThir
>>> tyResolver.java:75)
>>> at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:945)
>>> at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLoca
>>> torImpl.java:979)
>>> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
>>> e(ServiceLocatorImpl.java:1054)
>>> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
>>> e(ServiceLocatorImpl.java:1045)
>>> at org.glassfish.jersey.model.internal.CommonConfig.configureFe
>>> atures(CommonConfig.java:711)
>>> at org.glassfish.jersey.model.internal.CommonConfig.configureMe
>>> taProviders(CommonConfig.java:648)
>>> at org.glassfish.jersey.server.ResourceConfig.configureMetaProv
>>> iders(ResourceConfig.java:829)
>>> at org.glassfish.jersey.server.ApplicationHandler.initialize(Ap
>>> plicationHandler.java:453)
>>> at org.glassfish.jersey.server.ApplicationHandler.access$500(Ap
>>> plicationHandler.java:184)
>>> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
>>> ationHandler.java:350)
>>> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
>>> ationHandler.java:347)
>>> at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
>>> at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
>>> at org.glassfish.jersey.internal.Errors.processWithException(Er
>>> rors.java:255)
>>> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
>>> ationHandler.java:347)
>>> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
>>> ationHandler.java:311)
>>> at org.glassfish.jersey.jetty.JettyHttpContainer.<init>(JettyHt
>>> tpContainer.java:474)
>>> at org.glassfish.jersey.jetty.JettyHttpContainerProvider.create
>>> Container(JettyHttpContainerProvider.java:60)
>>> at org.glassfish.jersey.server.ContainerFactory.createContainer
>>> (ContainerFactory.java:81)
>>> at org.glassfish.jersey.jetty.JettyHttpContainerFactory.createS
>>> erver(JettyHttpContainerFactory.java:161)
>>> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
>>> reJettyTestContainer.<init>(DeltaspikeAwareJettyTestContainer.java:41)
>>> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
>>> reJettyTestContainerFactory.create(DeltaspikeAwareJettyTes
>>> tContainerFactory.java:16)
>>> at org.glassfish.jersey.test.JerseyTest.createTestContainer(Jer
>>> seyTest.java:277)
>>> at org.glassfish.jersey.test.JerseyTest.setUp(JerseyTest.java:607)
>>> at ch.adnovum.moap.movie.management.web.EntityAccessTest.setUp(
>>> EntityAccessTest.java:50)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>>> ssorImpl.java:62)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>>> thodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:483)
>>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
>>> FrameworkMethod.java:50)
>>> at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
>>> ectiveCallable.java:12)
>>> at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
>>> ameworkMethod.java:47)
>>> at org.junit.internal.runners.statements.RunBefores.evaluate(
>>> RunBefores.java:24)
>>> at org.junit.internal.runners.statements.RunAfters.evaluate(Run
>>> Afters.java:27)
>>> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
>>> 4ClassRunner.java:78)
>>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>>> runChild(CdiTestRunner.java:177)
>>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>>> runChild(CdiTestRunner.java:76)
>>> 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.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Be
>>> foreClassStatement.evaluate(CdiTestRunner.java:372)
>>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Af
>>> terClassStatement.evaluate(CdiTestRunner.java:393)
>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>>> run(CdiTestRunner.java:144)
>>> 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.runTe
>>> sts(RemoteTestRunner.java:459)
>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
>>> sts(RemoteTestRunner.java:678)
>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
>>> RemoteTestRunner.java:382)
>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
>>> RemoteTestRunner.java:192)
>>>
>>> KatharsisMgmtFeature is a regular Feature. And their is a Producer that
>>> makes the EntityManagerFactory available with @Inject.
>>>
>>> The application works if I manually register a
>>> org.glassfish.hk2.utilities.binding.AbstractBinder bean as singleton to
>>> the Application and use it to bind CDI beans to jersey/hk2 with
>>> AbstractBinder.bind(x).to(y). But I would rather prefer for Jersey to
>>> directly access the CDI beans instead of bridging those with the
>>> AbstractBinder.
>>>
>>> My dependencies for Jersey currently look like:
>>>
>>> compile 'org.glassfish.jersey.core:jersey-client:2.23.1'
>>> compile 'org.glassfish.jersey.core:jersey-common:2.23.1'
>>> compile 'org.glassfish.jersey.test-framework:jersey-test-framework-
>>> core:2.23.1'
>>> compile 'org.glassfish.jersey.test-framework.providers:jersey-test-
>>> framework-provider-jetty:2.23.1'
>>> compile 'org.glassfish.jersey.containers:jersey-container-jetty-
>>> http:2.23.1'
>>> compile 'org.glassfish.jersey.bundles.
>>> repackaged:jersey-guava:2.23.1'
>>>
>>> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x:2.23.1'
>>> compile 'org.glassfish.jersey.ext.cdi:
>>> jersey-cdi1x-transaction:2.23.1'
>>> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-servlet:2.23.1'
>>>
>>> The last three are new jersey libraries first having become available
>>> last
>>> year. Documentation about those is available here:
>>> https://jersey.java.net/documentation/latest/cdi.support.html.
>>> Potentially that api would open up the possiblity for a small deltaspike
>>> library that does all the necessary integration work (request scoping,
>>> cdi
>>> binding), probably independent of Jetty.
>>>
>>> Or is there a complete example somewhere?
>>>
>>> Regards Remo
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
Re: Jersey, OpenEJB, Deltaspike
Posted by Remo Meier <re...@adnovum.ch>.
Hi Gerhard
Thx. Seems that injection is working fine for normal JAX-RS Resources,
but not for JAX-RS Features. I will investigate this further.
An other issue I have noticed that test classes get loaded twice by
openejb. The stack traces look like (1.7.1 version):
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner at localhost:52037
Thread [main] (Suspended (entry into method <init> in BasicTest))
BasicTest.<init>() line: 17
NativeConstructorAccessorImpl.newInstance0(Constructor<?>, Object[])
line: not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: 62
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45
Constructor<T>.newInstance(Object...) line: 408
InjectableConstructor<T>.doInjection() line: 72
InjectionTargetImpl<T>.newInstance(CreationalContextImpl<T>) line: 190
InjectionTargetImpl<T>.produce(Map<Interceptor<?>,?>,
CreationalContextImpl<T>) line: 173
InjectionTargetImpl<T>(AbstractProducer<T>).produce(CreationalContext<T>)
line: 172
ManagedBean<T>(AbstractOwbBean<T>).create(CreationalContext<T>) line: 122
ManagedBean<T>.create(CreationalContext<T>) line: 67
DependentContext.getInstance(Contextual<T>,
CreationalContext<T>) line: 68
DependentContext(AbstractContext).get(Contextual<T>,
CreationalContext<T>) line: 125
BeanManagerImpl.getReference(Bean<?>, Type,
CreationalContext<?>) line: 789
InjectableBeanManager.getReference(Bean<?>, Type,
CreationalContext<?>) line: 165
CdiTestRunner.createTest() line: 203
BlockJUnit4ClassRunner$1.runReflectiveCall() line: 266
BlockJUnit4ClassRunner$1(ReflectiveCallable).run() line: 12
CdiTestRunner(BlockJUnit4ClassRunner).methodBlock(FrameworkMethod) line:
263
CdiTestRunner(BlockJUnit4ClassRunner).runChild(FrameworkMethod,
RunNotifier) line: 78
CdiTestRunner.runChild(FrameworkMethod, RunNotifier) line: 177
CdiTestRunner.runChild(Object, RunNotifier) line: 76
ParentRunner$3.run() line: 290
ParentRunner$1.schedule(Runnable) line: 71
CdiTestRunner(ParentRunner<T>).runChildren(RunNotifier) line: 288
ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 58
ParentRunner$2.evaluate() line: 268
CdiTestRunner$BeforeClassStatement.evaluate() line: 372
CdiTestRunner$AfterClassStatement.evaluate() line: 393
CdiTestRunner(ParentRunner<T>).run(RunNotifier) line: 363
CdiTestRunner.run(RunNotifier) line: 144
JUnit4TestReference.run(TestExecution) line: 86
TestExecution.run(ITestReference[]) line: 38
RemoteTestRunner.runTests(String[], String, TestExecution)
line: 459
RemoteTestRunner.runTests(TestExecution) line: 678
RemoteTestRunner.run() line: 382
RemoteTestRunner.main(String[]) line: 192
Thread [ReaderThread] (Running)
Daemon Thread [LogStreamAsync.Thread] (Running)
Daemon Thread [RetryTimer] (Running)
and
Thread [main] (Suspended (entry into method <init> in BasicTest))
BasicTest.<init>() line: 17
NativeConstructorAccessorImpl.newInstance0(Constructor<?>, Object[])
line: not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: 62
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45
Constructor<T>.newInstance(Object...) line: 408
InjectableConstructor<T>.doInjection() line: 72
InjectionTargetImpl<T>.newInstance(CreationalContextImpl<T>) line: 190
InjectionTargetImpl<T>.produce(Map<Interceptor<?>,?>,
CreationalContextImpl<T>) line: 173
InjectionTargetImpl<T>(AbstractProducer<T>).produce(CreationalContext<T>)
line: 172
ManagedBean<T>(AbstractOwbBean<T>).create(CreationalContext<T>) line: 122
ManagedBean<T>.create(CreationalContext<T>) line: 67
DependentContext.getInstance(Contextual<T>, CreationalContext<T>)
line: 68
DependentContext(AbstractContext).get(Contextual<T>,
CreationalContext<T>) line: 125
BeanManagerImpl.getReference(Bean<?>, Type, CreationalContext<?>)
line: 789
InjectableBeanManager.getReference(Bean<?>, Type,
CreationalContext<?>) line: 165
CdiTestRunner$ContainerAwareMethodInvoker.evaluate() line: 326
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
CdiTestRunner(ParentRunner<T>).runLeaf(Statement, Description,
RunNotifier) line: 325
CdiTestRunner(BlockJUnit4ClassRunner).runChild(FrameworkMethod,
RunNotifier) line: 78
CdiTestRunner.runChild(FrameworkMethod, RunNotifier) line: 177
CdiTestRunner.runChild(Object, RunNotifier) line: 76
ParentRunner$3.run() line: 290
ParentRunner$1.schedule(Runnable) line: 71
CdiTestRunner(ParentRunner<T>).runChildren(RunNotifier) line: 288
ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 58
ParentRunner$2.evaluate() line: 268
CdiTestRunner$BeforeClassStatement.evaluate() line: 372
CdiTestRunner$AfterClassStatement.evaluate() line: 393
CdiTestRunner(ParentRunner<T>).run(RunNotifier) line: 363
CdiTestRunner.run(RunNotifier) line: 144
JUnit4TestReference.run(TestExecution) line: 86
TestExecution.run(ITestReference[]) line: 38
RemoteTestRunner.runTests(String[], String, TestExecution) line: 459
RemoteTestRunner.runTests(TestExecution) line: 678
RemoteTestRunner.run() line: 382
RemoteTestRunner.main(String[]) line: 192
For example, @Before and @Test get called on different instances. It
works when I annotate the test class with @Singleton. Not sure about the
Deltaspike internals, but maybe @RunWith should imply @Singleton. I have
only seen this when using with Jersey. Maybe because it uses request
scoping by default and messes something up within deltaspike.
Regards Remo
Am 16.08.2016 um 15:00 schrieb Gerhard Petracek:
> hi remo,
>
> if you would like to stick with tomee/openejb as well as with jersey, you
> need a setup which integrates jersey with owb like jersey-weld2-se is doing
> it with weld (or jersey with the cdi 1.1+ api) or you need a setup which
> integrates tomee/openejb with jersey.
>
> the last time i looked at jersey, only the out-of-the-box integration with
> weld worked as expected.
> -> if jersey still doesn't provide a better out-of-the-box integration
> (based on the cdi 1.1+ api or with owb directly), you need to contact one
> of the two communities (tomee or jersey) or replace one of the parts.
>
> regards,
> gerhard
>
>
>
> 2016-08-16 10:03 GMT+02:00 Remo Meier <re...@adnovum.ch>:
>
>> Hi
>>
>> I attempt to get get the Jersey integration running together with
>> Deltaspike, OpenEJB and Test Control according to the documentation at the
>> bottom of the page here:
>>
>> https://deltaspike.apache.org/documentation/test-control.html
>>
>> Not working so far is the injection of CDI beans into JAX-RS resources.
>> The resulting exceptions look like like:
>>
>> MultiException stack 1 of 1
>> org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object
>> available for injection at SystemInjecteeImpl(requiredTyp
>> e=EntityManagerFactory,parent=KatharsisMgmtFeature,qualifier
>> s={},position=-1,optional=false,self=false,unqualified=null,1475912655)
>> at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThir
>> tyResolver.java:75)
>> at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:945)
>> at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLoca
>> torImpl.java:979)
>> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
>> e(ServiceLocatorImpl.java:1054)
>> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
>> e(ServiceLocatorImpl.java:1045)
>> at org.glassfish.jersey.model.internal.CommonConfig.configureFe
>> atures(CommonConfig.java:711)
>> at org.glassfish.jersey.model.internal.CommonConfig.configureMe
>> taProviders(CommonConfig.java:648)
>> at org.glassfish.jersey.server.ResourceConfig.configureMetaProv
>> iders(ResourceConfig.java:829)
>> at org.glassfish.jersey.server.ApplicationHandler.initialize(Ap
>> plicationHandler.java:453)
>> at org.glassfish.jersey.server.ApplicationHandler.access$500(Ap
>> plicationHandler.java:184)
>> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
>> ationHandler.java:350)
>> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
>> ationHandler.java:347)
>> at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
>> at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
>> at org.glassfish.jersey.internal.Errors.processWithException(Er
>> rors.java:255)
>> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
>> ationHandler.java:347)
>> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
>> ationHandler.java:311)
>> at org.glassfish.jersey.jetty.JettyHttpContainer.<init>(JettyHt
>> tpContainer.java:474)
>> at org.glassfish.jersey.jetty.JettyHttpContainerProvider.create
>> Container(JettyHttpContainerProvider.java:60)
>> at org.glassfish.jersey.server.ContainerFactory.createContainer
>> (ContainerFactory.java:81)
>> at org.glassfish.jersey.jetty.JettyHttpContainerFactory.createS
>> erver(JettyHttpContainerFactory.java:161)
>> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
>> reJettyTestContainer.<init>(DeltaspikeAwareJettyTestContainer.java:41)
>> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
>> reJettyTestContainerFactory.create(DeltaspikeAwareJettyTes
>> tContainerFactory.java:16)
>> at org.glassfish.jersey.test.JerseyTest.createTestContainer(Jer
>> seyTest.java:277)
>> at org.glassfish.jersey.test.JerseyTest.setUp(JerseyTest.java:607)
>> at ch.adnovum.moap.movie.management.web.EntityAccessTest.setUp(
>> EntityAccessTest.java:50)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>> ssorImpl.java:62)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>> thodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:483)
>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
>> FrameworkMethod.java:50)
>> at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
>> ectiveCallable.java:12)
>> at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
>> ameworkMethod.java:47)
>> at org.junit.internal.runners.statements.RunBefores.evaluate(
>> RunBefores.java:24)
>> at org.junit.internal.runners.statements.RunAfters.evaluate(Run
>> Afters.java:27)
>> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
>> 4ClassRunner.java:78)
>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>> runChild(CdiTestRunner.java:177)
>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>> runChild(CdiTestRunner.java:76)
>> 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.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Be
>> foreClassStatement.evaluate(CdiTestRunner.java:372)
>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Af
>> terClassStatement.evaluate(CdiTestRunner.java:393)
>> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
>> run(CdiTestRunner.java:144)
>> 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.runTe
>> sts(RemoteTestRunner.java:459)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
>> sts(RemoteTestRunner.java:678)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
>> RemoteTestRunner.java:382)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
>> RemoteTestRunner.java:192)
>>
>> KatharsisMgmtFeature is a regular Feature. And their is a Producer that
>> makes the EntityManagerFactory available with @Inject.
>>
>> The application works if I manually register a
>> org.glassfish.hk2.utilities.binding.AbstractBinder bean as singleton to
>> the Application and use it to bind CDI beans to jersey/hk2 with
>> AbstractBinder.bind(x).to(y). But I would rather prefer for Jersey to
>> directly access the CDI beans instead of bridging those with the
>> AbstractBinder.
>>
>> My dependencies for Jersey currently look like:
>>
>> compile 'org.glassfish.jersey.core:jersey-client:2.23.1'
>> compile 'org.glassfish.jersey.core:jersey-common:2.23.1'
>> compile 'org.glassfish.jersey.test-framework:jersey-test-framework-
>> core:2.23.1'
>> compile 'org.glassfish.jersey.test-framework.providers:jersey-test-
>> framework-provider-jetty:2.23.1'
>> compile 'org.glassfish.jersey.containers:jersey-container-jetty-
>> http:2.23.1'
>> compile 'org.glassfish.jersey.bundles.repackaged:jersey-guava:2.23.1'
>>
>> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x:2.23.1'
>> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-transaction:2.23.1'
>> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-servlet:2.23.1'
>>
>> The last three are new jersey libraries first having become available last
>> year. Documentation about those is available here:
>> https://jersey.java.net/documentation/latest/cdi.support.html.
>> Potentially that api would open up the possiblity for a small deltaspike
>> library that does all the necessary integration work (request scoping, cdi
>> binding), probably independent of Jetty.
>>
>> Or is there a complete example somewhere?
>>
>> Regards Remo
>>
>>
>>
>>
>>
>>
>>
>>
Re: Jersey, OpenEJB, Deltaspike
Posted by Gerhard Petracek <ge...@gmail.com>.
hi remo,
if you would like to stick with tomee/openejb as well as with jersey, you
need a setup which integrates jersey with owb like jersey-weld2-se is doing
it with weld (or jersey with the cdi 1.1+ api) or you need a setup which
integrates tomee/openejb with jersey.
the last time i looked at jersey, only the out-of-the-box integration with
weld worked as expected.
-> if jersey still doesn't provide a better out-of-the-box integration
(based on the cdi 1.1+ api or with owb directly), you need to contact one
of the two communities (tomee or jersey) or replace one of the parts.
regards,
gerhard
2016-08-16 10:03 GMT+02:00 Remo Meier <re...@adnovum.ch>:
> Hi
>
> I attempt to get get the Jersey integration running together with
> Deltaspike, OpenEJB and Test Control according to the documentation at the
> bottom of the page here:
>
> https://deltaspike.apache.org/documentation/test-control.html
>
> Not working so far is the injection of CDI beans into JAX-RS resources.
> The resulting exceptions look like like:
>
> MultiException stack 1 of 1
> org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object
> available for injection at SystemInjecteeImpl(requiredTyp
> e=EntityManagerFactory,parent=KatharsisMgmtFeature,qualifier
> s={},position=-1,optional=false,self=false,unqualified=null,1475912655)
> at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThir
> tyResolver.java:75)
> at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:945)
> at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLoca
> torImpl.java:979)
> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
> e(ServiceLocatorImpl.java:1054)
> at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitializ
> e(ServiceLocatorImpl.java:1045)
> at org.glassfish.jersey.model.internal.CommonConfig.configureFe
> atures(CommonConfig.java:711)
> at org.glassfish.jersey.model.internal.CommonConfig.configureMe
> taProviders(CommonConfig.java:648)
> at org.glassfish.jersey.server.ResourceConfig.configureMetaProv
> iders(ResourceConfig.java:829)
> at org.glassfish.jersey.server.ApplicationHandler.initialize(Ap
> plicationHandler.java:453)
> at org.glassfish.jersey.server.ApplicationHandler.access$500(Ap
> plicationHandler.java:184)
> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
> ationHandler.java:350)
> at org.glassfish.jersey.server.ApplicationHandler$3.call(Applic
> ationHandler.java:347)
> at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
> at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
> at org.glassfish.jersey.internal.Errors.processWithException(Er
> rors.java:255)
> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
> ationHandler.java:347)
> at org.glassfish.jersey.server.ApplicationHandler.<init>(Applic
> ationHandler.java:311)
> at org.glassfish.jersey.jetty.JettyHttpContainer.<init>(JettyHt
> tpContainer.java:474)
> at org.glassfish.jersey.jetty.JettyHttpContainerProvider.create
> Container(JettyHttpContainerProvider.java:60)
> at org.glassfish.jersey.server.ContainerFactory.createContainer
> (ContainerFactory.java:81)
> at org.glassfish.jersey.jetty.JettyHttpContainerFactory.createS
> erver(JettyHttpContainerFactory.java:161)
> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
> reJettyTestContainer.<init>(DeltaspikeAwareJettyTestContainer.java:41)
> at ch.adnovum.jcan.test.deltaspike.jaxrs.internal.DeltaspikeAwa
> reJettyTestContainerFactory.create(DeltaspikeAwareJettyTes
> tContainerFactory.java:16)
> at org.glassfish.jersey.test.JerseyTest.createTestContainer(Jer
> seyTest.java:277)
> at org.glassfish.jersey.test.JerseyTest.setUp(JerseyTest.java:607)
> at ch.adnovum.moap.movie.management.web.EntityAccessTest.setUp(
> EntityAccessTest.java:50)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
> ssorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
> thodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:483)
> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
> FrameworkMethod.java:50)
> at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
> ectiveCallable.java:12)
> at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
> ameworkMethod.java:47)
> at org.junit.internal.runners.statements.RunBefores.evaluate(
> RunBefores.java:24)
> at org.junit.internal.runners.statements.RunAfters.evaluate(Run
> Afters.java:27)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
> 4ClassRunner.java:78)
> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
> runChild(CdiTestRunner.java:177)
> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
> runChild(CdiTestRunner.java:76)
> 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.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Be
> foreClassStatement.evaluate(CdiTestRunner.java:372)
> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$Af
> terClassStatement.evaluate(CdiTestRunner.java:393)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.
> run(CdiTestRunner.java:144)
> 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.runTe
> sts(RemoteTestRunner.java:459)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
> sts(RemoteTestRunner.java:678)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
> RemoteTestRunner.java:382)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
> RemoteTestRunner.java:192)
>
> KatharsisMgmtFeature is a regular Feature. And their is a Producer that
> makes the EntityManagerFactory available with @Inject.
>
> The application works if I manually register a
> org.glassfish.hk2.utilities.binding.AbstractBinder bean as singleton to
> the Application and use it to bind CDI beans to jersey/hk2 with
> AbstractBinder.bind(x).to(y). But I would rather prefer for Jersey to
> directly access the CDI beans instead of bridging those with the
> AbstractBinder.
>
> My dependencies for Jersey currently look like:
>
> compile 'org.glassfish.jersey.core:jersey-client:2.23.1'
> compile 'org.glassfish.jersey.core:jersey-common:2.23.1'
> compile 'org.glassfish.jersey.test-framework:jersey-test-framework-
> core:2.23.1'
> compile 'org.glassfish.jersey.test-framework.providers:jersey-test-
> framework-provider-jetty:2.23.1'
> compile 'org.glassfish.jersey.containers:jersey-container-jetty-
> http:2.23.1'
> compile 'org.glassfish.jersey.bundles.repackaged:jersey-guava:2.23.1'
>
> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x:2.23.1'
> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-transaction:2.23.1'
> compile 'org.glassfish.jersey.ext.cdi:jersey-cdi1x-servlet:2.23.1'
>
> The last three are new jersey libraries first having become available last
> year. Documentation about those is available here:
> https://jersey.java.net/documentation/latest/cdi.support.html.
> Potentially that api would open up the possiblity for a small deltaspike
> library that does all the necessary integration work (request scoping, cdi
> binding), probably independent of Jetty.
>
> Or is there a complete example somewhere?
>
> Regards Remo
>
>
>
>
>
>
>
>