openwebbeans-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Struberg <strub...@yahoo.de>
Subject Re: Design - CDI and worker threads
Date Fri, 11 Apr 2014 12:12:20 GMT
yes that is exactly what I do. In WAS and also in TomEE ;)


LieGrue,
strub

On Friday, 11 April 2014, 9:42, Lars-Fredrik Smedberg <itsmeden@gmail.com> wrote:
 
Hi Mark
>
>
>Just so I understand it correctly.
>
>
>I can @Inject  a @Stateless bean once and call its @Asynchronous annotated method multiple
times to create threads that can process work that uses CDI managed beans?
>
>
>Thanks
>Lars-Fredrik
>
>
>
>On Fri, Apr 11, 2014 at 8:52 AM, Mark Struberg <struberg@yahoo.de> wrote:
>
>Concurrency utils is a completely different spec and IS broken as it does _not_ define
it properly. But for @Asynchronous it's perfectly well defined in the spec.
>>
>>I use this as thread starter for BatchEE and I've tested it in 
>>* TomEE
>>* WAS-8.0.0.6
>>* WAS-8.5.5.1
>>* JBossAS-7.0.3.Final
>>* latest WildFly
>>
>>LieGrue,
>>strub
>>
>>
>>
>>
>>On Friday, 11 April 2014, 7:15, Romain Manni-Bucau <rmannibucau@gmail.com> wrote:
>> 
>>Ok about the spec but propagation doesnt work for sure (it is a kind of issue for
concurrency utilities)
>>>You are right for the config but i just realize i was really not clear (throw
new TooLateException). If you sont configure the container, you can use a semaphore with 20
permits and the container block you to 10. So it is important to have a look too and it can
be enough avoiding custom potentially buggy code.
>>>Le 10 avr. 2014 22:40, "Mark Struberg" <struberg@yahoo.de> a écrit :
>>>
>>>
>>>>
>>>>> But not propagated in async pool..and not in ejb 3.1
>>>>Of course it is!
>>>>But you wont find this in the EJB spec - you need to look in the EE umbrella
spec and the CDI spec ;)
>>>>
>>>>
>>>>> Ps: you can configure async pool or stateless pool
>>>>Yes, some container allow to configure this. But I'm pretty sure there is
nothing in the spec which requires it. So I'd rather hack it myself.
>>>>
>>>>LieGrue,
>>>>strub
>>>>
>>>>
>>>>On Thursday, 10 April 2014, 23:18, Romain Manni-Bucau <rmannibucau@gmail.com>
wrote:
>>>>
>>>>Ps: you can configure async pool or stateless pool to limit concurrency depending
the container...but a semaphore enforces it portably
>>>>>Le 10 avr. 2014 22:15, "Romain Manni-Bucau" <rmannibucau@gmail.com>
a écrit :
>>>>>
>>>>>But not propagated in async pool..and not in ejb 3.1
>>>>>>Le 10 avr. 2014 20:54, "Mark Struberg" <struberg@yahoo.de> a
écrit :
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>Nope, not right.
>>>>>>>The CDI spec mandates that @RequestScoped is active for all EJB
calls. And every subsequent invocation as well of course.
>>>>>>>
>>>>>>>LieGrue,
>>>>>>>strub
>>>>>>>
>>>>>>>
>>>>>>>On Thursday, 10 April 2014, 17:52, Romain Manni-Bucau <rmannibucau@gmail.com>
wrote:
>>>>>>>
>>>>>>>actually @Asynch doesn't mandates to start cdi contexts so request
>>>>>>>>scopes can or not be here but transactions are handled if
you remove
>>>>>>>>transaction management.
>>>>>>>>Romain Manni-Bucau
>>>>>>>>Twitter: @rmannibucau
>>>>>>>>Blog: http://rmannibucau.wordpress.com/
>>>>>>>>LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>>>>>>>Github: https://github.com/rmannibucau
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>2014-04-10 17:49 GMT+02:00 Mark Struberg <struberg@yahoo.de>:
>>>>>>>>> Hi Lars-Fredrik!
>>>>>>>>>
>>>>>>>>> This is one of the rare situations where @Asynchronous
is good
>>>>>>>>>
>>>>>>>>> @Stateless
>>>>>>>>> @TransactionManagement(TransactionManagementType.BEAN)
>>>>>>>>> public class ThreadExecutorEjb {
>>>>>>>>>
>>>>>>>>>     @Asynchronous
>>>>>>>>>     public void executeTask(Runnable work, Object
config) {
>>>>>>>>>         work.run();
>>>>>>>>>     }
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> The problem with this approach is that WAS is _really_
picky (and far from
>>>>>>>>> the spec imo) when it comes to transactions.
>>>>>>>>> You might play a bit with the TransactionManagement and
other stuff
>>>>>>>>> probably.
>>>>>>>>>
>>>>>>>>> LieGrue,
>>>>>>>>> strub
>>>>>>>>> On Thursday, 10 April 2014, 16:21, Romain Manni-Bucau
>>>>>>>>> <rmannibucau@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>> Hmm deltaspike is a lib you can put in your app but if
you really want
>>>>>>>>> to get rid of it you can copy
>>>>>>>>> https://git-wip-us.apache.org/repos/asf?p=deltaspike.git;a=blob;f=deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContextControl.java;h=9e8ba98d46abc3843e8e5b872c882989a98fe16a;hb=HEAD
>>>>>>>>> Romain Manni-Bucau
>>>>>>>>> Twitter: @rmannibucau
>>>>>>>>> Blog: http://rmannibucau.wordpress.com/
>>>>>>>>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>>>>>>>> Github: https://github.com/rmannibucau
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2014-04-10 15:52 GMT+02:00 Lars-Fredrik Smedberg <itsmeden@gmail.com>:
>>>>>>>>>> Hi
>>>>>>>>>>
>>>>>>>>>> Thanks for the hint, however I'm not able to use
Deltaspike but only the
>>>>>>>>>> OpenWebbeans included with WebSphere 8.5.5.x...
>>>>>>>>>>
>>>>>>>>>> How can I do this with OpenWebbeans only?
>>>>>>>>>>
>>>>>>>>>> Regards
>>>>>>>>>> Lars-Fredrik
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Apr 10, 2014 at 3:47 PM, Romain Manni-Bucau
>>>>>>>>>> <rmannibucau@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> with CdiCtrl of deltaspike you can start/stop
contexts. Decorate your
>>>>>>>>>>> executorService to do it and it should be fine:
>>>>>>>>>>> http://openwebbeans.apache.org/testing_cdictrl.html
>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>> Twitter: @rmannibucau
>>>>>>>>>>> Blog: http://rmannibucau.wordpress.com/
>>>>>>>>>>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>>>>>>>>>> Github: https://github.com/rmannibucau
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 2014-04-10 15:37 GMT+02:00 Lars-Fredrik Smedberg
<itsmeden@gmail.com>:
>>>>>>>>>>> > Hi
>>>>>>>>>>> >
>>>>>>>>>>> > If I within a thread wishes to start asynchronous
"jobs" using the
>>>>>>>>>>> > ExecutorService (and Executors.newFixedThreadPool(...))
and wait for
>>>>>>>>>>> > the
>>>>>>>>>>> > Future-result within that same thread I
run into the following
>>>>>>>>>>> > exception:
>>>>>>>>>>> >
>>>>>>>>>>> > "WebBeans context with scope type annotation
@RequestScoped does not
>>>>>>>>>>> > exist
>>>>>>>>>>> > within current thread"
>>>>>>>>>>> >
>>>>>>>>>>> > which is understandable since the managed
bean passed used in the
>>>>>>>>>>> > Callable
>>>>>>>>>>> > passed to ExecutorService.submit(...) contains
injected beans iteself
>>>>>>>>>>> > that
>>>>>>>>>>> > are @RequestScoped.
>>>>>>>>>>> >
>>>>>>>>>>> > Is there any way around this? Suggestions
on changing the design
>>>>>>>>>>> > perhaps?
>>>>>>>>>>> >
>>>>>>>>>>> > Regards
>>>>>>>>>>> > Lars-Fredrik Smedberg
>>>>>>>>>>> >
>>>>>>>>>>> >
>>>>>>>>>>> > --
>>>>>>>>>>> > Med vänlig hälsning / Best regards
>>>>>>>>>>> >
>>>>>>>>>>> > Lars-Fredrik Smedberg
>>>>>>>>>>> >
>>>>>>>>>>> > STATEMENT OF CONFIDENTIALITY:
>>>>>>>>>>> > The information contained in this electronic
message and any
>>>>>>>>>>> > attachments to this message are intended
for the exclusive use of the
>>>>>>>>>>> > address(es) and may contain confidential
or privileged information. If
>>>>>>>>>>> > you are not the intended recipient, please
notify Lars-Fredrik Smedberg
>>>>>>>>>>> > immediately at itsmeden@gmail.com, and destroy
all copies of this
>>>>>>>>>>> > message and any attachments.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Med vänlig hälsning / Best regards
>>>>>>>>>>
>>>>>>>>>> Lars-Fredrik Smedberg
>>>>>>>>>>
>>>>>>>>>> STATEMENT OF CONFIDENTIALITY:
>>>>>>>>>> The information contained in this electronic message
and any
>>>>>>>>>> attachments to this message are intended for the
exclusive use of the
>>>>>>>>>> address(es) and may contain confidential or privileged
information. If
>>>>>>>>>> you are not the intended recipient, please notify
Lars-Fredrik Smedberg
>>>>>>>>>> immediately at itsmeden@gmail.com, and destroy all
copies of this
>>>>>>>>>> message and any attachments.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>
>
>
>-- 
>Med vänlig hälsning / Best regards
>
>Lars-Fredrik Smedberg
>
>STATEMENT OF CONFIDENTIALITY:
>The information contained in this electronic message and any
>attachments to this message are intended for the exclusive use of the
>address(es) and may contain confidential or privileged information. If
>you are not the intended recipient, please notify Lars-Fredrik Smedberg
>immediately at itsmeden@gmail.com, and destroy all copies of this 
>message and any attachments. 
>
>
Mime
View raw message