Estoy tratando de averiguar por qué necesito para implementar ambas de estas interfaces con el fin de evitar problemas de implementación.

Código 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;
    }
}

De Error De Implementación

[#|.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 Revisión?!

Si puedo cambiar mi interfaz de eventos, no sólo para ejecutar el ExtendedExamplePlanAssembler de la interfaz, pero también los padres ExamplePlanAssembler interfaz, implementación de error desaparece.

ExtendedExamplePlanAssemblerImpl.java (v2)

@Stateless
public class ExtendedExamplePlanAssemblerImpl 
implements ExtendedExamplePlanAssembler,  ExamplePlanAssembler{
/* Method impls removed */
}

La Pregunta

Por qué ¿agregar el padre de la interfaz a mi implements declaración de resolver los problemas de la implementación?

InformationsquelleAutor Snekse | 2012-10-10

2 Comentarios

  1. 3

    Especificación EJB lo dice,

    Como un ejemplo, el cliente de puntos de vista expuestos por un bean de sesión no son heredados por una subclase que
    también pasa a definir un bean de sesión.

    @Stateless
    public class A implements Foo { ... }
    @Stateless
    public class B extends A implements Bar { ... }

    Suponiendo Foo y Bar local de negocio interfaces y no hay ningún asociado descriptor de despliegue,
    un bean de sesión expone Un negocio local de la interfaz de Foo y el bean de sesión B expone local de la interfaz de negocios
    Bar, pero no Foo.

    Referencia aquí. Sección 4.9.2.1 de EJB3.1 Spec

    • Su enlace de referencia no es realmente algo directamente que apoye su reclamación. Voy a dejar esto abierto por un par de días. Si no proporciona una mejor respuesta o puede proporcionar un enlace profundo a la redacción exacta en la especificación, voy a premio de la respuesta para usted.
    • bien el texto anterior es copia de ejb 3.1 especificación. la búsqueda para el texto…puede ser searc afain:-)
    • Gracias. Este enlace también ayudó un poco. weblogs.java.net/blog/sekhar/archive/2009/02/…
    • Sin embargo…. los ejemplos dados en realidad no cubrir mi caso. Los ejemplos son de herencia de clase a cada clase y la especificación de una interfaz diferente. En mi ejemplo, yo tengo la herencia de interfaces con la clase que implementa el niño de la interfaz. Una diferencia menor de edad.
  2. 0

    no se puede ampliar una interfaz
    Necesito que se trate de la aplicación de la interfaz (que se puede implementar ambas interfaces en la misma clase de bean)
    pero, por ahora, usted necesita para reemplazar la palabra clave «extends» con «implementa»

    @Local
    public interface ExtendedExamplePlanAssembler 
    extends ExamplePlanAssembler{
    ExtExamplePlan toBO(ExamplePlanEntity entity, ExtExamplePlanEntity  extEntity);
    }

Dejar respuesta

Please enter your comment!
Please enter your name here