Bonjour,
J'essaie de déployer un bean session (stateless) sur JBoss (version 4.0.5.GA)
Dans l'application, on utilise des EJB 2
Je sais qu'avec JBoss 4.0.5 ça serait plus facile d'utiliser des EJB 3
(configurations moins pénible, pas de JNDI :-) d'après ce qu'a écrit quelqu'un sur un forum )
Dans le .jar où il y a mon bean, dans META-INF, j'ai configuré
- ejb-jar.xml
- jboss.xml.
jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC
"-//JBoss//DTD JBOSS 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
<enterprise-beans>
<session>
<ejb-name>ServiceSIP</ejb-name>
<jndi-name>ejb/ServiceSIP_SIP2</jndi-name>
</session>
</enterprise-beans>
</jboss>
J'ai également configuré le fichier {jBoss_HOME}\server\conf\jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099
dans l'appli cliente, je cherche à récupérer une référence du contexte initial JNDI:
public EJBLocalHome getLocalHome(String jndiHomeName) throws
FabriqueDeServiceException {
EJBLocalHome home = null;
try {
Object obj = initialContext.lookup("ejb/"+jndiHomeName);
//System.out.println("LocalHome = " + obj.getClass());
home = (EJBLocalHome) obj;
}
catch (NamingException ne) {
throw new FabriqueDeServiceException(ne);
}
catch (Exception e) {
throw new FabriqueDeServiceException(e);
}
return home;
}
J'ai ajouté le préfixe "ejb/" (il parait qu'il faut mettre ça pour que ça fonctionne avec JBoss...)
quand je debugg, jndiHomeName = ServiceSIP_SIP2
Mais rien à faire...quand je déploie mon .ear (qui contient un .war + le .jar avec l'EJB) et que je fais mes tests, les méthodes des EJB ne sont pas "boundés"
J'obtiens comme erreur:
nulldans la classe null
at fr.infoparc.service.FabriqueDeService.getLocalHome(FabriqueDeService.java:72)
...
Caused by: java.lang.ClassCastException: $Proxy70 cannot be cast to javax.ejb.EJBLocalHome
at fr.infoparc.service.FabriqueDeService.getLocalHome(FabriqueDeService.java:66)
... 25 more
java.lang.ClassCastException: $Proxy70 cannot be cast to javax.ejb.EJBLocalHome
at fr.infoparc.service.FabriqueDeService.getLocalHome(FabriqueDeService.java:66)
Si quelq'un a une réponse...est-ce que j'ai manqué des étapes?
Est-ce qu'il manque une config?
Merci pour votre aide!
(ça commence à venir....j'apprend progressivement :-) )
Marc
Partager