Mon élément SFSB Seam est lié à JNDI sur le déploiement, comme en témoigne ce message du journal:JBoss Seam: composant installé dans le JNDI, l'accès des composants ne dit pas Bound
Component: example, scope: CONVERSATION, type: STATEFUL_SESSION_BEAN,
class:com.purecharger.action.ExampleAction, JNDI: purecharger/ExampleAction/local
Mon interface:
@Local
public interface Example {
public List<String> getExample();
public void destroy();
}
et ma mise en œuvre:
@Stateful
@Scope(ScopeType.CONVERSATION)
@Name("example")
@Restrict("#{identity.loggedIn}")
public class ExampleAction implements Example, Serializable {
....
}
Cependant, quand j'accéder au composant voting
dans un xh Page TML comme, je reçois l'erreur suivante:
javax.el.ELException: /home.xhtml: Could not instantiate Seam component: example
....
Caused by: javax.naming.NameNotFoundException: ExampleAction not bound
Si Seam était assez intelligent pour installer mon composant en utilisant le modèle JNDI dans components.xml (purecharger/#{ejbName}/local
), pourquoi ne pas appliquer aussi le modèle lors de la recherche des composants ?
Merci.
MISE À JOUR: En regardant le JNDIView dans JBoss, le nom purecharger/ExampleAction/local
est pas lié partout. Donc, je suppose que ma question devient maintenant, pourquoi Seam ne pas ajouter cette SFSB à JNDI?
Merci Arthur, c'était le problème. Non seulement je n'ai pas déclaré mon fichier EJB dans application.xml, mais j'essayais aussi de l'avoir en live dans war/WEB-INF/lib, ce qui n'est pas correct (au moins jusqu'à la version v3.1 de la spécification EJB). – purecharger