JSF 2 + JSP + Tomcat 6

Oi gente, estou trabalhando em uma empresa que já tem todo um sistema gigantesco formado, só que é em odbc + scriplets. O pessoal é um tanto resistente quanto a alteração do tipo de recurso utilizado, mas pouco a pouco fomos implementando JPA e eles gostaram, mas ainda estão um tanto resistente quanto a mudar para algo melhor que scriplet. Então estou tentando imlpementar uma pequenta área do sistema em JSF 2 + JSP, a IDE utilizada é o EasyEclipse que oferece qualquer suporte a xhtml, já corri atras de plugins e tudo mais, porém, não encontrei, e se tento rodar uma página feita "na mão" de xhtml e tento rodar no tomcat 6, ele não roda.

Tentei fazer a configuração do web.xml normalmente, importei os jars necessários e coloquei um faces-config.xml por via das dúvidas.

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"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:fmt="http://java.sun.com/jsp/jstl/fmt">

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

	<servlet-mapping>
	    <servlet-name>Faces Servlet</servlet-name>
	    <url-pattern>*.jsf</url-pattern>
	</servlet-mapping>

	<context-param>
	    <param-name>javax.faces.PROJECT_STAGE</param-name>
	    <param-value>Development</param-value>
	</context-param>

.
.
.

e a tentativa de um simples jsp com jsf deu em cana:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<head>
</head>

<body>
	<f:verbatim>Teste Faces</f:verbatim>
	<h:outputText value="Teste Facelets"></h:outputText>
</body>
</html>

e o erro apresentado é este:

09/02/2012 10:03:53 org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: javax.faces.component.UIViewRoot cannot be cast to javax.faces.component.UIOutput
	at com.sun.faces.taglib.jsf_core.VerbatimTag.doAfterBody(VerbatimTag.java:121)
	at org.apache.jsp.lista_002dfuncionarios2_jsp._jspx_meth_f_005fverbatim_005f0(lista_002dfuncionarios2_jsp.java:111)
	at org.apache.jsp.lista_002dfuncionarios2_jsp._jspService(lista_002dfuncionarios2_jsp.java:70)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	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:646)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:546)
	at com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:364)
	at com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	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.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:619)
09/02/2012 10:03:53 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.ClassCastException: javax.faces.component.UIViewRoot cannot be cast to javax.faces.component.UIOutput
	at com.sun.faces.taglib.jsf_core.VerbatimTag.doAfterBody(VerbatimTag.java:121)
	at org.apache.jsp.lista_002dfuncionarios2_jsp._jspx_meth_f_005fverbatim_005f0(lista_002dfuncionarios2_jsp.java:111)
	at org.apache.jsp.lista_002dfuncionarios2_jsp._jspService(lista_002dfuncionarios2_jsp.java:70)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	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:646)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:546)
	at com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:364)
	at com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	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.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:619)

qualquer sugestão é bem apreciada ^^

Eita, vamos com calma:

  1. Vc não pode simplesmente misturar os dois e achar que vai funcionar.
  2. Facelets não funciona com JSP mas sim com arquivos do tipo XHTML.
  3. Você terá que bolar uma estratégia para misturar os dois.

Talvez esses artigos te ajudem, eu procurei no google por integration jsp and jsf (ou coloque tb facelets).

http://jdevelopment.nl/facelets-legacy-jsp/
http://javafree.uol.com.br/topic-866614-Facelets-e-JSP-juntos.html

Você terá um bom trabalho para implementar, mas uma fez feito, será muito bom.

Vlw a resposta jakefrog, é difícil quando caimos em uma situação como esta, utilizo JSF 2 já a um bom tempo, mas nunca me deparei com uma integração cmo jsp, esse tipo de coisa chega desanimar a gente kkkkkkkkkkk. Espero conseguir aqui e faze-los mudar de idéia. Verei os links que você postou, em caso de sucesso postarei como foi feito.

cara o jsf 2.0 utiliza o facelets como template engine ou seja o xhtml como os amigos acima disseram. Você pode trabalhar com comandos html dentro do facelets de assim desejar.

o tutorial do nosso amigo jakefrog parece muito interessante mesmo, não sabia dessa possibilidade de criar um componente que interpreta o jsp .