<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Aug 26, 2015 at 6:53 AM Nigel Deakin &lt;<a href="mailto:nigel.deakin@oracle.com">nigel.deakin@oracle.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 26/08/2015 10:51, arjan tijms wrote:<br>
&gt; On Wed, Aug 26, 2015 at 11:09 AM, Romain Manni-Bucau<br>
&gt; &lt;<a href="mailto:rmannibucau@gmail.com" target="_blank" onclick="window.open(&#39;https://mail.google.com/mail/?view=cm&amp;tf=1&amp;to=rmannibucau@gmail.com&amp;cc=&amp;bcc=&amp;su=&amp;body=&#39;,&#39;_blank&#39;);return false;">rmannibucau@gmail.com</a>&gt; wrote:<br>
&gt;&gt; Agree for provided scope but JMS + short time scopes will not match well in<br>
&gt;&gt; practise so i would worry more about not &quot;default&quot; scopes which can miss<br>
&gt;&gt; these events.<br>
&gt;<br>
&gt; Short lived scopes like @RequestScoped may not be the best match indeed.<br>
&gt;<br>
&gt; Additionally, @RequestScoped is kinda assumed to be an &quot;@ThreadScoped&quot;<br>
&gt; thing, e.g. there&#39;s the expectation that only the current thread will<br>
&gt; access it. If the JMS provider will asynchronously call a method on<br>
&gt; the bean instance from another thread, then this breaks this<br>
&gt; assumption.<br>
<br>
That&#39;s an interesting point. Is there anything in the CDI spec which would forbid the use of a @RequestScoped JMS<br>
listener bean from another thread?<br></blockquote><div><br></div><div>The CDI spec still mandates that a request scope is started for delivery to MDBs.  See <a href="http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#request_context">http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#request_context</a></div><div><br></div><div>The JMS provider would be responsible for retrieving a contextual reference to the bean and then invoking the method.  The container should still be responsible for starting the request context (If I read this correctly).</div><div><br></div><div>Likewise, we could say that a @TransactionScoped bean also applies here, since a JTA transaction should have been started by the RA.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Perhaps all that is needed is to make it clear to users that this is what would happen. The same issue would arise if<br>
the user injected a dependent-scoped JMS listener bean into a @RequestScoped bean.<br>
<br>
It&#39;s worth considering threading more generally. Although the JMS provider (resource adapter, actually) can make sure<br>
that the callback method won&#39;t be called from multiple JMS provider threads at the same time, it can&#39;t guarantee that an<br>
application thread won&#39;t be calling a business method on the bean at the same time. (Would it want to?)<br>
<br>
Nigel<br>
_______________________________________________<br>
cdi-dev mailing list<br>
<a href="mailto:cdi-dev@lists.jboss.org" target="_blank" onclick="window.open(&#39;https://mail.google.com/mail/?view=cm&amp;tf=1&amp;to=cdi-dev@lists.jboss.org&amp;cc=&amp;bcc=&amp;su=&amp;body=&#39;,&#39;_blank&#39;);return false;">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>
</blockquote></div></div>