execAndWait in 2.1.6 gives the following exception when it kicks in: (code 
pasted below)


java.lang.UnsupportedOperationException 
??? java.util.Collections$UnmodifiableMap.put(Collections.java:1285)
??? 
org.apache.struts2.interceptor.ExecuteAndWaitInterceptor.doIntercept(ExecuteAndWaitInterceptor.java:256)
??? 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
??? 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
??? 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
??? 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
??? 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
??? org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
??? org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
??? 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
??? 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
??? 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
??? 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
??? 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
??? 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
??? 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
??? 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
??? org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
??? org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
??? 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
??? org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
??? java.lang.Thread.run(Thread.java:619)


CODE:

Input JSP: (WEB-INF/content/all/index.jsp

<%@ taglib prefix="s" uri="/struts-tags"%>

<html>
??? <head>
??? ??? <title>Hello World</title>
??? </head>
??? <body>
??? ??? <h3>
??? ??? ??? Enter Your Name
??? ??? </h3>
??? ??? <div>
??? ??? ??? <s:form action="say-hello">
??? ??? ??? ??? <s:textfield label="Name:" name="userName" size="30" 
maxlength="30" />
??? ??? ??? ??? <s:submit value="Submit" />
??? ??? ??? </s:form>
??? ??? </div>
??? </body>

</html>

============
Configuration (struts.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
??? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
??? "http://struts.apache.org/dtds/struts-2.0.dtd";>

<struts>
??? <constant name="struts.enable.DynamicMethodInvocation" value="false" />
??? <constant name="struts.devMode" value="true" />
??? <constant name="struts.convention.classes.reload" value="true" />
??? <constant name="struts.convention.action.disableScanning" value="true" />
??? 
??? <package name="all" namespace="/all" extends="struts-default">
??? ??? <action name="say-hello" class="actions.all.SayHelloAction">
??? ??? ??? <interceptor-ref name="params" />
??? ??? ??? 
??? ??? ??? <interceptor-ref name="execAndWait">
??? ??? ??? ??? <param name="delay">1000</param>
??? ??? ??? ??? <param name="delaySleepInterval">50</param>
??? ??? ??? </interceptor-ref>
??? ??? ??? 
??? ??? ??? <result name="success">/WEB-INF/content/all/say-hello-success.jsp
??? ??? ??? </result>
??? ??? </action>
??? </package>
</struts>

=======

Action (actions.all.SayHelloAction.java)

package actions.all;

import java.util.Date;

public class SayHelloAction{

??? private static final long serialVersionUID = 1L;

??? private String userName;

??? public String execute() throws Exception {
??? ??? wasteTime(10000);
??? ??? return "success";
??? }

??? public String getUserName() {
??? ??? return userName;
??? }

??? public void setUserName(String userName) {
??? ??? this.userName = userName;
??? }
??? 
??? private void wasteTime(long time){
??? ??? long start = new Date().getTime();
??? ??? while(new Date().getTime()-start < time){
??? ??? ??? try {
??? ??? ??? ??? Thread.sleep(100L);
??? ??? ??? } catch (InterruptedException e) {
??? ??? ??? ??? e.printStackTrace();
??? ??? ??? }
??? ??? }
??? }
}

=====

Output page (WEB-INF/content/all/say-hello-success.jsp)

<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
??? <head>
??? ??? <title>Hello Success</title>
??? </head>
??? <body>
??? Hello <s:property value="userName" />
??? </body>
</html>



Cheers
Chris M.

Reply via email to