Skip to main content

[ejb-spec issues] [JIRA] Updated: (EJB_SPEC-100) Provide @Idempotent functionallity to the EJB Container

  • From: "marina vatkina (JIRA)" <jira-no-reply@...>
  • To: issues@...
  • Subject: [ejb-spec issues] [JIRA] Updated: (EJB_SPEC-100) Provide @Idempotent functionallity to the EJB Container
  • Date: Mon, 18 Mar 2013 17:12:53 +0000 (GMT+00:00)
  • Auto-submitted: auto-generated


     [ 
http://java.net/jira/browse/EJB_SPEC-100?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

marina vatkina updated EJB_SPEC-100:
------------------------------------

    Fix Version/s: Future version

> Provide @Idempotent functionallity to the EJB Container
> -------------------------------------------------------
>
>                 Key: EJB_SPEC-100
>                 URL: http://java.net/jira/browse/EJB_SPEC-100
>             Project: ejb-spec
>          Issue Type: Improvement
>    Affects Versions: Future version
>            Reporter: rherschke
>             Fix For: Future version
>
>
> My proposal is to add functionality in the EJB-Container to support 
> @Idempotent for Stateless EJB methods.
> A method is idempotent, when a call to this method does not have any 
> side-effects. This means, that multiple calls to such a method always give 
> the same result.
> So a container could provide this functionality for methods of a Stateless 
> Session Bean, marked with @Idempotent to cache the result of the method for 
> further calls.
> An example:
> {code}
> @Stateless
> public class MyService {
>     @Idempotent
>     public Long add(Long a1, Long a2) {
>         return a1 + a2;
>     }
> }
> {code}
> With this, a container is told to handle each call with the same arguments 
> idempotent and return exactly the same value. So a call:
> {code}
> @Stateless
> public class AnotherService {
>     @EJB
>     MyService myService;
>     public void someMethod() {
>         // assuming, this is the first call ever to this service's method...
>         // the container calls the method directly and caches the result.
>         System.out.println(myService.add(1024, 42));
>         // the container will return always the same value, read from a 
> cache, without explicitly call the method.
>         for(int i = 0; i<10; i++) {
>             System.out.println(myService.add(1024, 42));
>         }
>     }
> }
> {code}
> A container is responsible for caching the result of the method as well as 
> how long or under which circumstances the result is cached (e.g. 
> WeakReference). 
> Another responsibility for the container is the error handling and 
> transaction rollback for idempotent methods, especially in cluster 
> environments. (see the similar functionality with 
> weblogic.javaee.Idempotent, but my proposal goes a bit further).
> This would be a performance gain, but also a potential risk for developers, 
> that do not know, what they exactly do. 
> I think, there is a general need for this functionality, even in 
> REST-Resources or in Cluster-Environment to simplify things and to 
> standardize the behavior of containers in this way.
> Comments are requested :-)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://java.net/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


[ejb-spec issues] [JIRA] Created: (EJB_SPEC-100) Provide @Idempotent functionallity to the EJB Container

rherschke (JIRA) 03/18/2013

[ejb-spec issues] [JIRA] Updated: (EJB_SPEC-100) Provide @Idempotent functionallity to the EJB Container

marina vatkina (JIRA) 03/18/2013

[ejb-spec issues] [JIRA] Commented: (EJB_SPEC-100) Provide @Idempotent functionallity to the EJB Container

arjan tijms (JIRA) 03/19/2013

[ejb-spec issues] [JIRA] Commented: (EJB_SPEC-100) Provide @Idempotent functionallity to the EJB Container

rherschke (JIRA) 03/19/2013
 
 
Close
loading
Please Confirm
Close