Información y enlaces
Participa comentando, viendo lo que otros tienen que decir, o enlazandolo desde tu blog.
- Otros artículos
- Extraño problema con Boolean en Java 5
- ¿com.sun:tools:jar:1.5.0?
Seam en aplicaciones Standalone
Jboss Seam es un magnífico framework para el desarrollo de aplicaciones Web, pero plantea algunos problemas, cuando deseamos reutilizar nuestro código Seam desde una aplicación que no se esta ejecutando dentro de un servidor de aplicaciones o desde un Thread independiente. Esto es debido a que sin la envoltura del servidor de aplicaciones, ninguno de los contextos Seam estarán disponibles.
El error típico con el que nos vamos a encontrar es:
java.lang.IllegalStateException: No application context active
at org.jboss.seam.Component.forName(Component.java:1807)
Código para inicializar Seam antes de utilizarlo:
/**
* Inicializa el contexto Seam.
* Necesario para ejecutar código cuando el contexto Seam no esta inicializado y necesitamos acceder a elementos del contexto.
* Con esto evitamos la excepción "No application context active"
* @author Félix García Borrego
*/
public static void initContextApplication(){
if(!Contexts.isApplicationContextActive()){
// Si el contexto no esta inicializado lo creamos
if(!Lifecycle.isApplicationInitialized()){
// La aplicación no esta activa, la activamos
MockServletContext servletcontextMock = new MockServletContext();
ServletLifecycle.beginApplication(servletcontextMock);
new Initialization(servletcontextMock).create().init();
}
// Inicializamos el contexto
ServletLifecycle.beginInitialization();
}
Gracias!!
Probado desde Coldfusion 8 como war en una aplicacion en donde los componentes seam estan en un jar (modulo EJB) y funciona bien