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 Thu, 10 Apr 2014 21:01:01 GMT
The TransactionManagement etc is only needed if you use manually controlled TX inside of your
thread.

Regarding thread limiting. There is no default functionality for this in EJB afaik. But you
can easily have an AtomicInteger and semaphores to implement the locking yourself.

LieGrue,
strub


On Thursday, 10 April 2014, 22:29, Lars-Fredrik Smedberg <itsmeden@gmail.com> wrote:
 
Hi Mark
>
>
>In what scenarios would I need to configure the @TransactionManagement would you say?
I'm looking into running several SOAP calls in parallell, the work that makes the call and
receive the answer needs injected beans (which is why I ran into my problem in the first place).
>
>
>Using your example I would assume that I inject the EJB once and then make multiple calls
to executeTask to be able to execute multiple "work" Runnables concurenty?
>
>
>Do you have any suggestion on how to limit the total number of "work" Runnables that run
in parallell by all threads (similar to using an fixed size thread pool ExecutionService).
>
>
>Thanks for helping
>
>
>Regards
>Lars-Fredrik
>
>
>
>
>
>
>
>On Thu, Apr 10, 2014 at 5:49 PM, Mark Struberg <struberg@yahoo.de> wrote:
>
>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