<div dir="ltr">Antoine/Nigel/all,<div><br></div><div>Sounds very interesting (especially being in both EGs) </div><div>Although the project situation ended up with a more synchronous requirement, I did something very similar as a prototype relaying an MDB&#39;s onMessage() to a CDI event;-)<br><div><div class="gmail_extra"><br></div><div class="gmail_extra">Would be great to get something like that standardized.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div><div class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><p style="margin:0px;font-size:13px;border-collapse:collapse"><span lang="EN-US" style="font-family:Calibri">Werner</span></p><p style="margin:0px;font-size:13px;border-collapse:collapse"><span style="font-size:small"><br></span></p><p style="margin:0px;font-size:13px;border-collapse:collapse"><span style="font-size:small">On Mon, Aug 24, 2015 at 9:48 PM,  </span><span dir="ltr" style="font-size:small">&lt;<a href="mailto:cdi-dev-request@lists.jboss.org" target="_blank">cdi-dev-request@lists.jboss.org</a>&gt;</span><span style="font-size:small"> wrote:</span></p></div></div></div></div></div></div></div></div></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send cdi-dev mailing list submissions to<br>
        <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
or, via email, send a message with subject or body &#39;help&#39; to<br>
        <a href="mailto:cdi-dev-request@lists.jboss.org">cdi-dev-request@lists.jboss.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:cdi-dev-owner@lists.jboss.org">cdi-dev-owner@lists.jboss.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than &quot;Re: Contents of cdi-dev digest...&quot;<br>
<br>
<br>
Today&#39;s Topics:<br>
<br>
   1. Re: JMS 2.1: Proposal to allow any CDI managed bean in a Java<br>
      EE application to listen for JMS messages (Antoine Sabot-Durand)<br>
   2. Re: JMS 2.1: Proposal to allow any CDI managed bean in a Java<br>
      EE application to listen for JMS messages (Antonio Goncalves)<br>
   3. Re: JMS 2.1: Proposal to allow any CDI managed bean in a Java<br>
      EE application to listen for JMS messages (Nigel Deakin)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Mon, 24 Aug 2015 17:24:27 +0000<br>
From: Antoine Sabot-Durand &lt;<a href="mailto:antoine@sabot-durand.net">antoine@sabot-durand.net</a>&gt;<br>
Subject: Re: [cdi-dev] JMS 2.1: Proposal to allow any CDI managed bean<br>
        in a Java EE application to listen for JMS messages<br>
To: Nigel Deakin &lt;<a href="mailto:nigel.deakin@oracle.com">nigel.deakin@oracle.com</a>&gt;, <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
Message-ID:<br>
        &lt;CABu-YBTqjtdMxbLO=<a href="mailto:TcFikN9XM-zgjfDP8Chhj5bqFSy6ueKOQ@mail.gmail.com">TcFikN9XM-zgjfDP8Chhj5bqFSy6ueKOQ@mail.gmail.com</a>&gt;<br>
