aspose file tools*
The moose likes JSP and the fly likes When I mix JSTL 1.0 and 1.1 taglib declarations, it causes a ParseException on some of my servers. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » JSP
Bookmark "When I mix JSTL 1.0 and 1.1 taglib declarations, it causes a ParseException on some of my servers. " Watch "When I mix JSTL 1.0 and 1.1 taglib declarations, it causes a ParseException on some of my servers. " New topic
Author

When I mix JSTL 1.0 and 1.1 taglib declarations, it causes a ParseException on some of my servers.

Tonya Bowen
Greenhorn

Joined: Mar 31, 2010
Posts: 4
When I mix JSTL 1.0 and JSTL 1.1 taglib declarations, it causes a ParseException on some of my servers, but not all of them.

Here is the block of code that's giving me trouble:
And here is the exception :

javax.servlet.jsp.JspException: com.caucho.jsp.JspLineParseException: /WEB-INF/jsp/online/system/modules/com.MYCOMPANY.marketing/templates/common/MY_JSP_PAGE.jsp:1: tag = 'out' / attribute = 'value': An error occurred while parsing custom action attribute "value" with value "${fn:contains(TEXTVARIABLE, '|STRINGOFTEXT|')}": org.apache.taglibs.standard.lang.jstl.parser.ParseException: EL functions are not supported.

However, everything works fine if I change the URI for the core declaration to http://java.sun.com/jsp/jstl/core

So here's the really weird part: for some reason, mixing 1.0 and 1.1 taglib declarations only causes an exception on two of my servers, my staging server and my production server. It causes no problems at all on my local machine or my development server. Why is this? What could possibly be causing this difference in behavior? The three servers are extremely similar in setup and configuration.

The JSP page is being served up by OpenCMS, and I'm using the Caucho's Resin webserver. I understand that you don't know how my servers or CMS are set up, but really, what I'm looking for is ideas. Any ideas at all would help, this problem has been driving me absolutely batty. Even if you don't know what could be causing the problem, if you have any suggestions at all for how I could approach the problem, that would be extremely helpful. I just don't understand what could cause this difference in behavior between my servers.

For reference, here's the full stack trace :

