[
https://issues.apache.org/jira/browse/WW-5402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17842894#comment-17842894
]
Patrice DUROUX commented on WW-5402:
------------------------------------
Hi,
In my case, simply switching from 6.3.0.2 to 6.4.0 introduces a regression that
seems to me related to this issue and I do not see any Migration Guide for
6.4.0 related to that.
Here is the runtime exception:
{{10:37:50.377 [http-nio-8080-exec-2] WARN
org.apache.struts2.views.tiles.TilesResult - could not find @TilesDefinition
for action: }}
{{10:37:50.385 [http-nio-8080-exec-2] ERROR
org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler - Exception
occurred during processing request: Cannot find definition named 'XXXXXXXX'}}
{{org.apache.tiles.core.definition.NoSuchDefinitionException: Cannot find
definition named 'XXXXXXXX'}}
{{ at
org.apache.tiles.core.impl.mgmt.CachingTilesContainer.render(CachingTilesContainer.java:108)
~[struts2-tiles-plugin-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:140)
~[struts2-tiles-plugin-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:206)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:377)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:284)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.imgt.util.AuthenticationInterceptor.intercept(AuthenticationInterceptor.java:59)
~[classes/:?]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at org.imgt.util.MapInterceptor.intercept(MapInterceptor.java:110)
~[classes/:?]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:260)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.FetchMetadataInterceptor.intercept(FetchMetadataInterceptor.java:78)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.CoopInterceptor.intercept(CoopInterceptor.java:57)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.CoepInterceptor.intercept(CoepInterceptor.java:55)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:143)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.parameter.ParametersInterceptor.doIntercept(ParametersInterceptor.java:204)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.parameter.ParametersInterceptor.doIntercept(ParametersInterceptor.java:204)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:202)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.ActionFileUploadInterceptor.intercept(ActionFileUploadInterceptor.java:142)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:200)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:161)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.csp.CspInterceptor.intercept(CspInterceptor.java:60)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.httpmethod.HttpMethodInterceptor.intercept(HttpMethodInterceptor.java:99)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:154)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:229)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48)
~[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:703)
[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79)
[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.handleRequest(StrutsPrepareAndExecuteFilter.java:157)
[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.tryHandleRequest(StrutsPrepareAndExecuteFilter.java:140)
[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:128)
[struts2-core-6.4.0.jar:6.4.0]}}
{{ at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:169)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
[catalina.jar:9.0.88]}}
{{ at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
[catalina.jar:9.0.88]}}
{{ at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
[tomcat-coyote.jar:9.0.88]}}
{{ at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
[tomcat-coyote.jar:9.0.88]}}
{{ at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
[tomcat-coyote.jar:9.0.88]}}
{{ at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786)
[tomcat-coyote.jar:9.0.88]}}
{{ at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
[tomcat-coyote.jar:9.0.88]}}
{{ at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
[tomcat-util.jar:9.0.88]}}
{{ at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
[tomcat-util.jar:9.0.88]}}
{{ at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
[tomcat-util.jar:9.0.88]}}
{{ at java.base/java.lang.Thread.run(Thread.java:840) [?:?]}}
The {{/WEB-INF/tiles.xml}} of this module has not been moved or modified.
Any thing I can do to help on this?
> Auto loading the Tiles definition files from the classpath dependent JAR
> ------------------------------------------------------------------------
>
> Key: WW-5402
> URL: https://issues.apache.org/jira/browse/WW-5402
> Project: Struts 2
> Issue Type: New Feature
> Components: Plugin - Tiles
> Affects Versions: 6.3.0
> Reporter: Saravanan Sivaguru
> Priority: Major
> Fix For: 6.4.0
>
> Time Spent: 50m
> Remaining Estimate: 0h
>
> Hi Team
> Currently we are able to load all the tiles definition files if it is
> available under the WEB-INF folder with file name convention tiles*.xml. But
> we are unable to load the tiles definition files which is available as a part
> of the dependent jar files /WEB-INF/lib folders even though the file name
> convention starts with tiles*.xml
> Need to enhance the feature to also look on the associated library files for
> the tiles definitions.
> (OR)
> We need to enhance the another existing approach of defining the tiles
> definition files with the below param,
> org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG
> With this param currently we cannot load the tiles definition files unless we
> have defined the parameter value as complete actual file path
> Current acceptance - /WEB-INF/config/tiles/com.acnielsen.ftms.tiles.xml
> Proposed (Wildcard usage)- /WEB-INF/config/tiles/*.tiles.xml
> Additionally the current definition scope will only scan files within
> application again it is not scanning on the lib files available under the
> classpath
> Proposed - classpath*:/META-INF/*.tiles.xml
--
This message was sent by Atlassian Jira
(v8.20.10#820010)