title: Difference between ConcurrencyManagementType.BEAN and LockType.READ?
body: <p>Compare this Java EE enterprise javabean:</p>
  
  <pre><code>@Singleton
  @ConcurrencyManagement(ConcurrencyManagementType.BEAN)
  public class BMC {}
  </code></pre>
  
  <p>..with this bean:</p>
  
  <pre><code>@Singleton
  @ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
  @Lock(LockType.READ)
  public class CMC {}
  </code></pre>
  
  <p>Because container managed concurrency is the default, one can rewrite the second bean like so:</p>
  
  <pre><code>@Singleton
  @Lock(LockType.READ)
  public class CMC {}
  </code></pre>
  
  <p>Thus it makes me wonder of course. What is the difference? I can <strong>1)</strong> turn off container managed concurrency all together as I did in my <code>BMC</code> class, or I can <strong>2)</strong> use container managed concurrency but annotate the class with a read lock like I did on my <code>CMC</code> class. The <code>CMC</code> class has effectively had his container managed concurrency control turned off as long as I don't put in a write lock somewhere in the class declaration.</p>
  
  <p>Can one say there is a technical difference between the two constructs I demoed? Is there any arguments why one construct would be better or preferred over the other one?</p>