Re: Injecter des EJBs distant dans une application CDI
Sebastien Cesbron <[email protected]> Fri, 14 Oct 2011 15:53:10 +0200
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <CAP3_Q0cj9PBPuP8u4h5m=08wuNT5RWXs_SOsYuJtpBUaFSMzTA@mail.gmail.com> |
--00151773ea80decf2a04af4293e7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Salut Je ne connais pas la moiti=E9 des technos que tu sites a moiti=E9 aussi bie= n que je le devrais mais pr=E9sent=E9 comme tu le pr=E9sentes =E7a me parait cens= =E9. Seb Le 14 octobre 2011 15:20, Nicolas Delsaux <[email protected]> a =E9crit : > Salut, > je suis en train de d=E9velopper une application dans laquelle je voudrai= s > utilsier de l'injection de d=E9pendance "normalis=E9e" donc avec CDI. > Le c=F4t=E9 fun, c'est que cette application comporte une partie serveur > s'ex=E9cutant dans un EAR d=E9ploy=E9 sur Glassfish. Mais aussi sur un cl= ient > Glassfish. > Dans ce second contexte, on ne dispose pas "n standard", de l'injection d= es > d=E9pendances. > J'ai donc ajout=E9 Weld 1.0.1 =E0 mon CLASSPATH, et roulez jeunesse ! J'a= i pu > faire de l'injection de beans dans mon client. > Seulement, je ne peux pas injecter d'EJBs du serveur dans les classes de > mon client. P=E9nible quoi. > J'ai donc envisag=E9 une premi=E8re solution reposant sur une extension C= DI > Weld qui, une fois les classes "classiques" charg=E9es, liste les EJBs > distants (=E0 grands coups de Context.listBindings), r=E9cup=E8re leurs c= lasses, > et se charge d'instancier les interfaces idoines. Ca paraissait g=E9nial,= sauf > qu'il semble que Glassfish soit "un peu" bugg=E9 (voir par exemple ici : > http://java.net/jira/browse/GLASSFISH-17219). > Du coup, comme il n'est plus possible de tout faire au d=E9marrage, je me > r=E9soud =E0 faire les choses au fur et =E0 mesure. > Et pour =E7a, j'ai l'impression de me lancer dans une mauvaise id=E9e : j= e vais > =E9crire une sous-classe de javax.enterprise.inject.Instance qui, =E0 l'a= ppel du > "select" va faire un lookup JNDI du nom de l'interface pour ensuite, au > moment du get(), r=E9cup=E9rer une instance de mon EJB pour appeler des m= =E9thodes > dessus. > Ca vous para=EEt cens=E9 ? Voire ... intelligent ? Ou c'est compl=E8teemn= t idiot > et il y a d=E9ja une fa=E7on subtile de faire =E7a ? > > -- > Nicolas Delsaux > > --00151773ea80decf2a04af4293e7 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Salut<br><br>Je ne connais pas la moiti=E9 des technos que tu sites a moiti= =E9 aussi bien que je le devrais mais pr=E9sent=E9 comme tu le pr=E9sentes = =E7a me parait cens=E9.<br><br>Seb<br><br><div class=3D"gmail_quote">Le 14 = octobre 2011 15:20, Nicolas Delsaux <span dir=3D"ltr"><<a href=3D"mailto= :[email protected]">[email protected]</a>></span> a =E9c= rit :<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex;"><div>Salut,<br clear=3D"all"></div><div>je = suis en train de d=E9velopper une application dans laquelle je voudrais uti= lsier de l'injection de d=E9pendance "normalis=E9e" donc avec= CDI.</div> <div>Le c=F4t=E9 fun, c'est que cette application comporte une partie s= erveur s'ex=E9cutant dans un EAR d=E9ploy=E9 sur Glassfish. Mais aussi = sur un client Glassfish.</div> <div>Dans ce second contexte, on ne dispose pas "n standard", de = l'injection des d=E9pendances.</div><div>J'ai donc ajout=E9 Weld 1.= 0.1 =E0 mon CLASSPATH, et roulez jeunesse ! J'ai pu faire de l'inje= ction de beans dans mon client.</div> <div>Seulement, je ne peux pas injecter d'EJBs du serveur dans les clas= ses de mon client. P=E9nible quoi.</div><div>J'ai donc envisag=E9 une p= remi=E8re solution reposant sur une extension CDI Weld qui, une fois les cl= asses "classiques" charg=E9es, liste les EJBs distants (=E0 grand= s coups de Context.listBindings), r=E9cup=E8re leurs classes, et se charge = d'instancier les interfaces idoines. Ca paraissait g=E9nial, sauf qu= 9;il semble que Glassfish soit "un peu" bugg=E9 (voir par exemple= ici : <a href=3D"http://java.net/jira/browse/GLASSFISH-17219" target=3D"_b= lank">http://java.net/jira/browse/GLASSFISH-17219</a>).</div> <div>Du coup, comme il n'est plus possible de tout faire au d=E9marrage= , je me r=E9soud =E0 faire les choses au fur et =E0 mesure.</div><div>Et po= ur =E7a, j'ai l'impression de me lancer dans une mauvaise id=E9e : = je vais =E9crire une sous-classe de javax.enterprise.inject.Instance qui, = =E0 l'appel du "select" va faire un lookup JNDI du nom de l&#= 39;interface pour ensuite, au moment du get(), r=E9cup=E9rer une instance d= e mon EJB pour appeler des m=E9thodes dessus.</div> <div>Ca vous para=EEt cens=E9 ? Voire ... intelligent ? Ou c'est compl= =E8teemnt idiot et il y a d=E9ja une fa=E7on subtile de faire =E7a ?</div><= br><font color=3D"#888888">-- <br>Nicolas Delsaux<br><br> </font></blockquote></div><br> --00151773ea80decf2a04af4293e7--