REST - Pourquoi fichier généré Excel est pas réellement créé lorsque essayé comme application web?

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

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
Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top