Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-users] Problem with JSTL on Jetty 12

Hi.

We randomly get this error in our Jetty 12 application which uses JSTL (ee10-jstl.mod).  I say random (race condition? classpath conflict?) because the same URL/JSP that generates the error works OK when reloading.  We only see it randomly in production and cannot reproduce it locally.

org.apache.jasper.JasperException: java.lang.NullPointerException: Cannot invoke "jakarta.servlet.jsp.tagext.BodyContent.getString()" because "this.bodyContent" is null
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:490)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:377)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:325)
        at org.eclipse.jetty.ee10.jsp.JettyJspServlet.service(JettyJspServlet.java:101)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
        at org.eclipse.jetty.ee10.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1379)
        at org.eclipse.jetty.ee10.servlet.ServletHolder.handle(ServletHolder.java:736)
        at org.eclipse.jetty.ee10.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1614)
        at org.eclipse.jetty.ee10.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1547)
        at org.eclipse.jetty.ee10.servlet.Dispatcher.forward(Dispatcher.java:126)
        ...
        at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:208)
        at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1586)
        at org.eclipse.jetty.ee10.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1547)
        at org.eclipse.jetty.ee10.servlet.ServletChannel.dispatch(ServletChannel.java:819)
        at org.eclipse.jetty.ee10.servlet.ServletChannel.handle(ServletChannel.java:436)
        at org.eclipse.jetty.ee10.servlet.ServletHandler.handle(ServletHandler.java:464)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575)
        at org.eclipse.jetty.ee10.servlet.SessionHandler.handle(SessionHandler.java:717)
        at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:151)
        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:611)
        at org.eclipse.jetty.server.Server.handle(Server.java:182)
        at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:662)
        at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:418)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
        at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
        at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.NullPointerException: Cannot invoke "jakarta.servlet.jsp.tagext.BodyContent.getString()" because "this.bodyContent" is null
        at org.apache.taglibs.standard.tag.common.fmt.ParamSupport.doEndTag(ParamSupport.java:84)
        at org.apache.jsp.WEB_002dINF.jsp.search_005flink_005fnew_jsp._jspService(search_005flink_005fnew_jsp.java:517)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:67)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:456)
        ... 51 more

       
      
We have not configured properties ee10.jakarta.servlet.jsp.jstl.api.version and ee10.jakarta.servlet.jsp.jstl.impl.version so it should be using the default versions (3.0.0 and 3.0.1).

I think we started seeing these errors after we migrated to Jetty 12.

Currently we are using the jakarta.tags namespace to define tags:
<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %>

but the same problem was happening when using the old format:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>


Any idea about why this is happening and how to fix it?

Óscar



Back to the top