ClassCastException : EJB et Local
Bonjour,
J'ai une application qui est déployée 2 fois sur le même serveur. Afin de résoudre le problème d'ambiguïté des EJB, j'ai défini des noms JNDI pour chacune des instances dans Websphere.
EJB JNDI Names -> Target Resource JNDI Name -> JNDI Name for all interfaces : ejblocal:app1/ICartService
L'entête de mon interface:
Code:
1 2 3
|
@Local
public interface ICartService { |
mon implémentation:
Code:
1 2 3
|
@Stateless
public class CartService implements ICartService{ |
Voici le "ibm-ejb-jar-bnd.xml" généré par le serveur:
Code:
1 2 3 4 5 6
|
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd" version="1.0">
<session name="CartService" simple-binding-name="ejblocal:app1/ICartService"/>
</ejb-jar-bnd> |
Lorsque je lance l'url, j'obtiens l'exceptiuon suivante :
java.lang.ClassCastException: Cannot cast class lu.etat.ci.spa.ejb.service.EJSLocal0SLCartService_14538494 to interface lu.etat.ci.spa.ejb.service.ICartService
(Je dois garder cette configuration, càd, pas changer les annotations telles qu'elles sont définies, et, je ne peux pas non plus rajouter une propriété dans la JVM pour permettre la recherche sur les noms JNDI complets.)