Content-Type: text/plain; charset=&quot;utf-8&quot;<br>
<br>
Great Nigel,<br>
<br>
I&#39;ll have a look and try to give you feedback by the end of the week.<br>
<br>
Antoine<br>
Le lun. 24 ao?t 2015 ? 18:30, Nigel Deakin &lt;<a href="mailto:nigel.deakin@oracle.com">nigel.deakin@oracle.com</a>&gt; a<br>
?crit :<br>
<br>
&gt; Over in the JMS 2.1 expert group I&#39;ve just published some proposals to<br>
&gt; allow any CDI managed bean in a Java EE<br>
&gt; application to listen for JMS messages. This would be implemented as a<br>
&gt; standard CDI portable extension and would become<br>
&gt; a mandatory part of a full Java EE 8 application server.<br>
&gt;<br>
&gt; I would welcome any comments from the CDI spec experts here. If you&#39;re<br>
&gt; interested in helping, please take a look at<br>
&gt; <a href="https://java.net/projects/jms-spec/pages/CDIBeansAsJMSListeners" rel="noreferrer" target="_blank">https://java.net/projects/jms-spec/pages/CDIBeansAsJMSListeners</a><br>
&gt; and send comments or questions to me or to the public<br>
&gt; <a href="mailto:users@jms-spec.java.net">users@jms-spec.java.net</a> alias.<br>
&gt;<br>
&gt; Thanks,<br>
&gt;<br>
&gt; Nigel<br>
&gt; JMS 2.1 specification lead<br>
&gt; _______________________________________________<br>
&gt; cdi-dev mailing list<br>
&gt; <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt;<br>
&gt; Note that for all code provided on this list, the provider licenses the<br>
&gt; code under the Apache License, Version 2 (<br>
&gt; <a href="http://www.apache.org/licenses/LICENSE-2.0.html" rel="noreferrer" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>). For all other ideas<br>
&gt; provided on this list, the provider waives all patent and other<br>
&gt; intellectual property rights inherent in such information.<br>
&gt;<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.jboss.org/pipermail/cdi-dev/attachments/20150824/1da85d2e/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.jboss.org/pipermail/cdi-dev/attachments/20150824/1da85d2e/attachment-0001.html</a><br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Mon, 24 Aug 2015 19:42:41 +0200<br>
From: Antonio Goncalves &lt;<a href="mailto:antonio.goncalves@gmail.com">antonio.goncalves@gmail.com</a>&gt;<br>
Subject: Re: [cdi-dev] JMS 2.1: Proposal to allow any CDI managed bean<br>
        in a Java EE application to listen for JMS messages<br>
To: Nigel Deakin &lt;<a href="mailto:nigel.deakin@oracle.com">nigel.deakin@oracle.com</a>&gt;<br>
Cc: cdi-dev &lt;<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a>&gt;<br>
Message-ID:<br>
        &lt;CA+ZZq9_Brvtks=<a href="mailto:jxQ1TbtXMNm%2Bab3w3GZfG-2sGQYeMK2mu2jA@mail.gmail.com">jxQ1TbtXMNm+ab3w3GZfG-2sGQYeMK2mu2jA@mail.gmail.com</a>&gt;<br>
Content-Type: text/plain; charset=&quot;utf-8&quot;<br>
<br>
Nigel, what do you mean by :<br>
<br>
&quot;The application must obtain an instance of the JMS listener bean using<br>
dependency injection&quot;<br>
<br>
In your examples, it looks like a CDI bean cannot start listening if not<br>
injected :<br>
<br>
@WebServlet(&quot;/myjmsservlet1&quot;)<br>
 public class MyJMSServlet1 extends HttpServlet {<br>
<br>
   *@Inject MyDepScopeListenerBean* myDepScopeListenerBean;<br>
<br>
   public void service(ServletRequest req, ServletResponse res) throws<br>
IOException, ServletException {<br>
      ...<br>
   }<br>
 }<br>
