【问题标题】:JSF and tomcat5 - No Render ResponseJSF 和 tomcat5 - 无渲染响应
【发布时间】:2011-06-17 18:50:42
【问题描述】:

有一位开发人员为我的公司编写了一个 JSF 应用程序。他在tomcat 6上写了这个,不幸的是我不得不把所有东西都转移到tomcat 5上。我放了一些丢失的罐子,终于能够执行一个请求。但是在 RenderResponse 阶段我得到以下信息:

2011 年 1 月 29 日晚上 8:41:51 com.sun.faces.lifecycle.ELResolverInitPhaseListener popu lateFacesELResolverForJsp 信息: JSF1027:[null] 的 ELResolvers JSF 未向 JSP 注册 容器。 2011 年 1 月 29 日晚上 8 点 41 分 54 秒 com.sun.faces.lifecycle.LifecycleImpl 阶段警告: 执行阶段(RENDER_RESPONSE 6、com.sun.faces.context.FacesContextImpl@c8570c) 抛出异常 com.sun.rave.web.ui.appbase.ApplicationException: javax.servlet.ServletException: javax/servlet/jsp/tagext/JspIdConsumer 在 com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.cleanup(ViewHandlerImpl.java:594) 在 com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:325) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) 在 com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) 在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) 在 com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.render(PartialTraversalLifecycle.java:106) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) 在 org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 在 org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 在 org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 在 java.lang.Thread.run(Thread.java:619) 引起:javax.faces.FacesException: javax.servlet.ServletException: javax/servlet/jsp/tagext/JspIdConsumer 在 com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:413) 在 com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439) 在 com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114) 在 com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:320) ... 19 更多原因:javax.servlet.ServletException: javax/servlet/jsp/tagext/JspIdConsumer 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:273) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) 在 com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408) ... 22 更多 2011 年 1 月 29 日晚上 8 点 41 分 54 秒 com.sun.faces.lifecycle.LifecycleImpl 阶段警告:阶段(RENDER_RESPONSE 6、com.sun.faces.context.FacesContextImpl@c8570c) 抛出异常: com.sun.rave.web.ui.appbase.ApplicationException: javax.servlet.ServletException: javax/servlet/jsp/tagext/JspIdConsumer javax.servlet.ServletException: javax/servlet/jsp/tagext/JspIdConsumer com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.cleanup(ViewHandlerImpl.java:594) com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.afterPhase(ViewHandlerImpl.java:470) com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280) com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.render(PartialTraversalLifecycle.java:106) javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConne 动作(Http11BaseProtocol.java:665) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) java.lang.Thread.run(Thread.java:619)

谁能告诉我这是什么意思,我该如何解决?我正在研究这个,但还没有解决方案。是不是因为jar的版本不对?

非常感谢

【问题讨论】:

    标签: java jsf tomcat el


    【解决方案1】:

    如果您使用的是 JSF 1.2,请确保您使用的是 Tomcat 5.5,并且您的 web.xml 被声明为 Servlet 2.4(因此对于一些老式的 DOCTYPE 而言,不是 2.3 或更早版本)。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app
        xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">
    
        <!-- Config here. -->
    
    </web-app>
    

    表达式语言 (EL) 是在 JSP 2.0 中引入的,它是 Servlet 2.4 的一部分。异常表明它被声明为 Servlet 2.3 或更早版本。

    如果您使用的是 JSF 1.1,那么您应该能够在 Tomcat 5.0 上运行它,并使用声明为 web.xml 的 Servlet 2.3(您只需将 JSF 1.2 降级到 JSF 1.1)。但是,如果您使用的是 JSF 2.0,那么您需要 Tomcat 6.0 或更新版本,并带有声明为 web.xml 的 Servlet 2.5。

    【讨论】:

    • 感谢您的宝贵意见,但我认为我的版本正确(偶然:))。我的 tomcat 版本是 5.5.27,JSF 1.2.04(信息:初始化 Sun 的 JavaServer Faces 实现( 1.2_04-b10-p01) 用于上下文 'null') 并在我的 web-xml 中有这个: java.sun.com/xml/ns/j2ee" xmlns:xsi="w3.org/2001/XMLSchema-instance" xsi:schemaLocation="java.sun.com/xml/ns/j2ee java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 版本="2.4">。请告诉我可能出了什么问题?
    • webapp 的类路径(/WEB-INF/libJRE/libJRE/lib/ext 等)被旧版本的 servletcontainer 特定库(如 jsp-api.jar 等)污染的任何可能性在 servletcontainer 自己的类路径中保持不变?
    • 我的应用程序库中的tomcat和jstl的common/lib中有servlet-api和jsp-api。将所有这些更改为 servlet-api-2.5-6.1.5、jsp-api-2.1-6.0.2 和 jstl-1.2 会导致我的服务器永远无法启动:(。请建议。
    • 哦,您实际上不应该接触 servletcontainer 自己的库!每当您想这样做时,您实际上应该升级整个 servlet 容器(例如 Tomcat 5.5 到 6.0)。但这不是必需的,因为 JSF 1.2 应该在 Tomcat 5.5 上运行而不会出现问题。我只是在询问您是否在不属于它们的地方有一些特定于 servletcontainer 的库。如果有一些并且它们的版本不同,那么这将解释您面临的异常,解决方案是删除它们。
    • 您需要调查文件夹 /WEB-INF/libJRE/libJRE/lib/ext 是否包含任何 servletcontainer 特定库,例如 jsp-api.jarel-api.jarservlet-api.jar, etc..etc.. 正是您在Tomcat/common/lib 中看到的那些。您应该在类路径的其他地方有它们的重复项。我建议撤消所有操作并开始清理,然后不要“我放了一些丢失的罐子”,而只是报告您面临的问题。可能您添加了错误的 JAR,或者可能需要完全不同的解决方法。
    猜你喜欢
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多