[ 
https://issues.apache.org/struts/browse/STR-3079?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_41651
 ] 

Robert Garverick commented on STR-3079:
---------------------------------------

The 'javaee.jar' is not the problem.  Tomcat needs javaee.jar when it
compiles JSP code because this jar contains numerous classes that support
JSTL, i.e., javax.servlet.jsp.jstl.*.  In older versions of JSTL, before Sun
started officially bundling it with J2EE, these classes were delivered in a
Jar file named 'jstl.jar'.  In fact, the Struts 1.3.8 download includes an
ancient version of these JSTL classes in the Jar file 'jstl-1.0.2.jar'.

(The actual JSTL tag libraries and classes are J2EE's appserv-jstl.jar,
which replaces the old 'standard.jar', or as delivered in the Struts 1.3.8
download, 'standard-1.0.2.jar'.)

You are correct in that the javaee.jar does not necessarily need to reside
in WEB-INF/lib, but if not there, it must be placed into Tomcat's /lib
directory, or somewhere where Tomcat can find it otherwise Tomcat won't
successfully compile JSP containing certain JSTL functions because it won't
find the needed javax.servlet.jsp.jstl.* classes.

Now, that being said, remember that my original Tomcat 5.5 setup, which
included javaee.jar and appserv-jstl.jar as well as Struts 1.2, compiled and
ran my JSTL-laden application just fine.  It was only when I dropped in the
new Struts 1.3.8 jar files that things started getting hosed up.  And then,
when I upgraded my Tomcat, things started running fine again.



> Version 1.3.8 breaks JSP/JSTL core taglib 'forEach' loops
> ---------------------------------------------------------
>
>                 Key: STR-3079
>                 URL: https://issues.apache.org/struts/browse/STR-3079
>             Project: Struts 1
>          Issue Type: Bug
>          Components: Taglibs
>    Affects Versions: 1.3.8
>         Environment: Windows XP Struts/JSP application running in Tomcat 5.5 
> web container
>            Reporter: Robert Garverick
>
> After I upgraded my Struts/JSP application from Struts 1.2 to Struts 1.3.8 
> (following directions in 
> http://wiki.apache.org/struts/StrutsUpgradeNotes12to13) the JSTL core taglib 
> 'forEach' loops in my JSP pages will no longer compile under Tomcat (see 
> exceptions below).  Since the outdated JSTL version 1.0.2 Jar files delivered 
> in the Struts 1.3.8 download (jstl-1.0.2.jar and standard-1.0.2.jar) 
> completely killed my JSP application since they don't even support expression 
> language, I replaced them with the same JSTL 1.1 Jar files from J2EE 5 
> (appserv-jstl.jar and javaee.jar) that I used successfully under Struts 1.2.  
> Under JSTL 1.1, all of my Struts taglib functions and JSTL taglib functions 
> work fine except for the JSTL core 'forEach' tag.  (I also tried newer JSTL 
> Jar files from J2EE 5 update 2 and got the same results).  I realize that 
> this seems more like a JSTL than a Struts bug, but the only variable seems to 
> be the Struts upgrade.
> Following are the first two of the series of exception messages I get the 
> first time a JSP page containing a 'forEach' loop is invoked and Tomcat 
> attempts to compile it to a servlet:
> Jul 22, 2007 7:36:46 AM org.apache.catalina.core.ApplicationDispatcher invoke
> SEVERE: Servlet.service() for servlet jsp threw exception
> java.lang.AbstractMethodError: 
> javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
>       at 
> javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587)
>       at 
> javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally(LoopTagSupport.java:323)
>       at 
> org.apache.jsp.pages.welcome_jsp._jspx_meth_c_forEach_0(welcome_jsp.java:237)
>       at org.apache.jsp.pages.welcome_jsp._jspService(welcome_jsp.java:125)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
>       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:820)
>       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.doInclude(ApplicationDispatcher.java:574)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
>       at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
>       at 
> org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:643)
>       at 
> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:637)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>       at java.lang.reflect.Method.invoke(Unknown Source)
>       at 
> org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:129)
>       at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:152)
>       at 
> org.apache.struts.tiles.taglib.InsertTag.doInclude(InsertTag.java:764)
>       at 
> org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:896)
>       at org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:465)
>       at 
> org.apache.jsp.pages.layouts.mainLayout_jsp._jspx_meth_tiles_insert_2(mainLayout_jsp.java:370)
>       at 
> org.apache.jsp.pages.layouts.mainLayout_jsp._jspx_meth_html_html_0(mainLayout_jsp.java:222)
>       at 
> org.apache.jsp.pages.layouts.mainLayout_jsp._jspService(mainLayout_jsp.java:148)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
>       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:820)
>       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.doInclude(ApplicationDispatcher.java:574)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
>       at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
>       at 
> org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:643)
>       at 
> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:637)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>       at java.lang.reflect.Method.invoke(Unknown Source)
>       at 
> org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:129)
>       at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:152)
>       at 
> org.apache.struts.tiles.taglib.InsertTag.doInclude(InsertTag.java:764)
>       at 
> org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:896)
>       at org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:465)
>       at 
> org.apache.jsp.index_jsp._jspx_meth_tiles_insert_0(index_jsp.java:132)
>       at org.apache.jsp.index_jsp._jspService(index_jsp.java:106)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
>       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:820)
>       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.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>       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.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>       at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>       at java.lang.Thread.run(Unknown Source)
> Jul 22, 2007 7:36:46 AM org.apache.catalina.core.ApplicationDispatcher invoke
> SEVERE: Servlet.service() for servlet jsp threw exception
> java.lang.AbstractMethodError: 
> javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
>       at 
> javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587)
>       at 
> javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally(LoopTagSupport.java:323)
>       at 
> org.apache.jsp.pages.welcome_jsp._jspx_meth_c_forEach_0(welcome_jsp.java:237)
>       at org.apache.jsp.pages.welcome_jsp._jspService(welcome_jsp.java:125)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
>       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:820)
>       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.doInclude(ApplicationDispatcher.java:574)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
>       at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
>       at 
> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:614)
>       at 
> org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:138)
>       at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:152)
>       at 
> org.apache.struts.tiles.taglib.InsertTag.doInclude(InsertTag.java:764)
>       at 
> org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:896)
>       at org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:465)
>       at 
> org.apache.jsp.pages.layouts.mainLayout_jsp._jspx_meth_tiles_insert_2(mainLayout_jsp.java:370)
>       at 
> org.apache.jsp.pages.layouts.mainLayout_jsp._jspx_meth_html_html_0(mainLayout_jsp.java:222)
>       at 
> org.apache.jsp.pages.layouts.mainLayout_jsp._jspService(mainLayout_jsp.java:148)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
>       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:820)
>       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.doInclude(ApplicationDispatcher.java:574)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
>       at 
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
>       at 
> org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:643)
>       at 
> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:637)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>       at java.lang.reflect.Method.invoke(Unknown Source)
>       at 
> org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:129)
>       at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:152)
>       at 
> org.apache.struts.tiles.taglib.InsertTag.doInclude(InsertTag.java:764)
>       at 
> org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:896)
>       at org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:465)
>       at 
> org.apache.jsp.index_jsp._jspx_meth_tiles_insert_0(index_jsp.java:132)
>       at org.apache.jsp.index_jsp._jspService(index_jsp.java:106)
>       at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
>       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:820)
>       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.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>       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.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>       at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>       at java.lang.Thread.run(Unknown Source)
> Jul 22, 2007 7:36:46 AM 
> org.apache.struts.tiles.taglib.InsertTag$InsertHandler doEndTag

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to