<br>
<br>
Did I understand well ? Is this the case ? Just like a MDB, I would like a<br>
CDI bean to start listening to a message without being injected, as soon as<br>
the application starts. Something like :<br>
<br>
*@ApplicationScoped*<br>
public class MyListenerBean{<br>
<br>
<br>
 @JMSListener(lookup=&quot;java:global/java:global/Trades&quot;,type=JMSListener.Type.TOPIC<br>
)<br>
   public void deliver(Message message) {<br>
     ...<br>
   }<br>
}<br>
<br>
Or if we manage to get the @Startup annotation to Commons Annotation :<br>
<br>
*@Startup*<br>
public class MyListenerBean{<br>
<br>
<br>
 @JMSListener(lookup=&quot;java:global/java:global/Trades&quot;,type=JMSListener.Type.TOPIC<br>
)<br>
   public void deliver(Message message) {<br>
     ...<br>
   }<br>
}<br>
<br>
<br>
Just thinking here<br>
<br>
Antonio<br>
<br>
On Mon, Aug 24, 2015 at 6:30 PM, Nigel Deakin &lt;<a href="mailto:nigel.deakin@oracle.com">nigel.deakin@oracle.com</a>&gt;<br>
wrote:<br>
<br>
&gt; Over in the JMS 2.1 expert group I&#39;ve just published some proposals to<br>
&gt; allow any CDI managed bean in a Java EE<br>
&gt; application to listen for JMS messages. This would be implemented as a<br>
&gt; standard CDI portable extension and would become<br>
&gt; a mandatory part of a full Java EE 8 application server.<br>
&gt;<br>
&gt; I would welcome any comments from the CDI spec experts here. If you&#39;re<br>
&gt; interested in helping, please take a look at<br>
&gt; <a href="https://java.net/projects/jms-spec/pages/CDIBeansAsJMSListeners" rel="noreferrer" target="_blank">https://java.net/projects/jms-spec/pages/CDIBeansAsJMSListeners</a><br>
&gt; and send comments or questions to me or to the public<br>
&gt; <a href="mailto:users@jms-spec.java.net">users@jms-spec.java.net</a> alias.<br>
&gt;<br>
&gt; Thanks,<br>
&gt;<br>
&gt; Nigel<br>
&gt; JMS 2.1 specification lead<br>
&gt; _______________________________________________<br>
&gt; cdi-dev mailing list<br>
&gt; <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt;<br>
&gt; Note that for all code provided on this list, the provider licenses the<br>
&gt; code under the Apache License, Version 2 (<br>
&gt; <a href="http://www.apache.org/licenses/LICENSE-2.0.html" rel="noreferrer" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>). For all other ideas<br>
&gt; provided on this list, the provider waives all patent and other<br>
&gt; intellectual property rights inherent in such information.<br>
&gt;<br>
<br>
<br>
<br>
--<br>
Antonio Goncalves<br>
Software architect, Java Champion and Pluralsight author<br>
<br>
Web site &lt;<a href="http://www.antoniogoncalves.org" rel="noreferrer" target="_blank">http://www.antoniogoncalves.org</a>&gt; | Twitter<br>
&lt;<a href="http://twitter.com/agoncal" rel="noreferrer" target="_blank">http://twitter.com/agoncal</a>&gt; | LinkedIn &lt;<a href="http://www.linkedin.com/in/agoncal" rel="noreferrer" target="_blank">http://www.linkedin.com/in/agoncal</a>&gt; |<br>
Pluralsight<br>
&lt;<a href="http://pluralsight.com/training/Authors/Details/antonio-goncalves" rel="noreferrer" target="_blank">http://pluralsight.com/training/Authors/Details/antonio-goncalves</a>&gt; | Paris<br>
JUG &lt;<a href="http://www.parisjug.org" rel="noreferrer" target="_blank">http://www.parisjug.org</a>&gt; | Devoxx France &lt;<a href="http://www.devoxx.fr" rel="noreferrer" target="_blank">http://www.devoxx.fr</a>&gt;<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.jboss.org/pipermail/cdi-dev/attachments/20150824/55f410a4/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.jboss.org/pipermail/cdi-dev/attachments/20150824/55f410a4/attachment-0001.html</a><br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Mon, 24 Aug 2015 20:47:51 +0100<br>
From: Nigel Deakin &lt;<a href="mailto:nigel.deakin@oracle.com">nigel.deakin@oracle.com</a>&gt;<br>
Subject: Re: [cdi-dev] JMS 2.1: Proposal to allow any CDI managed bean<br>
        in a Java EE application to listen for JMS messages<br>
