You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Erica Kane (JIRA)" <ji...@apache.org> on 2017/12/05 19:49:00 UTC

[jira] [Created] (WW-4900) NotSerializableException: com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector when using ExecuteAndWait interceptor

Erica Kane created WW-4900:
------------------------------

             Summary: NotSerializableException: com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector when using ExecuteAndWait interceptor
                 Key: WW-4900
                 URL: https://issues.apache.org/jira/browse/WW-4900
             Project: Struts 2
          Issue Type: Bug
            Reporter: Erica Kane


We are running Struts 2.5.14.1 and working on externalizing Tomcat session state. This requires Serializable sessions. However, our Action with the ExecuteAndWait interceptor fails. Since our original code was quite complex I wrote a simpler one below which demonstrates the exact same behavior.

The simple action is shown here:

package com.sentrylink.web.actions;

import java.util.concurrent.TimeUnit;

import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
@Results({
    @Result(name="wait", location="/"),
    @Result(name=ActionSupport.SUCCESS, location="/WEB-INF/content/messagePage.jsp"),
})
@InterceptorRefs({
    @InterceptorRef("webStack"),
    @InterceptorRef("execAndWait")
})
public class TestExecuteAndWait extends ActionSupport {

    public String execute() throws Exception {
        TimeUnit.SECONDS.sleep(10);
        return SUCCESS;
    }
}

Running this gives

WARNING: Cannot serialize session attribute __execWaittest-execute-and-wait for session 74CDB9F8D00BBC697030AFC6978E94F6 
java.io.NotSerializableException: com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector

Removing the ExecuteAndWait interceptor fixes the issue.

According to [~yasser.zamani] in WW-4873 : I reviewed {{ExecuteAndWaitInterceptor}} and seems has this bug when session goes to being serialized in middle of an background process.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)