[
https://issues.apache.org/jira/browse/WW-5525?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Fabrice Bibonne updated WW-5525:
--------------------------------
Description:
In a jsp, if I use a tag such as {{{}<s:property value="(new
sample.ToBeInstanced('test')).getValue()" />{}}}, there is a silent failure
when the jsp is processed : the value of the tag is not printed out because of
silent NPE (the error is displayed in dev mode)
The error can be reproduced from this repository :
[https://github.com/FBibonne/basic-Struts-tag-error]
The first analyze indicates a bug inside the
{{org.apache.struts2.ognl.SecurityMemberAccess}} : it appears when an ognl
expression such as{{ (new com.mycompany.MyClass()).method()}}
While processing security checks before the ognl runtime calls the constructor,
the program executes the method
_org.apache.struts2.ognl.SecurityMemberAccess#isAccessible_
Inside this method, we pass through _the case where target is a class object_ .
At the end of this block, the {{target}} becomes null (line 153). So the next
test
({_}org.apache.struts2.ognl.SecurityMemberAccess#checkProxyObjectAccess{_},
line 160) is executed with target as null. But as {{checkProxyObjectAccess}}
calls {{ProxyUtil.isProxy(target)}} with target as null, it raises a
NullPointerException.
Here is the error message in the log in devMode :
??2025-01-30 17:46:25,994 WARN [qtp1633770314-52] ognl.OgnlValueStack
(OgnlValueStack.java:422) - Caught an exception while evaluating expression
'new sample.ToBeInstanced('test').getValue()' against value stack??
??java.lang.NullPointerException: Cannot invoke "Object.getClass()" because
"object" is null??
?? at org.apache.struts2.util.ProxyUtil.isProxy(ProxyUtil.java:84)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.ognl.SecurityMemberAccess.checkProxyObjectAccess(SecurityMemberAccess.java:327)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.ognl.SecurityMemberAccess.isAccessible(SecurityMemberAccess.java:162)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at ognl.OgnlRuntime.isAccessible(OgnlRuntime.java:4168)
~[ognl-3.3.5.jar:?]??
?? at ognl.OgnlRuntime.callConstructor(OgnlRuntime.java:2065)
~[ognl-3.3.5.jar:?]??
?? at ognl.ASTCtor.getValueBody(ASTCtor.java:126) ~[ognl-3.3.5.jar:?]??
?? at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
~[ognl-3.3.5.jar:?]??
?? at ognl.SimpleNode.getValue(SimpleNode.java:258) ~[ognl-3.3.5.jar:?]??
?? at ognl.ASTChain.getValueBody(ASTChain.java:141) ~[ognl-3.3.5.jar:?]??
?? at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
~[ognl-3.3.5.jar:?]??
?? at ognl.SimpleNode.getValue(SimpleNode.java:258) ~[ognl-3.3.5.jar:?]??
?? at ognl.Ognl.getValue(Ognl.java:586) ~[ognl-3.3.5.jar:?]??
?? at org.apache.struts2.ognl.OgnlUtil.ognlGet(OgnlUtil.java:425)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at org.apache.struts2.ognl.OgnlUtil.getValue(OgnlUtil.java:405)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.ognl.OgnlValueStack.tryFindValue(OgnlValueStack.java:389)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.ognl.OgnlValueStack.tryFindValueWhenExpressionIsNotNull(OgnlValueStack.java:359)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:343)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at org.apache.struts2.components.Property.start(Property.java:149)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:49)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.jsp.index_jsp._jspx_meth_s_005fproperty_005f0(index_jsp.java:174)
~[?:?]??
?? at org.apache.jsp.index_jsp._jspService(index_jsp.java:138) ~[?:?]??
?? at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
~[apache-jsp-10.0.14.jar:10.0.14]??
?? at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
~[jetty-jakarta-servlet-api-5.0.2.jar:?]??
?? at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
~[apache-jsp-10.0.14.jar:10.0.14]??
?? at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
~[apache-jsp-10.0.14.jar:10.0.14]??
?? at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
~[apache-jsp-10.0.14.jar:10.0.14]??
?? at
org.eclipse.jetty.jsp.JettyJspServlet.service(JettyJspServlet.java:101)
~[apache-jsp-11.0.18.jar:11.0.18]??
?? at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
~[jetty-jakarta-servlet-api-5.0.2.jar:?]??
?? at
org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1419)
~[?:?]??
?? at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
~[?:?]??
?? at
org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665)
~[?:?]??
?? at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
~[?:?]??
?? at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:616)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
~[?:?]??
?? at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
~[?:?]??
?? at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
~[?:?]??
?? at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
~[?:?]??
?? at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:215)
~[?:?]??
?? at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:135)
~[?:?]??
?? at
org.apache.struts2.result.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:176)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:206)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:389)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:296)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:252)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:181)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.FetchMetadataInterceptor.intercept(FetchMetadataInterceptor.java:78)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.CoopInterceptor.intercept(CoopInterceptor.java:57)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.CoepInterceptor.intercept(CoepInterceptor.java:55)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:140)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.parameter.ParametersInterceptor.doIntercept(ParametersInterceptor.java:212)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.parameter.ParametersInterceptor.doIntercept(ParametersInterceptor.java:212)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:202)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:69)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:92)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.ActionFileUploadInterceptor.intercept(ActionFileUploadInterceptor.java:144)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:166)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.csp.CspInterceptor.intercept(CspInterceptor.java:66)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:138)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.httpmethod.HttpMethodInterceptor.intercept(HttpMethodInterceptor.java:99)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:156)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:228)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:51)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:721)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.handleRequest(StrutsPrepareAndExecuteFilter.java:154)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.tryHandleRequest(StrutsPrepareAndExecuteFilter.java:137)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:125)
~[struts2-core-7.0.0.jar:7.0.0]??
?? at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
~[?:?]??
?? at
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
~[?:?]??
?? at
org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:170)
~[websocket-servlet-11.0.18.jar:11.0.18]??
?? at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
~[?:?]??
?? at
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
~[?:?]??
?? at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
~[?:?]??
?? at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
~[?:?]??
?? at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
~[?:?]??
?? at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
~[?:?]??
?? at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
~[?:?]??
?? at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
~[?:?]??
?? at org.eclipse.jetty.server.Server.handle(Server.java:563) ~[?:?]??
?? at
org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
~[?:?]??
?? at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
~[?:?]??
?? at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
~[?:?]??
?? at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)
~[?:?]??
?? at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
~[?:?]??
?? at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
~[?:?]??
?? at
org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
~[?:?]??
?? at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)
~[?:?]??
?? at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)
~[?:?]??
?? at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)
~[?:?]??
?? at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:193)
~[?:?]??
?? at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
~[?:?]??
?? at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
~[?:?]??
?? at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
~[?:?]??
?? at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]??
was:
In a jsp, if I use a tag such as `<s:property value="new
sample.ToBeInstanced('test').getValue()" />`, there is a silent failure when
the jsp is processed : the value of the tag is not printed out because of
silent NPE (the error is displayed in dev mode)
The error can be reproduced from this repository :
[https://github.com/FBibonne/basic-Struts-tag-error]
The first analyze indicates a bug inside the
`org.apache.struts2.ognl.SecurityMemberAccess` : it appears when an ognl
expression such as `(new com.mycompany.MyClass()).method()`
While processing security checks before the ognl runtime calls the constructor,
the program executes the method
`org.apache.struts2.ognl.SecurityMemberAccess#isAccessible`
Inside this method, we pass through _the case where target is a class object_ .
At the end of this block, the `target` becomes null (line 153). So the next
test (`org.apache.struts2.ognl.SecurityMemberAccess#checkProxyObjectAccess`,
line 160)
Is executed with target as null. But as `checkProxyObjectAccess ` calls `
ProxyUtil.isProxy(target)` with target as null, it raises a
NullPointerException.
> NPE raised when using `new` in a ognl expression in a tag
> ---------------------------------------------------------
>
> Key: WW-5525
> URL: https://issues.apache.org/jira/browse/WW-5525
> Project: Struts 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 7.0.0
> Reporter: Fabrice Bibonne
> Priority: Major
>
> In a jsp, if I use a tag such as {{{}<s:property value="(new
> sample.ToBeInstanced('test')).getValue()" />{}}}, there is a silent failure
> when the jsp is processed : the value of the tag is not printed out because
> of silent NPE (the error is displayed in dev mode)
>
> The error can be reproduced from this repository :
> [https://github.com/FBibonne/basic-Struts-tag-error]
>
> The first analyze indicates a bug inside the
> {{org.apache.struts2.ognl.SecurityMemberAccess}} : it appears when an ognl
> expression such as{{ (new com.mycompany.MyClass()).method()}}
> While processing security checks before the ognl runtime calls the
> constructor, the program executes the method
> _org.apache.struts2.ognl.SecurityMemberAccess#isAccessible_
> Inside this method, we pass through _the case where target is a class object_
> . At the end of this block, the {{target}} becomes null (line 153). So the
> next test
> ({_}org.apache.struts2.ognl.SecurityMemberAccess#checkProxyObjectAccess{_},
> line 160) is executed with target as null. But as {{checkProxyObjectAccess}}
> calls {{ProxyUtil.isProxy(target)}} with target as null, it raises a
> NullPointerException.
>
> Here is the error message in the log in devMode :
>
> ??2025-01-30 17:46:25,994 WARN [qtp1633770314-52] ognl.OgnlValueStack
> (OgnlValueStack.java:422) - Caught an exception while evaluating expression
> 'new sample.ToBeInstanced('test').getValue()' against value stack??
> ??java.lang.NullPointerException: Cannot invoke "Object.getClass()" because
> "object" is null??
> ?? at org.apache.struts2.util.ProxyUtil.isProxy(ProxyUtil.java:84)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.ognl.SecurityMemberAccess.checkProxyObjectAccess(SecurityMemberAccess.java:327)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.ognl.SecurityMemberAccess.isAccessible(SecurityMemberAccess.java:162)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at ognl.OgnlRuntime.isAccessible(OgnlRuntime.java:4168)
> ~[ognl-3.3.5.jar:?]??
> ?? at ognl.OgnlRuntime.callConstructor(OgnlRuntime.java:2065)
> ~[ognl-3.3.5.jar:?]??
> ?? at ognl.ASTCtor.getValueBody(ASTCtor.java:126) ~[ognl-3.3.5.jar:?]??
> ?? at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
> ~[ognl-3.3.5.jar:?]??
> ?? at ognl.SimpleNode.getValue(SimpleNode.java:258) ~[ognl-3.3.5.jar:?]??
> ?? at ognl.ASTChain.getValueBody(ASTChain.java:141) ~[ognl-3.3.5.jar:?]??
> ?? at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
> ~[ognl-3.3.5.jar:?]??
> ?? at ognl.SimpleNode.getValue(SimpleNode.java:258) ~[ognl-3.3.5.jar:?]??
> ?? at ognl.Ognl.getValue(Ognl.java:586) ~[ognl-3.3.5.jar:?]??
> ?? at org.apache.struts2.ognl.OgnlUtil.ognlGet(OgnlUtil.java:425)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at org.apache.struts2.ognl.OgnlUtil.getValue(OgnlUtil.java:405)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.ognl.OgnlValueStack.tryFindValue(OgnlValueStack.java:389)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.ognl.OgnlValueStack.tryFindValueWhenExpressionIsNotNull(OgnlValueStack.java:359)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:343)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at org.apache.struts2.components.Property.start(Property.java:149)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:49)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.jsp.index_jsp._jspx_meth_s_005fproperty_005f0(index_jsp.java:174)
> ~[?:?]??
> ?? at org.apache.jsp.index_jsp._jspService(index_jsp.java:138) ~[?:?]??
> ?? at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
> ~[apache-jsp-10.0.14.jar:10.0.14]??
> ?? at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
> ~[jetty-jakarta-servlet-api-5.0.2.jar:?]??
> ?? at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
> ~[apache-jsp-10.0.14.jar:10.0.14]??
> ?? at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
> ~[apache-jsp-10.0.14.jar:10.0.14]??
> ?? at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
> ~[apache-jsp-10.0.14.jar:10.0.14]??
> ?? at
> org.eclipse.jetty.jsp.JettyJspServlet.service(JettyJspServlet.java:101)
> ~[apache-jsp-11.0.18.jar:11.0.18]??
> ?? at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
> ~[jetty-jakarta-servlet-api-5.0.2.jar:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1419)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:616)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
> ~[?:?]??
> ?? at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:215)
> ~[?:?]??
> ?? at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:135)
> ~[?:?]??
> ?? at
> org.apache.struts2.result.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:176)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:206)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:389)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:296)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:252)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:181)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.FetchMetadataInterceptor.intercept(FetchMetadataInterceptor.java:78)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.CoopInterceptor.intercept(CoopInterceptor.java:57)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.CoepInterceptor.intercept(CoepInterceptor.java:55)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:140)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.parameter.ParametersInterceptor.doIntercept(ParametersInterceptor.java:212)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.parameter.ParametersInterceptor.doIntercept(ParametersInterceptor.java:212)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:202)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:69)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:92)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.ActionFileUploadInterceptor.intercept(ActionFileUploadInterceptor.java:144)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:166)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.csp.CspInterceptor.intercept(CspInterceptor.java:66)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:138)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.httpmethod.HttpMethodInterceptor.intercept(HttpMethodInterceptor.java:99)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:156)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:228)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:311)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:51)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:721)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.handleRequest(StrutsPrepareAndExecuteFilter.java:154)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.tryHandleRequest(StrutsPrepareAndExecuteFilter.java:137)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:125)
> ~[struts2-core-7.0.0.jar:7.0.0]??
> ?? at
> org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:170)
> ~[websocket-servlet-11.0.18.jar:11.0.18]??
> ?? at
> org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> ~[?:?]??
> ?? at org.eclipse.jetty.server.Server.handle(Server.java:563) ~[?:?]??
> ?? at
> org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
> ~[?:?]??
> ?? at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
> ~[?:?]??
> ?? at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
> ~[?:?]??
> ?? at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:193)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
> ~[?:?]??
> ?? at
> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
> ~[?:?]??
> ?? at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]??
--
This message was sent by Atlassian Jira
(v8.20.10#820010)