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 <[email protected]>:

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

Reply via email to