REST - Pourquoi fichier généré Excel est pas réellement créé lorsque essayé comme application web?
Question
J'ai créé REST web app
simple qui créerait Excel file
et mis en current directory.
Mais en quelque sorte Excel généré est pas dans le répertoire. En fait, il est même pas créé.
Le "done"
de sortie est affichée dans GlassFish server log
sorte que le processus réellement arriver à la fin, sans aucune erreur. La seule chose que je soupçonnais est le chemin du fichier je spécifier pour « myExcelFileThatWouldNotShowUp ».
J'ai donné chemin complet ou relatif, je peux penser, mais le fichier Excel est pas apparaissent-elles encore. Fait intéressant, si je ne cours pas comme application web (par exemple mettre le code dans la fonction principale () et le lancer, cela fonctionne) Ainsi, je pense que quelque chose à voir avec GlassFish mais ne peut pas vraiment comprendre: (
- GlassFish v3
- REST / JAX-RS
- Cadre Excella pour générer une feuille de calcul Excel à partir du modèle (myTemplate.xls)
Extrait de code
@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
La solution
Voilà pourquoi il ne faut pas le code lorsque vous êtes fatigué / heures supplémentaires travaillées ....
J'ai oublié d'ajouter 2 lignes de code à la fin qui génèrent en fait l'excel ... me coûter quelques heures de débogage .. (ne demandez pas comment je le débogage: p
ReportProcessor reportProcessor = new ReportProcessor();
reportProcessor.process(outputBook);
BTW, fichier généré sont stockés dans le répertoire par défaut ci-dessous si vous ne spécifiez pas.
//C:\Users\m-takayashiki\.netbeans\6.9\config\GF3\domain1