J'ai une méthode asynchrone dans mon singleton EJB qui est appelée à partir d'une autre méthode dans la même classe. Je sais déjà que je ne peux pas appeler la méthode asynchrone directement, je dois obtenir un proxy EJB. Le problème est, je ne veux pas que la méthode asynchrone soit visible en dehors de la classe; mais quand je le rends privé, il n'est pas exécuté de manière asynchrone. (J'utilise Glassfish v3.)@ Méthode privée asynchrone dans EJB
The javadocs ne dites rien sur le niveau d'accès requis. Donc, cela devrait-il être considéré comme un bug dans Glassfish?
OK, mais pourquoi? Vous dites que l'objet proxy n'aura que des proxies pour les méthodes publiques. Cela est-il réellement requis par la spécification Java EE, ou s'agit-il simplement d'un détail d'implémentation de Glassfish? –
C'est seulement une implémentation Glassfish, mais regardez waht Javadoc dit " Utilisé pour marquer une méthode comme une méthode asynchrone ou pour désigner toutes les méthodes commerciales d'une classe ou d'une interface asynchrone." Les méthodes commerciales sont des méthodes qui peuvent être utilisées par d'autres. les méthodes privées ne sont pas disponibles. –
La spécification EE exige que seules les méthodes publiques puissent être utilisées. Il n'y aurait autrement aucun moyen pour un conteneur de créer un proxy pour une méthode privée, sauf si AOP/Weaving. Le fait que vous essayiez d'appeler une méthode privée signifie que vous n'appelez pas correctement les méthodes métier, vous appelez simplement des méthodes locales. –