javax.servlet.jsp.JspException: com.caucho.jsp.JspLineParseException: /WEB-INF/jsp/online/system/modules/com.MYCOMPANY.marketing/templates/common/MY_JSP_PAGE.jsp:1: tag = 'out' / attribute = 'value': An error occurred while parsing custom action attribute "value" with value "${fn:contains(TEXTVARIABLE, '|STRINGOFTEXT|')}": org.apache.taglibs.standard.lang.jstl.parser.ParseException: EL functions are not supported. at
org.opencms.jsp.CmsJspTagInclude.includeActionWithCache(CmsJspTagInclude.java:369) at
org.opencms.jsp.CmsJspTagInclude.includeTagAction(CmsJspTagInclude.java:241) at
org.opencms.jsp.CmsJspTagInclude.doEndTag(CmsJspTagInclude.java:472) at
_jsp._WEB_22dINF._jsp._online._system._modules._com__MYCOMPANY__marketing._templates._PAGETHATINCLUDES_0MYJSPPAGE__jsp._jspService(_PAGETHATINCLUDES_0MYJSPPAGE__jsp.java:153) at
com.caucho.jsp.JavaPage.service(JavaPage.java:60) at
com.caucho.jsp.Page.pageservice(Page.java:579) at
com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:179) at
shared.filter.RemoteAddrFilterBase.doFilter(RemoteAddrFilterBase.java:57) at
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70) at
com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:115) at
com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:175) at
com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229) at
com.caucho.server.webapp.RequestDispatcherImpl.include(RequestDispatcherImpl.java:485) at
com.caucho.server.webapp.RequestDispatcherImpl.include(RequestDispatcherImpl.java:350) at
org.opencms.flex.CmsFlexRequestDispatcher.includeExternal(CmsFlexRequestDispatcher.java:194) at
org.opencms.flex.CmsFlexRequestDispatcher.include(CmsFlexRequestDispatcher.java:169) at
org.opencms.loader.CmsJspLoader.service(CmsJspLoader.java:1193) at
org.opencms.flex.CmsFlexRequestDispatcher.includeInternalWithCache(CmsFlexRequestDispatcher.java:423) at
org.opencms.flex.CmsFlexRequestDispatcher.include(CmsFlexRequestDispatcher.java:173) at
org.opencms.loader.CmsJspLoader.dispatchJsp(CmsJspLoader.java:1227) at
org.opencms.loader.CmsJspLoader.load(CmsJspLoader.java:1171) at
org.opencms.loader.A_CmsXmlDocumentLoader.load(A_CmsXmlDocumentLoader.java:232) at
org.opencms.loader.CmsXmlContentLoader.load(CmsXmlContentLoader.java:52) at
org.opencms.loader.CmsResourceManager.loadResource(CmsResourceManager.java:964) at
org.opencms.main.OpenCmsCore.showResource(OpenCmsCore.java:1498) at
org.opencms.main.OpenCmsServlet.doGet(OpenCmsServlet.java:152) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:115) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:92) at
com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106) at
com.caucho.filters.CmsGzipFilter.doFilter(CmsGzipFilter.java:177) at
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70) at
shared.filter.RemoteAddrFilterBase.doFilter(RemoteAddrFilterBase.java:57) at
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70) at
com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:115) at
com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229) at
com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:277) at
com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:106) at
com.caucho.server.dispatch.ForwardFilterChain.doFilter(ForwardFilterChain.java:80) at
com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:207) at
com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173) at
com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229) at
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:274) at
com.caucho.server.port.TcpConnection.run(TcpConnection.java:514) at
com.caucho.util.ThreadPool.runTasks(ThreadPool.java:520) at
com.caucho.util.ThreadPool.run(ThreadPool.java:442) at
java.lang.Thread.run(Thread.java:595)
Caused by: com.caucho.jsp.JspLineParseException: /WEB-INF/jsp/online/system/modules/com.MYCOMPANY.marketing/templates/common/MY_JSP_PAGE.jsp:1: tag = 'out' / attribute = 'value': An error occurred while parsing custom action attribute "value" with value "${fn:contains(TEXTVARIABLE, '|STRINGOFTEXT|')}": org.apache.taglibs.standard.lang.jstl.parser.ParseException: EL functions are not supported. at
com.caucho.jsp.java.JspNode.error(JspNode.java:1489) at
com.caucho.jsp.java.JspNode.error(JspNode.java:1480) at
com.caucho.jsp.java.JavaJspGenerator.validate(JavaJspGenerator.java:466) at
com.caucho.jsp.JspCompilerInstance.generate(JspCompilerInstance.java:475) at
com.caucho.jsp.JspCompilerInstance.compile(JspCompilerInstance.java:373) at
com.caucho.jsp.JspManager.compile(JspManager.java:233) at
com.caucho.jsp.JspManager.createPage(JspManager.java:177) at
com.caucho.jsp.JspManager.createPage(JspManager.java:157) at
com.caucho.jsp.PageManager.getPage(PageManager.java:248) at
com.caucho.jsp.PageManager.getPage(PageManager.java:166) at
com.caucho.jsp.QServlet.getSubPage(QServlet.java:292) at
com.caucho.jsp.QServlet.getPage(QServlet.java:210) at
com.caucho.server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:206) at
com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:133) at
shared.filter.RemoteAddrFilterBase.doFilter(RemoteAddrFilterBase.java:57) at
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70) at
com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:115) at
com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:175) at
com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229) at
com.caucho.server.webapp.RequestDispatcherImpl.include(RequestDispatcherImpl.java:485) at
com.caucho.server.webapp.RequestDispatcherImpl.include(RequestDispatcherImpl.java:350) at
org.opencms.flex.CmsFlexRequestDispatcher.includeExternal(CmsFlexRequestDispatcher.java:194) at
org.opencms.flex.CmsFlexRequestDispatcher.include(CmsFlexRequestDispatcher.java:169) at
org.opencms.loader.CmsJspLoader.service(CmsJspLoader.java:1193) at
org.opencms.flex.CmsFlexRequestDispatcher.includeInternalWithCache(CmsFlexRequestDispatcher.java:423) at
org.opencms.flex.CmsFlexRequestDispatcher.include(CmsFlexRequestDispatcher.java:173) at
org.opencms.jsp.CmsJspTagInclude.includeActionWithCache(CmsJspTagInclude.java:364) ... 45 more


Thanks for the help!
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61226
    
  66

I'm not surprised. Why on Earth would you do that? Don't. It's not supported, and can come to no good.

What problem are you trying to solve by doing this?


[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
Tonya Bowen
Greenhorn

Joined: Mar 31, 2010
Posts: 4
No, we don't plan on mixing JSTL declarations. Doing so caused problems for us.

However, the fact that it causes an exception on one server but not on another server makes us distressed. There must be some difference in the way the servers are set up.

I was given the task of finding out what is causing this difference in behavior, and to be honest, I don't even know where to begin.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61226
    
  66

I'm puzzled. If it's not something you are going to do, why waste the time solving a problem that doesn't exist?
Tonya Bowen
Greenhorn

Joined: Mar 31, 2010
Posts: 4
Because we're trying to make sure that our Staging, Dev, and Production servers have the same configuration. This difference that we're seeing may be indicative of a larger problem.

Also, there are other factors that I cannot discuss. Let's just say that until this is figured out, I cannot move on to anything else.

Can you help me figure out what caused this problem?
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61226
    
  66

My guess would be that it's a race condition, over which you have no control at all, regarding which version of the library is getting loaded first. There's not much to be done except to avoid the situation in the first place.
Tonya Bowen
Greenhorn

Joined: Mar 31, 2010
Posts: 4
Well, if it were a race condition, I wouldn't be able to reproduce the error. Instead, I can reproduce it rather reliably. On my staging and production server, a JSP with mixed declarations always throws an exception. On my local machine and dev server, the page will always load without incident.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61226
    
  66

It could still be a race condition based upon environmental factors. But of course, it's impossible for me to say for sure.

But really, I still think that you are tilting at windmills. Sorry that I cannot be of more help.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: When I mix JSTL 1.0 and 1.1 taglib declarations, it causes a ParseException on some of my servers.