To: Antonio Goncalves &lt;<a href="mailto:antonio.goncalves@gmail.com">antonio.goncalves@gmail.com</a>&gt;<br>
Cc: cdi-dev &lt;<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a>&gt;<br>
Message-ID: &lt;<a href="mailto:55DB74E7.4080609@oracle.com">55DB74E7.4080609@oracle.com</a>&gt;<br>
Content-Type: text/plain; charset=&quot;utf-8&quot;<br>
<br>
On 24/08/2015 18:42, Antonio Goncalves wrote:<br>
&gt; Nigel, what do you mean by :<br>
&gt;<br>
&gt; &quot;The application must obtain an instance of the JMS listener bean using dependency injection&quot;<br>
&gt;<br>
&gt; In your examples, it looks like a CDI bean cannot start listening if not injected :<br>
&gt;<br>
&gt; @WebServlet(&quot;/myjmsservlet1&quot;)<br>
&gt;  public class MyJMSServlet1 extends HttpServlet {<br>
&gt; *@Inject MyDepScopeListenerBean* myDepScopeListenerBean;<br>
&gt;    public void service(ServletRequest req, ServletResponse res) throws IOException, ServletException {<br>
&gt;       ...<br>
&gt;    }<br>
&gt;  }<br>
&gt;<br>
&gt;<br>
&gt; Did I understand well ? Is this the case ? Just like a MDB, I would like a CDI bean to start listening to a message<br>
&gt; without being injected, as soon as the application starts.<br>
<br>
My starting point is that these are normal CDI beans which are created just like any other CDI bean. The bean&#39;s<br>
postCreate behaviour (inserted by the extension) would connect to the JMS provider and start listening for messages. The<br>
bean&#39;s preDestroy behaviour would stop listening for messages and disconnect from the JMS provider.<br>
<br>
As I understand it, if you want to create a CDI managed bean (so that it is managed by CDI) then you have to inject it<br>
into some code somewhere.<br>
<br>
Additionally, if the bean is normal scoped, you have to trigger lazy instantiation by calling a method on the injected<br>
bean proxy (e.g. toString()).<br>
<br>
&gt; Something like :<br>
&gt;<br>
&gt; *@ApplicationScoped*<br>
&gt; public class MyListenerBean{<br>
&gt;  @JMSListener(lookup=&quot;java:global/java:global/Trades&quot;,type=JMSListener.Type.TOPIC )<br>
&gt;    public void deliver(Message message) {<br>
&gt;      ...<br>
&gt;    }<br>
&gt; }<br>
&gt;<br>
<br>
If I understand things correctly, if this is a normal CDI bean then this alone is not sufficient to cause an instance of<br>
the bean to be created.<br>
<br>
You also need to<br>
(1) inject it into some other bean<br>
(2) create that other bean and<br>
(3) call a method on the MyListenerBean to trigger lazy initialisation.<br>
<br>
I&#39;m trying to avoid getting ahead of myself here. My current proposals simply apply to normal CDI managed beans created<br>
in the normal way (via injection and lazy initialisation). But I could certainly see a benefit in extending this to<br>
allow JMS listener beans to be created in other ways. In particular:<br>
<br>
(a) Creating the bean instance as soon as the bean into which it is injected enters a new scope rather than waiting for<br>
the application to call a method on it (so-called eager initialisation). That sounds relatively straightforward to me;<br>
this could either be a new standard CDI feature available to all normal-scoped beans, or something specific to beans<br>
annotated with @JMSListener.<br>
<br>
(b) Creating the bean instance without the need to inject it anywhere.  As you suggest, in the case of ApplicationScoped<br>
beans this would make JMS listener beans more like MDBs. But it might be equally useful to support this for other normal<br>
scopes. For example, could we annotate a @RequestScoped bean so that every time a new request scope started, an instance<br>
of the bean for that scope was automatically created?<br>
<br>
&gt; Or if we manage to get the @Startup annotation to Commons Annotation :<br>
&gt;<br>
&gt; *@Startup*<br>
&gt; public class MyListenerBean{<br>
&gt;  @JMSListener(lookup=&quot;java:global/java:global/Trades&quot;,type=JMSListener.Type.TOPIC )<br>
&gt;    public void deliver(Message message) {<br>
&gt;      ...<br>
&gt;    }<br>
&gt; }<br>
&gt;<br>
<br>
That looks as if it&#39;s tied to ApplicationScoped. I&#39;d rather look for something more general.<br>
<br>
Thanks for your comments so far. You&#39;re raising issues I have been thinking about for some time.<br>
<br>
Nigel<br>
<br>
<br>
<br>
&gt;<br>
&gt; Just thinking here<br>
&gt;<br>
&gt; Antonio<br>
&gt;<br>
&gt; On Mon, Aug 24, 2015 at 6:30 PM, Nigel Deakin &lt;<a href="mailto:nigel.deakin@oracle.com">nigel.deakin@oracle.com</a> &lt;mailto:<a href="mailto:nigel.deakin@oracle.com">nigel.deakin@oracle.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     Over in the JMS 2.1 expert group I&#39;ve just published some proposals to allow any CDI managed bean in a Java EE<br>
&gt;     application to listen for JMS messages. This would be implemented as a standard CDI portable extension and would<br>
&gt;     become<br>
&gt;     a mandatory part of a full Java EE 8 application server.<br>
&gt;<br>
&gt;     I would welcome any comments from the CDI spec experts here. If you&#39;re interested in helping, please take a look at<br>
&gt;     <a href="https://java.net/projects/jms-spec/pages/CDIBeansAsJMSListeners" rel="noreferrer" target="_blank">https://java.net/projects/jms-spec/pages/CDIBeansAsJMSListeners</a><br>
&gt;     and send comments or questions to me or to the public <a href="mailto:users@jms-spec.java.net">users@jms-spec.java.net</a> &lt;mailto:<a href="mailto:users@jms-spec.java.net">users@jms-spec.java.net</a>&gt; alias.<br>
&gt;<br>
&gt;     Thanks,<br>
&gt;<br>
&gt;     Nigel<br>
&gt;     JMS 2.1 specification lead<br>
&gt;     _______________________________________________<br>
&gt;     cdi-dev mailing list<br>
&gt;     <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a> &lt;mailto:<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a>&gt;<br>
&gt;     <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt;<br>
&gt;     Note that for all code provided on this list, the provider licenses the code under the Apache License, Version 2<br>
&gt;     (<a href="http://www.apache.org/licenses/LICENSE-2.0.html" rel="noreferrer" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>). For all other ideas provided on this list, the provider waives<br>
&gt;     all patent and other intellectual property rights inherent in such information.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Antonio Goncalves<br>
&gt; Software architect, Java Champion and Pluralsight author<br>
&gt;<br>
&gt; Web site &lt;<a href="http://www.antoniogoncalves.org" rel="noreferrer" target="_blank">http://www.antoniogoncalves.org</a>&gt; | Twitter &lt;<a href="http://twitter.com/agoncal" rel="noreferrer" target="_blank">http://twitter.com/agoncal</a>&gt; | LinkedIn<br>
&gt; &lt;<a href="http://www.linkedin.com/in/agoncal" rel="noreferrer" target="_blank">http://www.linkedin.com/in/agoncal</a>&gt; | Pluralsight<br>
&gt; &lt;<a href="http://pluralsight.com/training/Authors/Details/antonio-goncalves" rel="noreferrer" target="_blank">http://pluralsight.com/training/Authors/Details/antonio-goncalves</a>&gt; | Paris JUG &lt;<a href="http://www.parisjug.org" rel="noreferrer" target="_blank">http://www.parisjug.org</a>&gt; | Devoxx<br>
&gt; France &lt;<a href="http://www.devoxx.fr" rel="noreferrer" target="_blank">http://www.devoxx.fr</a>&gt;<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.jboss.org/pipermail/cdi-dev/attachments/20150824/86151522/attachment.html" rel="noreferrer" target="_blank">http://lists.jboss.org/pipermail/cdi-dev/attachments/20150824/86151522/attachment.html</a><br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
cdi-dev mailing list<br>
<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/cdi-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
<br>
Note that for all code provided on this list, the provider licenses the code under the Apache License, Version 2 (<a href="http://www.apache.org/licenses/LICENSE-2.0.html" rel="noreferrer" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>).  For all other ideas provided on this list, the provider waives all patent and other intellectual property rights inherent in such information.<br>
<br>
End of cdi-dev Digest, Vol 57, Issue 13<br>
***************************************<br>
</blockquote></div><br></div></div></div></div>