On Jun 28, 2008, at 2:10 PM, David Blevins wrote:

When we add that functionality we'll want to make an option on the container to control how long a calling thread should wait till timeout occurs and a ConcurrentAccessTimeoutException is thrown. Any thoughts on what the default timeout should be? Couple seconds, couple minutes, infinite?

Went with 30 seconds. Added some functionality so that people can specify this as "30s" "30 seconds" "1000ms" "1000 milliseconds". Even supports singular "1 second".

The spec group hasn't determined what the related xml is for declaring bean vs container concurrency management, so we'll have to make something up. Same goes for how to specify the "concurrency attribute" of a bean's methods. Any ideas on what the xml should look like?

Ended up modeling it completely after the transaction related annotations. So that gives us:

 <concurrency-type>Bean</concurrency-type>
 <concurrency-type>Container</concurrency-type>

 <assembly-descriptor>
   <container-concurrency>
     <method>
       <ejb-name>SomeEJB</ejb-name>
       <method-name>*</method-name>
     </method>
     <concurrency-attribute>ReadOnly</concurrency-attribute>
   </container-concurrency>
 </assembly-descriptor>

One thing to note is that the annotations we now support:

  @ConcurrencyManagement(BEAN)
  @ConcurrencyManagement(CONTAINER)
  @Lock(READ)
  @Lock(WRITE)

...are different than the ones in the draft spec:

  @BeanManagedConcurrency
  @ContainerManagedConcurrency
  @ReadOnly
  @ReadWrite

I don't particularly care for these and am trying to get them changed. 1) They don't match any of the existing javax.ejb. annotations like @TransactionManagement or @TransactionAttribute. 2) Nothing stops you from mistakenly using both @ReadOnly and @ReadWrite on the same class or method. 3) Requires the user to learn via docs and remember that @ReadOnly and @ReadWrite apply to the same "logical group" and are mutually exclusive and that the default is @ReadWrite -- all of this can be communicated with the @Option(Enum) style annotation.

Side benefit is that it's way easier to process as we only have to look for two annotations (@ConcurrencyManagement and @Lock) vs four (@BeanManagedConcurrency/@ContainerManagedConcurrency and @ReadOnly/ @ReadWrite).


-David

Reply via email to