Bonjour,

Pour proposer à l'occasion l'alternative à JEE par Spring, il faut que j'examine si je peux répondre à toutes les situations d'emploi de services.

1) Stateless
L'habituel : le serveur d'application donne n'importe quelle instance de bean de service, en en créant des supplémentaires si les appelants sont nombreux.
(je mets @1, @2, etc pour symboliser des instances distinctes).

appelant 1 => Staleless@1
appelant 2 => Staleless@1 (exemple de situation : le serveur n'était pas chargé, et appelant 1 a fini son appel depuis longtemps).
appelant 3 => Staleless@2 (exemple de situation : appelant 2 n'a pas encore fini son appel que appelant 3 veut en faire un immédiatement).
appelant 4 => Staleless@1 (exemple de situation : appelant 2 a fini son appel et Statelss@1 est de nouveau disponible).
appelant 1, de nouveau => Staleless@2 (exemple de situation : appelant 4 utilise toujours Stateless@1, donc appelant 1 reçoit cette fois-ci Stateless@2 : la dernière fois, il avait reçu Stateless@1).
appelant 5 => Staleless@1.
etc.

Ça, je pense que c'est le comportement standard de Spring, dès que l'on annote une classe en @Service ?

2) Singleton
Une seule instance pour tout le monde. Partageant ses données avec tout le monde de fait.
appelant 1 => Singleton@1
appelant 2 => Singleton@1
appelant 3 => Singleton@1
appelant 4 => Singleton@1
appelant 1, de nouveau => Singleton@1
appelant 5 => Singleton@1

Je crois qu'il suffit de rajouter une annotation @Singleton quelque-part pour l'avoir ?

3) Stateful
Une instance distincte et réservée à chaque appelant jusqu'à temps qu'il décide de l'abandonner.
appelant 1 => Stateful@1
appelant 2 => Stateful@2
appelant 3 => Stateful@3
appelant 4 => Stateful@4
appelant 1, de nouveau => Stateful@1
appelant 5 => Stateful@5

Comment réalise t-on ceci ? (déclaration, instanciation puis suppression du service stateful lié à l'appelant ?).

4) Asynchronous
C'est une situation indépendante des trois autres, mais à l'occasion j'aimerais profiter de cette capacité qu'offre JEE si elle existe également sous Spring :
ces méthodes que l'on déclare avec des boites à futur :
@Asynchronous public Futur<MonResultat> obtenirResultat(int x, int y);


Pouvez-vous m'éclairer sur les points où il me manque des informations ou me dire si je me trompe en certains endroits ?

En vous remerciant,

Grunt.