IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

Récupérer des EJB via une Factory [EJB3]


Sujet :

Java EE

  1. #1
    Membre du Club
    Profil pro
    lead dev
    Inscrit en
    Février 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : lead dev

    Informations forums :
    Inscription : Février 2008
    Messages : 75
    Points : 65
    Points
    65
    Par défaut Récupérer des EJB via une Factory
    Bonjour,

    Je souhaite réaliser une Factory de services, en gros une Factory me retournant une classe d’implémentation dont le type diffère selon les cas.

    Dans le bout de code suivant j'ai commencé en mettant des "new" mais après réflexion ça doit surement poser des soucis de transaction atomicité ou je ne sais quoi car ces classes magiques contiennent des références à des EJB, du JPA etc... Bref ça me paraissait plus sûr de récupérer ces classes à partir de leur conteneur EJB mais j'ignore comment faire.

    Sur le net j'ai pu lire qu'il fallait utiliser leur nom JNDI mais avant de me lancer là-dedans, je voulais savoir si cette façon de faire était cohérente ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class MagicServiceFactory {
     
        public static IMagicService getInstance(boolean yesorno) {
            if (yesorno) {
                return new MagicFootService();
            } else{
                return new MagicHandService();
            }
        }
    }
    Un aperçu des mes classes magiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Stateless
    public class MagicHandService implements IMagicService {
    ....
    }
    Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    lead dev
    Inscrit en
    Février 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : lead dev

    Informations forums :
    Inscription : Février 2008
    Messages : 75
    Points : 65
    Points
    65
    Par défaut
    Comme dirait l'autre Barbu : Eureka j'ai trouvé !

    Automatiquement chaque service va comme un grand venir se register dans une Map de ma Factory :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	static {
    		MagicServiceFactory .registerNewService(Type.TOTO,
    				"TotoServiceJNDI");
    	}
     
    EDIT : Ne pas oublier la petite annotation sur le nom de la classe :
    @Stateless(name = "TotoServiceJNDI")
    Ma Factory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    	private static Map<Type, String> registeredServices = new HashMap<Type, String>();
     
    	public static void registerNewService(Type serviceType,
    			String mappedName) {
    		registeredServices .put(serviceType, mappedName);
    	}
     
    	public static IMagicService getInstance(Type serviceType)
    			throws NamingException {
    		// Instanciation du contexteEJB
    		InitialContext ctx = new InitialContext();
    		// Récupération de la bonne stratégie
    		String serviceName = registeredServices .get(serviceType);
    		if (StringUtils.isNotBlank(serviceName)) {
    			// Récupération de l'EJB désiré
    			return (IMagicService ) ctx.lookup("java:global/xxx/" + serviceName));
    		}
    	}
    Voila voila...

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/02/2014, 15h55
  2. [XL-2000] Récupérer des informations via une page web XML
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/04/2009, 15h46
  3. Réponses: 3
    Dernier message: 09/02/2007, 14h26
  4. Récupérer des données via le port usb
    Par matmuth dans le forum C++Builder
    Réponses: 12
    Dernier message: 11/05/2005, 16h34
  5. Réponses: 7
    Dernier message: 20/03/2005, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo