1 Reply Latest reply on Jun 13, 2007 5:36 PM by Paulo Assunção

    JSF 1.1 RI + JSTL + JBoss doesn't work

    Paulo Assunção Newbie

      Hi JBoss Community!

      I developed an application (using Netbeans 5.5 with Sun AS 9.0) that uses following technologies:

      - Database

      MySQL 5.0

      - Persistence

      JPA

      - Business Layer

      EJB 3.0

      - Web

      Servlet
      JSP with JSTL 1.1
      JSF 1.1

      Everything work fine in my development environment, but the production environment uses JBoss 4.05 GA. I confess: I'm newbie with JBoss and I am having many problems to deploy my application in this server. Lets go to the issues:

      1- JSF doesn't work

      When I used My Faces (already installed in the server), JSF page worked, but layout was corrupted. So, I tried use JSF RI 1.1 (as in my development environment). For it:

      - I deleted jsf-lib directory
      - I upload jsf-api.jar and jsf-impl (and dependencies) to
      <jboss home>/server/default/deploy/jbossweb-tomcat55.sar/ (because I want the .ear be small)
      - I modified <jboss home>/server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml, commenting the part below:

      <init-param>
      <param-name>engineOptionsClass</param-name>
      <param-value>
      org.jboss.web.tomcat.tc5.jasper.JspServletOptions
      </param-value>
      </init-param>
      Specify the jars relative to the jbossweb-tomcat55.sar that should
      be scanned for common tag lib descriptors to include in every war
      deployment.

      <init-param>
      MyFaces tlds
      <param-name>tagLibJar0</param-name>
      <param-value>jsf-libs/myfaces-impl.jar</param-value>
      </init-param>

      And finally, I cleaned work and tmp directories. After it, I restart JBoss, but when I test the application, I get the following error:

      java.lang.NoClassDefFoundError: org.apache.myfaces.taglib.core.ViewTag
      at org.apache.jsp.views.apps.artigos.listarArtigos_jsp._jspx_meth_f_view_0(listarArtigos_jsp.java:115)
      at org.apache.jsp.views.apps.artigos.listarArtigos_jsp._jspService(listarArtigos_jsp.java:91)
      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
      at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
      at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
      at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
      at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
      at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
      at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
      at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
      at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
      at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at com.sivople.web.site.filters.LoadNewsControllerFilter.doFilter(LoadNewsControllerFilter.java:58)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
      at java.lang.Thread.run(Thread.java:595)

      2- JSTL Expression Language are not been interpreted

      Code like this:

      <c:forEach items="${sessionScope.news}" var="item">

      <a href="/sivople/views/apps/noticias/lerNoticia.jsp?noticia=<c:out value='${item.contentUrl}' />"> <c:out value="${item.title}" />


      </c:forEach>

      is rendering as below:

      ${item.title}


      In this case, there isn't errors in the log.

      Any sugestions?

      *** My web.xml: ***

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

      <listener-class>com.sun.faces.config.ConfigureListener</listener-class>

      <context-param>
      <param-name>com.sun.faces.verifyObjects</param-name>
      <param-value>false</param-value>
      </context-param>
      <context-param>
      <param-name>com.sun.faces.validateXml</param-name>
      <param-value>true</param-value>
      </context-param>
      <context-param>
      <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
      <param-value>client</param-value>
      </context-param>

      <servlet-name>Faces Servlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>


      <servlet-name>ViewGalleryControllerServlet</servlet-name>
      <servlet-class>com.sivople.web.site.servlets.ViewGalleryControllerServlet</servlet-class>
      <init-param>
      <param-name>forwardUrl</param-name>
      <param-value>/views/apps/verGaleria.jsp</param-value>
      </init-param>


      <filter-name>LoadNewsControllerFilter</filter-name>
      <filter-class>com.sivople.web.site.filters.LoadNewsControllerFilter</filter-class>

      <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.jsf</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>ViewGalleryControllerServlet</servlet-name>
      <url-pattern>/servlet/galerias/ViewGalleryControllerServlet</url-pattern>
      </servlet-mapping>
      <filter-mapping>
      <filter-name>LoadNewsControllerFilter</filter-name>
      <url-pattern>/*</url-pattern>
      </filter-mapping>
      <session-config>
      <session-timeout>
      30
      </session-timeout>
      </session-config>
      <welcome-file-list>
      <welcome-file>
      index.jsp
      </welcome-file>
      </welcome-file-list>
      <jsp-config>

      <taglib-uri>
      http://java.sun.com/jstl/core
      </taglib-uri>
      <taglib-location>
      /WEB-INF/c.tld
      </taglib-location>

      </jsp-config>
      </web-app>