Arriver Ne peut pas résoudre de référence Local ejb-ref pas la mise en œuvre de parent de l'interface
Je suis à essayer de comprendre pourquoi j'ai besoin pour mettre en œuvre ces deux interfaces afin d'éviter les problèmes de déploiement.
Code Java
ExamplePlanAssembler.java
@Local
public interface ExamplePlanAssembler {
ExamplePlan toBO(ExamplePlanEntity entity);
}
ExtendedExamplePlanAssembler.java
@Local
public interface ExtendedExamplePlanAssembler
extends ExamplePlanAssembler{
ExtExamplePlan toBO(ExamplePlanEntity entity, ExtExamplePlanEntity extEntity);
}
ExtendedExamplePlanAssemblerImpl.java
@Stateless
public class ExtendedExamplePlanAssemblerImpl
implements ExtendedExamplePlanAssembler {
/* Method impls removed */
}
ExamplePlanServiceImpl.java
@Stateless
public class ExamplePlanServiceImpl
implements ExamplePlanService {
private ExamplePlanAssembler examplePlanAssembler ;
@EJB
public void setAssembler(ExamplePlanAssembler examplePlanAssembler) {
this.examplePlanAssembler = examplePlanAssembler;
}
}
Erreur De Déploiement
[#|.507-0500|SEVERE|gf3.1.2|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common
|_ThreadID=83;_ThreadName=Thread-7;|Cannot resolve reference Local ejb-ref name=
com.myco.services.business.ExampleServiceImpl/examplePlanAssembler,Local 3.x interface =
com.myco.services.assembly.ExamplePlanAssembler,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session|#]
[#|.508-0500|SEVERE|gf3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server
|_ThreadID=83;_ThreadName=Thread-7;|Exception while deploying the app [mycoservicesear]|#]
[#|.508-0500|SEVERE|gf3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server
|_ThreadID=83;_ThreadName=Thread-7;|Cannot resolve reference Local ejb-ref name=
com.myco.services.business.ExampleServiceImpl/examplePlanAssembler,Local 3.x interface =
com.myco.services.assembly.ExamplePlanAssembler,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session
java.lang.RuntimeException: Cannot resolve reference Local ejb-ref name=
com.myco.services.business.ExampleServiceImpl/examplePlanAssembler,Local 3.x interface =
com.myco.services.assembly.ExamplePlanAssembler,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session
[#|.516-0500|SEVERE|gf3.1.2|javax...gf.deployment.admin
|_ThreadID=83;_ThreadName=Thread-7;|Exception while deploying the app [mycoservicesear] : Cannot resolve reference Local ejb-ref name=
com.myco.services.business.ExampleServiceImpl/examplePlanAssembler,Local 3.x interface =
com.myco.services.assembly.ExamplePlanAssembler,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session|#]
La Solution?!
Si je change mon interface impl à mettre en œuvre non seulement la ExtendedExamplePlanAssembler
de l'interface, mais aussi le parent ExamplePlanAssembler
interface, mon déploiement d'erreur disparaît.
ExtendedExamplePlanAssemblerImpl.java (v2)
@Stateless
public class ExtendedExamplePlanAssemblerImpl
implements ExtendedExamplePlanAssembler, ExamplePlanAssembler{
/* Method impls removed */
}
La Question
Pourquoi ne l'ajout de l'interface pour les parents de mon implements
déclaration de résoudre les problèmes de déploiement?
OriginalL'auteur Snekse | 2012-10-10
Vous devez vous connecter pour publier un commentaire.
EJB Spec dit,
Comme un exemple, le client points de vue exposés par un bean de session ne sont pas héritées par une sous-classe qui
arrive aussi de définir un bean de session.
En supposant Foo et Bar sont des entreprises locales interfaces et il n'y a aucun descripteur de déploiement,
session bean Un expose des entreprises locales interface Foo et bean de session B expose les entreprises locales de l'interface
Bar, mais pas Foo.
Référence ici. Section 4.9.2.1 de EJB3.1 Spec
bien le texte ci-dessus est une copie de l'ejb 3.1 spec. recherchez le texte...peut-être searc afain:-)
Merci. Ce lien a également aidé un peu. weblogs.java.net/blog/sekhar/archive/2009/02/...
Cependant.... les exemples donnés ne sont pas vraiment la couverture de mon cas. Les exemples sont de l'héritage de classe avec chaque classe de la spécification d'une interface différente. Dans mon exemple, j'ai l'héritage de l'Interface avec la classe implémentant l'interface enfant. Différence mineure.
OriginalL'auteur Maddy
vous ne pouvez pas étendre une interface
J'ai besoin de vous pour essayer de la mise en œuvre de l'interface (vous pouvez implémenter deux interfaces dans la même classe d'haricot)
mais pour l'instant, vous devez remplacer le mot-clé "extends" avec "met en œuvre"
OriginalL'auteur Harvester