<p dir="ltr"><br>
Le 20 mars 2016 21:28, &quot;Mark Struberg&quot; &lt;<a href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt; a écrit :<br>
&gt;<br>
&gt; I&#39;d say we could move a request context from EXCLUSIVE threadA  to EXCLUSIVE threadA.<br>
&gt;<br>
&gt; But we cannot make the same request scoped Bean accessible from multiple Threads at the same time.<br>
&gt;<br></p>
<p dir="ltr">+1 for it</p>
<p dir="ltr">&gt; Lgm<br>
&gt;<br>
&gt;<br>
&gt; --------------------------------------------<br>
&gt; On Sun, 20/3/16, Manfred Riem &lt;<a href="mailto:mnriem@gmail.com">mnriem@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;  Subject: Re: [cdi-dev] @ThreadScoped?<br>
&gt;  To: &quot;Stephan Knitelius&quot; &lt;<a href="mailto:stephan@knitelius.com">stephan@knitelius.com</a>&gt;<br>
&gt;  Cc: &quot;Mark Struberg&quot; &lt;<a href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt;, &quot;Reza Rahman&quot; &lt;<a href="mailto:reza_rahman@lycos.com">reza_rahman@lycos.com</a>&gt;, &quot;cdi-dev&quot; &lt;<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a>&gt;<br>
&gt;  Date: Sunday, 20 March, 2016, 18:36<br>
&gt;<br>
&gt;  Why is changing<br>
&gt;  @RequestScoped out of the question?<br>
&gt;<br>
&gt;  From my perspective when an AsyncContext is<br>
&gt;  started the request is still there.<br>
&gt;<br>
&gt;  It is just being served by a different<br>
&gt;  thread.<br>
&gt;<br>
&gt;  Certainly there is<br>
&gt;  a need to work with the Servlet EG to figure out how to<br>
&gt;  transfer “ownership” to the AsyncContext.<br>
&gt;<br>
&gt;  Anyway my 2 cents<br>
&gt;<br>
&gt;  Thanks!<br>
&gt;<br>
&gt;  Kind regards,<br>
&gt;  Manfred Riem<br>
&gt;<br>
&gt;  &gt; On Mar 19, 2016, at 3:35<br>
&gt;  PM, Stephan Knitelius &lt;<a href="mailto:stephan@knitelius.com">stephan@knitelius.com</a>&gt;<br>
&gt;  wrote:<br>
&gt;  &gt;<br>
&gt;  &gt; I would<br>
&gt;  certainly agree with the assertion that in general it&#39;s<br>
&gt;  not advisable to execute a request with multiple threads and<br>
&gt;  that usually single threaded execution is sufficient.<br>
&gt;  &gt;<br>
&gt;  &gt; However I don&#39;t<br>
&gt;  think ignoring it is an option. Concurrent operations can be<br>
&gt;  launched even from CDI beans. Yet we don&#39;t properly<br>
&gt;  support context propagation nor a context spanning all<br>
&gt;  threads launched from a request.<br>
&gt;  &gt;<br>
&gt;  &gt; I know that changing @requestScoped is<br>
&gt;  probably out of the question, but at least we should<br>
&gt;  consider adding a new context spanning all threads and<br>
&gt;  defining a logical solution for context propagation that can<br>
&gt;  be explained to the end user.<br>
&gt;  &gt;<br>
&gt;  &gt;<br>
&gt;  &gt;<br>
&gt;  &gt; On Fr., 11. März 2016 at 17:17, Mark<br>
&gt;  Struberg &lt;<a href="mailto:struberg@yahoo.de">struberg@yahoo.de</a><br>
&gt;  &lt;mailto:<a href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt;&gt;<br>
&gt;  wrote:<br>
&gt;  &gt; Yes, but certain things in EE<br>
&gt;  are assumed to be handled on a single thread. And if you run<br>
&gt;  on a servr then this is really not a blocker most times. If<br>
&gt;  I get many paralllel requests hitting my box then I do not<br>
&gt;  need async handling _that_ often. The whole overhead for<br>
&gt;  setting up the new thread, etc often heavily exceeds the<br>
&gt;  benefits.<br>
&gt;  &gt; So I would not put too much<br>
&gt;  energy into it…<br>
&gt;  &gt;<br>
&gt;  &gt;<br>
&gt;  LieGrue,<br>
&gt;  &gt; strub<br>
&gt;  &gt;<br>
&gt;  &gt; &gt; Am 11.03.2016 um 15:44 schrieb Reza<br>
&gt;  Rahman &lt;<a href="mailto:reza_rahman@lycos.com">reza_rahman@lycos.com</a><br>
&gt;  &lt;mailto:<a href="mailto:reza_rahman@lycos.com">reza_rahman@lycos.com</a>&gt;&gt;:<br>
&gt;  &gt; &gt;<br>
&gt;  &gt; &gt; This is<br>
&gt;  essentially in keeping with the minimalist nature of the EE<br>
&gt;  concurrency JSR. I believe most of it is left to vendors to<br>
&gt;  do the right thing for users. May be a good idea is this<br>
&gt;  language can be tightened up.<br>
&gt;  &gt; &gt;<br>
&gt;  &gt; &gt;&gt; On Mar 11, 2016, at 6:01 AM, Mark<br>
&gt;  Struberg &lt;<a href="mailto:struberg@yahoo.de">struberg@yahoo.de</a><br>
&gt;  &lt;mailto:<a href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt;&gt;<br>
&gt;  wrote:<br>
&gt;  &gt; &gt;&gt; E<br>
&gt;  &gt;<br>
&gt;  &gt;&gt; From the servlet spec:<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;<br>
&gt;  &gt; &gt;&gt; „Java Enterprise<br>
&gt;  Edition features such as Section 15.2.2, “Web Application<br>
&gt;  Environment” on page 15-174 and Section 15.3.1,<br>
&gt;  “Propagation of Security Identity in EJBTM Calls” on<br>
&gt;  page 15-176 are available only to threads executing the<br>
&gt;  initial request or when the request is dispatched to the<br>
&gt;  container via the AsyncContext.dispatch method. Java<br>
&gt;  Enterprise Edition features may be available to other<br>
&gt;  threads operating directly on the response object via the<br>
&gt;  AsyncContext.start(Runnable) method.“<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;<br>
&gt;  &gt; &gt;&gt; check „available<br>
&gt;  only to threads executing the initial request“<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  Also if you look at the servlet AsyncContext then all the<br>
&gt;  wording is written as MAY and not as MUST.<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  LieGrue,<br>
&gt;  &gt; &gt;&gt; strub<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt; Am 10.03.2016 um 19:52<br>
&gt;  schrieb Romain Manni-Bucau &lt;<a href="mailto:rmannibucau@gmail.com">rmannibucau@gmail.com</a><br>
&gt;  &lt;mailto:<a href="mailto:rmannibucau@gmail.com">rmannibucau@gmail.com</a>&gt;&gt;:<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt; Hi Mark,<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt; think 2.3.3.4 states the<br>
&gt;  opposite.<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt; Romain Manni-Bucau<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt; @rmannibucau |  Blog | Github | LinkedIn |<br>
&gt;  Tomitriber<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt; 2016-03-10 19:43 GMT+01:00<br>
&gt;  Mark Struberg &lt;<a href="mailto:struberg@yahoo.de">struberg@yahoo.de</a><br>
&gt;  &lt;mailto:<a href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt;&gt;:<br>
&gt;  &gt; &gt;&gt;&gt; Back from JavaLand<br>
&gt;  conference, so sorry for not kicking in earlier.<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt; I not quite get the argumentation chain. It’s<br>
&gt;  that all triggered by async servlet requests? And isn’t<br>
&gt;  the servlet spec also saying that all the request param etc<br>
&gt;  may max be assigned to a single thread AT A TIME!<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt; Means that it might not be on multiple threads<br>
&gt;  in parallel, but the data is allowed to get moved from one<br>
&gt;  thread to another (disapearing from the first one),<br>
&gt;  right?<br>
&gt;  &gt; &gt;&gt;&gt; Would really need<br>
&gt;  to dig into the wording of the async servlets spec again,<br>
&gt;  maybe has this in the back of his head?<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt; LieGrue,<br>
&gt;  &gt; &gt;&gt;&gt; strub<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; Am<br>
&gt;  08.03.2016 um 14:43 schrieb Romain Manni-Bucau &lt;<a href="mailto:rmannibucau@gmail.com">rmannibucau@gmail.com</a><br>
&gt;  &lt;mailto:<a href="mailto:rmannibucau@gmail.com">rmannibucau@gmail.com</a>&gt;&gt;:<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt; Hi guys,<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  following request scope thread and to center the discussion<br>
&gt;  on the thread safety part: do we work on this?<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt; Background: @RequestScoped is often used as<br>
&gt;  a ThreadLocal instance solution. A lot of SE or Batch<br>
&gt;  implementations rely on it from what I saw as well as async<br>
&gt;  implementations reusing existing business logic with this<br>
&gt;  thread safety constraint.<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  Proposal: providing a @ThreadScoped implementation is cheap<br>
&gt;  for CDI and implemenation and would avoid the headache we<br>
&gt;  can have with @RequestScoped. Will also remove the quite<br>
&gt;  dark side of the spec regarding servlet request and request<br>
&gt;  scope since now we would have a more natural solution for<br>
&gt;  all of these situation so @RequestScoped goals wouldn&#39;t<br>
&gt;  collide as much.<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; Questions:<br>
&gt;  &gt; &gt;&gt;&gt;&gt; - is it automatically<br>
&gt;  started as request scoped is (JMS, @Async, ...)? Alternative<br>
&gt;  could be some configuration in beans.xml (merged accross the<br>
&gt;  app):<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; &lt;beans&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; &lt;scopes&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt;   &lt;thread&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; <br>
&gt;     &lt;active&gt;JMS&lt;/active&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; <br>
&gt;     &lt;active&gt;ASYNCHONOUS&lt;/active&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt;   &lt;/thread&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; &lt;/scopes&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; &lt;/beans&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt; - start/stop API (this is typically an API<br>
&gt;  the user should be able to control for its own threads)<br>
&gt;  &gt; &gt;&gt;&gt;&gt; - CDI 2.*0*?<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt; wdyt?<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  Romain Manni-Bucau<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  @rmannibucau |  Blog | Github | LinkedIn | Tomitriber<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  _______________________________________________<br>
&gt;  &gt; &gt;&gt;&gt;&gt; cdi-dev mailing list<br>
&gt;  &gt; &gt;&gt;&gt;&gt; <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
&gt;  &lt;mailto:<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a>&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt;  &lt;<a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a>&gt;<br>
&gt;  &gt; &gt;&gt;&gt;&gt;<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;&gt; Note that for all code provided on this<br>
&gt;  list, the provider licenses the code under the Apache<br>
&gt;  License, Version 2 (<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a><br>
&gt;  &lt;<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>&gt;).<br>
&gt;  For all other ideas provided on this list, the provider<br>
&gt;  waives all patent and other intellectual property rights<br>
&gt;  inherent in such information.<br>
&gt;  &gt;<br>
&gt;  &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;&gt;<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  _______________________________________________<br>
&gt;  &gt; &gt;&gt; cdi-dev mailing list<br>
&gt;  &gt; &gt;&gt; <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
&gt;  &lt;mailto:<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a>&gt;<br>
&gt;  &gt; &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt;  &lt;<a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a>&gt;<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  &gt; &gt;&gt;<br>
&gt;  Note that for all code provided on this list, the provider<br>
&gt;  licenses the code under the Apache License, Version 2 (<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a><br>
&gt;  &lt;<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>&gt;).<br>
&gt;  For all other ideas provided on this list, the provider<br>
&gt;  waives all patent and other intellectual property rights<br>
&gt;  inherent in such information.<br>
&gt;  &gt; &gt;<br>
&gt;  &gt; &gt;<br>
&gt;  _______________________________________________<br>
&gt;  &gt; &gt; cdi-dev mailing list<br>
&gt;  &gt; &gt; <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
&gt;  &lt;mailto:<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a>&gt;<br>
&gt;  &gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt;  &lt;<a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a>&gt;<br>
&gt;  &gt; &gt;<br>
&gt;  &gt; &gt; Note that<br>
&gt;  for all code provided on this list, the provider licenses<br>
&gt;  the code under the Apache License, Version 2 (<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a><br>
&gt;  &lt;<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>&gt;).<br>
&gt;  For all other ideas provided on this list, the provider<br>
&gt;  waives all patent and other intellectual property rights<br>
&gt;  inherent in such information.<br>
&gt;  &gt;<br>
&gt;  &gt;<br>
&gt;  &gt;<br>
&gt;  _______________________________________________<br>
&gt;  &gt; cdi-dev mailing list<br>
&gt;  &gt;<br>
&gt;  <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
&gt;  &lt;mailto:<a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a>&gt;<br>
&gt;  &gt;<br>
&gt;  <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt;  &lt;<a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a>&gt;<br>
&gt;  &gt;<br>
&gt;  &gt; Note that for all<br>
&gt;  code provided on this list, the provider licenses the code<br>
&gt;  under the Apache License, Version 2 (<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a><br>
&gt;  &lt;<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>&gt;).<br>
&gt;  For all other ideas provided on this list, the provider<br>
&gt;  waives all patent and other intellectual property rights<br>
&gt;  inherent in such information.<br>
&gt;  &gt;<br>
&gt;  _______________________________________________<br>
&gt;  &gt; cdi-dev mailing list<br>
&gt;  &gt;<br>
&gt;  <a href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br>
&gt;  &gt; <a href="https://lists.jboss.org/mailman/listinfo/cdi-dev">https://lists.jboss.org/mailman/listinfo/cdi-dev</a><br>
&gt;  &gt;<br>
&gt;  &gt; Note that for all<br>
&gt;  code provided on this list, the provider licenses the code<br>
&gt;  under the Apache License, Version 2 (<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>).<br>
&gt;  For all other ideas provided on this list, the provider<br>
&gt;  waives all patent and other intellectual property rights<br>
&gt;  inherent in such information.<br>
&gt;<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">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 (<a href="http://www.apache.org/licenses/LICENSE-2.0.html">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.</p>