Tengo un problema con esta configuración y ni siquiera puedo ver los registros.

Este es mi @Singleton @Startup EJB:

@Singleton
@Startup
@DependsOn("SchedulerEJB")
public class SchedulerStartUp {

    private static Logger log = Logger.getLogger(SchedulerStartUp.class);

    @EJB
    SchedulerEJB schedEJB;  

    @PostConstruct
    public void atStartup() {
       log.info("startUp")
       System.out.println("startUp");

       schedEJB.cancelTimer("EBlastScheduler");
       schedEJB.createTimer("*/1", "*", "*");
    }
}

La SchedulerEJB:

 @Stateless
 public class SchedulerEJB {

    @Resource
    TimerService timerService;         

    public cancelTimer(String timerInfo){/*...*/}

    public createTimer(String sec, String min, String hour) {/*...*/}

    @Timeout
    public void execute(Timer timer) {/*...*/}
 }

Maven pom:

 //Been Using Glassfishv3.0.1 and EJB3.1 with a dependency of:
 <dependency>
     <groupId>javax</groupId>
     <artifactId>javaee-api</artifactId>
     <version>6.0</version>
     <scope>provided</scope>
 </dependency>
U puede depurar? También, he tenido problemas usando commons logging, que terminó con slf4j LoggerFactory.getLogger(SchedulerStartUp.class)
el registro funciona bien cuando la aplicación se implementa, se parece ocurrir sólo cuando se usa en este contexto 🙁
Se puede depurar?
Lamentablemente no hay tiempo para eso :(, pensando en muchas cosas ahora mismo… ayuda :((
Por favor, cambiar el ‘@EJB’ cesionario a la interfaz (‘@Remoto’/’@Local’) no es el EJB sí mismo. y también por favor, retire la ‘@DependsOn’ cuando la dependencia no usar @Singleton, eso es todo gracias.

OriginalEl autor Mark Joseph Del Rosario | 2011-12-20

1 Comentario

  1. 6

    Tiene no válido tipo de bean como un atributo de @DependsOn. DependsOn es para expresar la dependencia entre dos Singleton beans de sesión, no entre Singleton y Apátridas. Usted debe cambiar SchedulerEJB a ser Singleton o eliminar la dependencia.

    Si usted decide cambiar SchedulerEJB a Singleton, luego @DepensOn tampoco es necesario, porque (de EJB 3.1 especificación):

    Tenga en cuenta que si un Singleton se limita a invocar otro Singleton
    desde su PostConstruct método, no explícito pedido de metadatos es
    necesario. En ese caso, el primer Singleton mero uso de un ejb
    de referencia para invocar el objetivo de Singleton. Allí, la adquisición de
    la referencia de ejb (ya sea a través de una inyección o de búsqueda) no
    implica, necesariamente, la creación real de la correspondiente Singleton
    bean instancia.

    Pero necesito que sea @Stateless, alguna solución? tal vez debería quitar ‘@DependsOn » totalmente? pero mi ‘@EJB? 🙁
    ‘@EJB’ no funciona, cualquier forma de inicializar bean llamado ‘SchedulerEJB’ arriba?
    No he de tener una situación en la que yo llamaría apátridas bean de singleton, pero supongo que la eliminación de @DependsOn debe trabajar, suponiendo que no hay ningún ocultos necesidad en otras partes de código por qué SchedulerEJB debe ser inicializado antes. El envase debe garantizar que no hay instancia disponible con el código actual, sin ninguna adición.
    Gracias, ahora claro! para otros guyz de leer esto: «nunca importar el mal de la biblioteca al igual que lo hice, me com importados.google.inyectar.Singleton en lugar de javax.ejb.Singleton» Gracias de nuevo!
    Sé que es una pregunta vieja, En Jboss 7.x un sólo utiliza un @DependsOn para hacer referencia a un estado de frijol de un singleton bean: yo no creo que sea compatible con EJB3, pero funciona. La fuente de esta entrada: bugzilla.redhat.com/show_bug.cgi?id=958217

    OriginalEl autor Mikko Maunu

Dejar respuesta

Please enter your comment!
Please enter your name here