REST - Por que o arquivo do Excel gerado não é realmente criado quando tentado como aplicativo da web?
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
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