Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE
Serveurs, conteneurs, et Java EE Forum d'entraide sur la spécification Java EE, les serveurs d'application Java EE (GlassFish, JBoss, JOnAS, Weblogic, Websphere...) ou partiellement Java EE (Tomcat, Jetty, Spring DM...), ainsi que la spécification OSGi et ses implémentations (Equinox, Felix...). Avant de poster -> FAQ Java EE - Les cours OSGi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/07/2012, 23h17   #1
miltone
Membre habitué
 
Homme
Développeur informatique
Inscription : mai 2007
Messages : 512
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2007
Messages : 512
Points : 131
Points : 131
Par défaut Apprendre CDI, Beans, injection, Weld, IoC, DI

Salut à tous,

J'ai besoin de monté en compétence en Java EE pour un projet qui utilise CDI, injection de dépendances, Managed Bean, IoC, Weld, @qualifier etc....

Le problème est que lorsque j'essaie de me renseigner sur ces concepts je tourne en rond car :
- pour connaitre IoC il faut connaitre les injections de dépendances
- pour connaitre les injections de dépendances il faut connaitre les Managed Beans
- pour connaitre les managed Beans il faut connaitre IoC

Ce qui je dit n'est pas forcement vrai mais sert à vous montrer que pour apprendre un concept je dois en apprendre d'autres qui dépendants à leur tour du premier. C'est le serpent qui se mord la queue. Je n'arrive pas à trouver un point d'entrée pour apprendre tout ces concepts.

Pourriez-vous m'aider à trouver une voie d'entrée et répondre à quelques questions dès lors que j’entamerai cette voie d'accès ?

Existe t-il des textes de références en français (je n'ai rien contre l'anglais mais quand je sujet est aussi inconnu et abstrait et fait référence à d'autres concept que je ne connais pas non plus, la compréhension en devient impossible) ?

Sinon des textes en anglais qui expliquent un concept avec le minimum de référence à d'autres concepts lui ressemblant afin de mieux cerner les explications ?

Y aurait-il quelques âmes charitables qui est pitié de moi et qui veuille bien m'ouvrir la voie de la compréhension du Java EE.
miltone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2012, 01h45   #2
miltone
Membre habitué
 
Homme
Développeur informatique
Inscription : mai 2007
Messages : 512
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2007
Messages : 512
Points : 131
Points : 131
Dans le cas d'injection de dépendances pour constructeurs qui ressemble à cela :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
public class MyDao {
 
    protected DataSource dataSource = null;
 
    public MyDao(DataSource dataSource){
      this.dataSource = dataSource;
    }
 
 
    //data access methods...
    public Person readPerson(int primaryKey) {...}
 
  }
Ok je commence à voir ce qu'est l'injection de dépandences par contre un mystère réside, Comment JavaEE fait pour trouver dynamiquement la bonne implémentation de l'objet de type Datasource ?
miltone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2012, 15h42   #3
Khaled.Noordin
Membre éprouvé
 
Avatar de Khaled.Noordin
 
Homme Khaled Noordin Abou Imran
Inscription : janvier 2005
Messages : 341
Détails du profil
Informations personnelles :
Nom : Homme Khaled Noordin Abou Imran
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2005
Messages : 341
Points : 468
Points : 468
jette un coup d'oeil ici et la
il n'y a qu'une implementation de datasource, mais n configurations possible donc le choix dépendra de l'annotation @Resouce que tu va mettre dessus avec l'appel jndi dans une string qui va bien
__________________
Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément. Nicolas Boileau

Si c'est résolu, cliquez, cliquez, cliquez!!!!
Khaled.Noordin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2012, 23h33   #4
miltone
Membre habitué
 
Homme
Développeur informatique
Inscription : mai 2007
Messages : 512
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2007
Messages : 512
Points : 131
Points : 131
Merci pour les liens et surtout celui de Parleys qui est vraiment complet et intéressant. Dommage qu'on ne puisse pas avoir de transcription écrite de leur discours car c'est quand même complexe de bien comprendre le discours si on n'a pas fait un doctorat d'anglais

quant à ton autre lien, l'article à l'air intéressant en parlant de @qualifier mais j'ai déjà du mal à comprendre la notion d'injection alors je suis un peu largué.

Pourrais-tu me dire la différence qu'il y a entre une classe possédant un attribut de type ListServiceBean comme cela

Code :
1
2
3
4
5
6
7
8
9
10
@Stateless
@LocalBean
@Remote({ParametrageService.class})
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
@WebService(portName="ParametrageWSPort", targetNamespace="http://xxx.xxx.xxxx.xxx.xxxx.xxx")
@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED, style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL)
public class ParametrageServiceBean implements ParametrageService 
{
    @Inject
    private ListServiceBean listService;
Et la même classe pour laquelle nous n'injectons pas de ListServiceBean mais uniquement une association avec ce ListServiceBean de la sorte :

Code :
1
2
3
4
5
6
7
8
9
@Stateless
@LocalBean
@Remote({ParametrageService.class})
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
@WebService(portName="ParametrageWSPort", targetNamespace="http://xxx.xxxx.xxx.xxx.xxxx.xxx")
@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED, style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL)
public class ParametrageServiceBean implements ParametrageService 
{
    private ListServiceBean listService;
miltone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2012, 09h49   #5
Khaled.Noordin
Membre éprouvé
 
Avatar de Khaled.Noordin
 
Homme Khaled Noordin Abou Imran
Inscription : janvier 2005
Messages : 341
Détails du profil
Informations personnelles :
Nom : Homme Khaled Noordin Abou Imran
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2005
Messages : 341
Points : 468
Points : 468
La différence est que rien ne sera injecté dans ton listservice donc il sera toujours null en l’état de ton code,
Pour revenir au code que tu as présenté au dessus avec le DAO, tu as plus vite fait de passer par JPA plutôt que de construire un accès aux données par datasource, qui vraisemblablement serait du jdbc
__________________
Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément. Nicolas Boileau

Si c'est résolu, cliquez, cliquez, cliquez!!!!
Khaled.Noordin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2012, 23h05   #6
miltone
Membre habitué
 
Homme
Développeur informatique
Inscription : mai 2007
Messages : 512
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2007
Messages : 512
Points : 131
Points : 131
Citation:
La différence est que rien ne sera injecté dans ton listservice donc il sera toujours null en l’état de ton code
J'ai vraiment du mal à cerner la notion d'injection. Pourrais-tu essayer de me faire une explication schématique de ce que va faire le programme ou le compilateur lorsque je vais compiler ou exectuer mon code qui contient cette injection ?

Citation:
Pour revenir au code que tu as présenté au dessus avec le DAO, tu as plus vite fait de passer par JPA plutôt que de construire un accès aux données par datasource, qui vraisemblablement serait du jdbc
Malheureusement pour le moment je n'ai pas le choix mais je prend bonne note de ta remarque intéressante. Ça me permettra de mieux comprendre JPA en sachant comment je dois "ramer" sans lui je ne le l'utilise pas effectivement.
miltone est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h07.


 
 
 
 
Partenaires

Hébergement Web