2010-07-23 15 views
0

J'ai un fichier jar EJB3 contenant:Comment désactiver l'annotation @EJB locale sur un client? (GlassFish)

1) I1 interface à distance et le IMPL1 de mise en œuvre sans état (exposée au client)

2) I2 interface locale et l'IMPL2 de mise en œuvre sans état (utilisé localement dans l'application serveur)

IMPL1 a une annotation @EJB pour injecter I2 local (IMPL2). Lorsque je mets le fichier ejb3 jar au client et que j'essaie de déployer l'application cliente, il échoue avec l'erreur "Impossible de résoudre la référence Ejb non résolue" à l'I2 local car l'ejb I2 local n'est évidemment pas accessible depuis le client . Pour autant que je sache, j'aurais dû mettre seulement des interfaces et des entités distantes dans la lib du client. Pas l'implémentation IMPL1 car elle cause le problème. Sinon, je peux faire la télécommande I2 et ensuite le client se déploie avec succès. Cependant je ne veux pas exposer I2 et je veux obtenir la réponse du bean local "par référence". Le problème est que je ne peux pas diviser le projet en deux parties (client + serveur), donc j'ai mis tout le jar ejb dans la lib du client.

Est-il possible de désactiver le @EJB local dans IMPL1 sur le client (en quelque sorte dans web.xml)?

Merci à l'avance, Anton

Répondre

0

Vous pourriez trouver les instructions pour effectuer recherche à distance et invocations de EJBs, d'un client SE au Glassfish FAQ. Bien que ce soit pour Java EE 5/EJB 3.0, cela vaut également pour Java EE 6/EJB 3.1.

+0

Merci pour vos efforts. J'avais jeté un oeil sur la FAQ avant de poster ma question, mais je n'ai pas trouvé la réponse. Merci. – Anton