[cdi-dev] Do we already have a kind of CDI SE in 1.1+ ?

Mark Struberg struberg at yahoo.de
Sat Dec 20 12:04:51 EST 2014


I see. What you did is to leverage the existing CDI-1.1 API and enhance it with new functionality.
But actually it is not in the CDI spec yet. That was the part which confused me. 


Regarding shutdown: well that's not a small issue I fear. And you still have no whatever control over the contexts. Which is another blocker imo.

It's always good to re-think other usages of our APIs. Let me sleep a few days thinking about it.

LieGrue,
strub





> On Saturday, 20 December 2014, 17:40, Antoine Sabot-Durand <antoine at sabot-durand.net> wrote:
> > 
>>  Le 19 déc. 2014 à 23:48, Mark Struberg <struberg at yahoo.de> a écrit :
>> 
>>  This is nowhere near portable as far as I can see.
> 
> 
> That’s probably why it took me 5 minutes to port it successfully to OpenWebBeans 
> 1.5.0 ;)
> 
> look at the modified file : 
> https://github.com/antoinesd/openwebbeans/blob/1.5.0-with-se/webbeans-impl/src/main/java/org/apache/webbeans/container/OwbCDIProvider.java
> 
> It probably needs something nicer to detect if OWB is running in SE or EE but 
> the idea is here
> 
> 
>>  And we had container specific hacks since day 1 so to say…
> 
> I’m not talking about container. After having added specific part in each 
> implementation, we have the same way to start CDI
> I demonstrated that CDI 1.1+ this piece of code could boot CDI in SE if the 
> implementation has what is required
> 
> Look at new version of OWB standalone-sample:
> 
> https://github.com/antoinesd/openwebbeans/blob/1.5.0-with-se/samples/standalone-sample/src/main/java/org/apache/webbeans/se/sample/Boot.java
> 
> No more import of OWB specific classes and yet it runs.
> 
> 
>>  Or maybe I don't get it? How would that work in OWB?
>>  Would it even work in older Weld versions (1.2.x)?
> 
> Of course not because Weld 1.2 -> CDI 1.0. I’m talking about CDI 1.1 and 1.2 
> as it is written in this email subject.
> 
> Of course there are limitation especially regarding shutdown. But it is portable 
> way of booting CDI at spec level. Could be interesting to addd this trick to our 
> simple and communicate on it to say that portable CDI support for SE is already 
> here.
> 
> We’ll provide a better support in CDI 2.0 but in the meantime this can be 
> useful.
> 
> 
> Antoine
> 
> 
> 
> 
>> 
>>  LieGrue,
>>  strub
>> 
>> 
>> 
>>  On Friday, 19 December 2014, 12:45, Antoine Sabot-Durand 
> <antoine at sabot-durand.net> wrote:
>> 
>> 
>>> 
>>> 
>>>  Of course Jozef: We need something more controllable in CDI 2.0. But it 
> can be a basic alternative that works right now in CDI 1.2.
>>> 
>>>  Antoine Sabot-Durand
>>> 
>>>  Le 19 déc. 2014 à 12:24, Jozef Hartinger <jharting at redhat.com> a 
> écrit :
>>> 
>>> 
>>>  Interesting idea (for CDI 1.2 containers running in SE). As you wrote 
> for CDI 2.0 we need much more.
>>> 
>>> 
>>>  On 12/19/2014 12:03 PM, Antoine Sabot-Durand wrote:
>>> 
>>>  Hi guys,
>>> 
>>> 
>>>  As I said during last meeting I was puzzled by the non use of CDI and 
> CDIProvider to address CDI boot in Java SE.
>>> 
>>> 
>>>  I just made a small test adding this class to weld-se :
>>> 
>>> 
>>>  public class WeldSEProvider extends WeldProvider {
>>> 
>>>    private static boolean firstTime = true;
>>> 
>>>    @Override
>>>    public CDI<Object> getCDI() {
>>>        if (firstTime) {
>>>            new Weld().initialize();
>>>            firstTime = false;
>>>        }
>>> 
>>>        return super.getCDI();
>>>    }
>>> 
>>>  }
>>> 
>>> 
>>> 
>>>  and replaced the content of 
> META-INF/services/javax.enterprise.inject.spi.CDIProvider by my provider
>>> 
>>> 
>>>  org.jboss.weld.environment.se.WeldSEProvider
>>> 
>>> 
>>>  Using this new version of Weld-se in my project Iw as able to boot CDI 
> without implementation classes :
>>> 
>>> 
>>>  public class Main {
>>> 
>>>    public static void main(String[] args) throws Exception {
>>>        CDI cdi = CDI.current();
>>>        BeanManager bm = cdi.getBeanManager();
>>> 
>>>    }
>>> 
>>>  }
>>> 
>>> 
>>>  Code is available in my weld fork : 
> https://github.com/antoinesd/weld-core/blob/2.2-SE/environments/se/core/src/main/java/org/jboss/weld/environment/se/WeldSEProvider.java
>>> 
>>> 
>>>  Similar CDIProvider can be written for OWB as well.
>>> 
>>> 
>>>  I may have missed something, but I think we can figure out something 
> like that to provide SE support in CDI today, even if it’s not as complete as 
> the one we plan to push in CDI 2.0
>>> 
>>> 
>>>  Antoine
>>> 
>>> 
>>>  _______________________________________________
>>>  cdi-dev mailing list
>>>  cdi-dev at lists.jboss.org
>>>  https://lists.jboss.org/mailman/listinfo/cdi-dev
>>> 
>>>  Note that for all code provided on this list, the provider licenses the 
> code under the Apache License, Version 2 
> (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas provided 
> on this list, the provider waives all patent and other intellectual property 
> rights inherent in such information.
>>> 
>>> 
>



More information about the cdi-dev mailing list