Faça o upload de vários arquivos de uma só vez para uma @Ação Struts2

Eu preciso fazer o upload de "1000 arquivos" ou "um arquivo zip incluindo todos os arquivos" ao mesmo tempo usando o Struts2. (Por 1000 arquivos ou um arquivo zip, quero dizer que eu preciso de todos os arquivos para ser carregado no sistema, não importa se o usuário escolher todos os 1000 arquivos de uma só vez ou zip-los e fazer o upload como um único arquivo, então eu estou procurando aquele que é mais fácil de implementar e mais eficiente)

Eu li as seguintes respostas, mas nenhuma delas atende ao propósito.

Upload de arquivo Struts2Como posso selecionar e carregar vários arquivos com HTML e PHP, usando HTTP POST?

Usando o seguinte código, quando eu uso um simples arquivo de lista; Ele mostra o nome das listas, mas quando eu uso arquivos de lista, ele não mostra nada e eu não posso fazer o upload dos arquivos.

upload.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="upload" enctype="multipart/form-data" method="post">
            <input name="files" type="file" multiple/>
            <button type="submit"/>
        </form>
    </body>
</html>

upload.java

@Action
public class upload implements Addresses {

    private List <File> files = new ArrayList <File> ();

    public String execute(){

        return "success";
    }
    public upload() {
        System.out.println("in upload 1");

         for(int i=0;i<files.size();i++)
            System.out.println(i + ")" + files.get(i));

        System.out.println("in upload 2");
    }

    public List <File> getFiles() {
        return files;
    }

    public void setFiles(List <File> files) {
        this.files = files;
        for(int i=0;i<files.size();i++)
            System.out.println(i + ")" + files.get(i));
//            File fileToCreate = new File("c:\image", files.get(i).toString());
//            FileUtils.copyFile(files.get(i), fileToCreate);
    }
}

Saída

in upload 1
in upload 2