Empecé a escribir un nuevo servicio de JBoss temporizado que tenía la intención de usar algunos componentes de costura existentes. Pero parece que no puedo acceder a estos componentes debido a contextos inexistentes. ¿Es posible usarlos de otra manera que no sea en la situación típica con JSF?¿Es posible usar Seam en un servicio sincronizado de JBoss?
Un pequeño fragmento de demostrar lo que quiero hacer ...
@Service
public class MyService extends DefaultTimedService implements TimedObject, DefaultServiceInterface {
@Timeout
public void ejbTimeout(Timer timer) {
MyInterface loader = (MyInterface) Component.getInstance(MyInterface.SEAM_NAME, true);
// throws no context!
}
}
que arroja la siguiente excepción por ejemplo:
java.lang.IllegalStateException: No application context active
at org.jboss.seam.Component.forName(Component.java:1945)
at org.jboss.seam.Component.getInstance(Component.java:2005)
Gracias también ... Lo probaré ... parece sucio pero prometedor :) –
El beginCall() hizo lo básico ... bueno. Ahora tengo que resolver algunas otras condiciones previas para que funcionen mis componentes. ¡Gracias! –
Una sugerencia más aquí ... beginCall() no inicia una transacción y todas las operaciones de EntityManager fallan silenciosamente. Si usa beginCall() y endCall() ¡también es obligatorio manejar la transacción! Al usar Transaction.instance(). Begin() y Transaction.instance(). Commit() podría conseguir que realmente hiciera algo real. –