REST - Por que o arquivo do Excel gerado não é realmente criado quando tentado como aplicativo da web?

StackOverflow https://stackoverflow.com/questions/4614282

Pergunta

Eu criei simples REST web app Isso criaria Excel file e colocar em current directory.Mas, de alguma forma, o Excel gerado não está no diretório. Na verdade, nem está sendo criado.

A saída "done" é mostrado em GlassFish server log Portanto, o processo realmente chega ao fim sem nenhum erro. A única coisa que suspeito é o caminho do arquivo que estou especificando para "MyExcelfilethathat WouldNotShowup".

Eu dei caminho completo ou caminho relativo que consigo pensar, mas o arquivo do Excel ainda não está aparecendo. Interessantemente, Se eu não executar isso como aplicativo da web (ou seja, colocar o código na função local main () e executá -lo, ele funciona)Assim, acho que algo a ver com Glassfish, mas não consigo descobrir :(

  • Glassfish v3
  • REST / JAX-RS
  • Excella Framework para gerar planilha do Excel a partir do modelo (myTemplate.xls)

Fragmento de código

    @Path("horizontalProcess")
    @GET
    @Produces("application/xml")
    public String getProcessHorizontally() {

        try {
            URL templateFileUrl = this.getClass().getResource("myTemplate.xls");

            //  getPath() outputs... 
            //  /C:/Users/m-takayashiki/Documents/NetBeansProjects/KogaAlpha/build/web/WEB-INF/classes/local/test/jaxrs/myTemplate.xls
            System.out.println(templateFileUrl.getPath());

            String templateFilePath = URLDecoder.decode(templateFileUrl.getPath(), "UTF-8");

            //specify output path which is current dir and should create
            //myExcelFileThatWouldNotShowup.xls but it is not..
            String outputFileDir = "myExcelFileThatWouldNotShowUp";

            //<<template path>>,  <<output path>>,  <<file format>>
            ReportBook outputBook = new ReportBook(templateFilePath, outputFileDir, ExcelExporter.FORMAT_TYPE);

            ReportSheet outputSheet = new ReportSheet("myExcelSheet");
            outputBook.addReportSheet(outputSheet);

            //this is printed out so process actually gets here
            System.out.println("done!!");
        }
        catch(Exception e) {
            System.out.println(e);
        }


        return null;
    }//end method
Foi útil?

Solução

É por isso que não se deve codificar quando o cansado/horas extras funcionou ....

Esqueci de adicionar 2 linhas de código no final que realmente geram o Excel ... me custou algumas horas de depuração .. (não pergunte como eu estava depurando: P

ReportProcessor reportProcessor = new ReportProcessor();
 reportProcessor.process(outputBook);

BTW, o arquivo gerado é armazenado no dir abaixo como padrão se você não especificar.

 //C:\Users\m-takayashiki\.netbeans\6.9\config\GF3\domain1
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top