Immer Nicht beheben können, verweisen auf Lokale ejb-ref-nicht die Umsetzung übergeordneter Schnittstellen
Ich versuche, herauszufinden, warum brauche ich beide implementieren diese interfaces, um zu vermeiden, Probleme bei der Bereitstellung.
Java-Code
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;
}
}
Bereitstellung Fehler
[#|.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|#]
Das Beheben Kann?!
Wenn ich mein interface impl zu implementieren, die nicht nur die ExtendedExamplePlanAssembler
- Schnittstelle, aber auch die Eltern ExamplePlanAssembler
- Schnittstelle, meinen Bereitstellung Fehler verschwindet.
ExtendedExamplePlanAssemblerImpl.java (v2)
@Stateless
public class ExtendedExamplePlanAssemblerImpl
implements ExtendedExamplePlanAssembler, ExamplePlanAssembler{
/* Method impls removed */
}
Die Frage
Warum wirkt sich das hinzufügen der übergeordneten Schnittstelle zu meinem implements
Erklärung beheben von Problemen bei der Bereitstellung?
InformationsquelleAutor Snekse | 2012-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
EJB-Spec sagt ja,
Als ein Beispiel, die client-Ansichten ausgesetzt, die von einer bestimmten session bean werden nicht von einer Unterklasse geerbt,
passiert auch, zu definieren, eine session-bean.
Vorausgesetzt, Foo und Bar local business interfaces und es gibt keine zugehörige deployment-descriptor,
session-bean stellt Eine lokale business interface Foo und session-bean B stellt die lokale business interface
Bar, aber nicht Foo.
Referenz hier. Abschnitt 4.9.2.1 von EJB3.1 Spec
auch der oben stehende text ist die Kopie der ejb-3.1-Spezifikation. die Suche nach dem text...ist vielleicht suchn afain:-)
Danke. Dieser link ist auch ein bisschen geholfen. weblogs.java.net/blog/sekhar/archive/2009/02/...
Aber.... die angeführten Beispiele nicht wirklich auf mein Fall. Die Beispiele sind Klasse, Vererbung mit jeder Klasse die Angabe einer anderen Schnittstelle. In meinem Beispiel habe ich Interface-Vererbung mit der Klasse die das Kind Schnittstelle. Kleinen Unterschied.
InformationsquelleAutor Maddy
können Sie nicht erweitern einer Schnittstelle
Ich brauche Sie, um zu versuchen, die Umsetzung der Schnittstelle (Sie können implementieren beide Schnittstellen in der gleichen bean-Klasse)
aber für jetzt ersetzen Sie das Schlüsselwort "extends" mit "implements"
InformationsquelleAutor Harvester