[weld-dev] Should EventImpl.fireAsync use ExecutorServices from the ServiceRegistry

Benjamin Confino BENJAMIC at uk.ibm.com
Tue Jul 17 12:30:54 EDT 2018


Hello

I have a customer with the following 

        @Inject

        Event<Message> event;

        @Resource
        ManagedExecutorService threadPool;

        public void fireAsyncEvent() {

                System.out.println("Sending Async-Message via CDI");

                event.fireAsync(new Message("Hello"));

        }

        public void fireAsyncEvent_2() {
                event.fireAsync(new Message("Hello"), 
NotificationOptions.ofExecutor(threadPool));
        }

fireAsyncEvent() eventually results in an NPE when a JSF class attempts 
tries to call CDI.current() fireAsyncEvent_2() works correctly. I was 
hoping that it would be possible to fix fireAsyncEvent to remove the 
dependency on passing in an executor service every time it is used. 

We currently set an executor service into the weld service registry, and I 
was wondering if org.jboss.weld.event.EventImpl fetch the  executor 
service from the service registry. Either only when fireAsync is called 
without any NotificationOptions, or perhaps more aggressively and set the 
default executor service if NotificationOptions are provided but do not 
explicitly contain an executor service (The javadoc is unclear, but I 
believe calling ofExecutor() provides this functionality). 

Before going further with this I wanted to ask for a quick sanity check. 
Is this fix plausible? 

Regards
Benjamin
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/weld-dev/attachments/20180717/43bb161f/attachment.html 


More information about the weld-dev mailing list