What I could imagine is to combine blueprint and CDI. So for example you
could define a <reference id="..." interface="..."/> in your blueprint
file and then
inject it into a CDI class with @Inject. Of course there could be some
problems in details but it might work fine.
So what I imagine is to use CDI to wire the inner workings of a bundle
and use EJBs or OSGi services to wire your bundles. Basically blueprint
does this too but I think the inner wirings of a module can be done much
more efficiently using CDI.
About dragging in most of javaee. When using a complete implementation
like OpenEJB this is probably the case but we could also just also
implement the CDI annotation wiring for blueprint. There are only two
things we should really be careful with.
The first is: What happens if two CDI engines run in OSGi. I read that
the current OpenEJB OSGi impl automatically processes bundles with
annotations. So if blueprint also does the same it could become a
problem. I think for this case the OSGi requirements/capabilites could
work. So we could have capabilities for blueprint and JavaEE. The user
bundles could then specify which they depend on and so the engines could
work on the bundles more selectively.
The second is: We have to make sure to implement the annotations like
described in the spec. If not then having the same annotation that works
differently could really confuse developers.
So if there is interest I would volunteer to write a proof of concept to
implement a subset of CDI that works together with blueprint. I guess
the current blueprint annotations code should be a good starting point
for this.
Christian
Am 25.03.2012 18:01, schrieb David Jencks:
Getting OWB to work in a plain osgi environment should not be too hard. I
think the CDI annotation model is a lot better in all ways than blueprint.
I think what's missing is the connection to OSGI services. To be more than a
self-contained set of components with no relationship to anything outside the
bundle you need a way to consume osgi services from CDI components and expose
CDI beans as services. I haven't seen a proposal on how to do this.
I'm also not sure if CDI will automatically drag in most of javaee....
thanks
david jencks
On Mar 25, 2012, at 3:13 AM, Christian Schneider wrote:
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
Talend Application Integration Division http://www.talend.com