12 mayo 2009

Poblema al desplegar (deploy) con JasperReports+JSF+JBoss

Tenemos las siguiente situación:
  • Un poyecto Web con páginas JSF (JavaServer Faces) trabajando con implementaciones para las versiones 1.0 y 1.2 de faces.

  • JasperReports como tecnología para la generación/descarga/impresión de reportes con la cual desarrollaremos utilidades en el propio proyecto.

  • Servidor JBoss sobre el cual levantaremos el modulo web; este caso aplica para las versiones 4.2.x y 5.0.x liberadas hasta la fecha de esta publicación.

Al tratar de deployar el proyecto Web, en el cual se incluyen backerbeans y/o servlets que desarrollan utilizando JasperReports, el servidor cae en un error cíclico repitiendo combinaciones de las secuencias siguientes:
"...
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
..."

"...
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:638)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:444)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:382)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:310)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410)
at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:468)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
12:08:43,500 ERROR [lifecycle] JSF1054: (Phase ID: RENDER_RESPONSE 6, View ID: /Jasper01.jsf) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@1d9dbfc]
..."

En consecuencia, nunca logra deployar (desplegar) el proyecto y así inicializar el servidor correctamente.

El problema surge, por algún motivo extraño por el momento, cuando se trabaja con páginas JSF con extensión .jsf. Así que lamento no poder justificar dicho problema.

Pero sí puedo presentarles una solución bien sencilla de realizar al menos. Esta pasa por trabajar/definir todas las páginas con extensión ".jsp" únicamente.


2 comentarios:

  1. Anónimo9/2/10

    y q kieres q haga

    ResponderEliminar
  2. Anónimo3/11/10

    no digas que has sido tan zoquete de emplear ficheros que tienen ".jsf" como extensión física real en vez de la propia por defecto (".jsp"). El hecho de emplear ".jsf" como mapeo del servlet de faces no quiere decir que los ficheros físicamente tengan que tener dicha extensión... Veo que por lo menos has encontrado una solución al "problema" (que no es un problema, sino un error de comprensión del framework).

    Por cierto, me cuesta creer que te suceda al desplegar cuando en realidad dentro del stacktrace aparece info que dice que se está ejecutando la fase RENDER_RESPONSE del ciclo de vida de JSF, me imagino que algún tipo de request está siendo atendida por tu aplicación.

    Si buscas emplear JSF y JasperReports (ya sea en un JBoss, Tomcat, WebSphere, Glassfish, etc) te recomiendo que eches un vistazo a esta página, te lo pondrá muy fácil:
    http://jasperreportjsf.sourceforge.net

    Un saludo

    ResponderEliminar

Nro de visita Cantidad de visitas recibidas