Question

J'ai besoin de quelques idées sur la meilleure façon de résoudre ce problème.

J'ai une application JBoss Seam s'exécutant sur JBoss 4.3.3 Une petite partie de cette application génère un code HTML et un document PDF basés sur un modèle Open Office.

Les fichiers générés sont placés dans / tmp / sur le système de fichiers. J'ai essayé avec System.getProperties (& Quot; tmp.dir & Quot;) et quelques autres options, et ils retournent toujours $ JBOSS_HOME / bin Je voudrais choisir le chemin $ JBOSS_HOME / $ DEPLOY / myEAR.ear / myWAR.war / WhateverLocationHere /

Cependant, je ne sais pas comment choisir un chemin par programmation sans donner un chemin absolu, ni définir $ JBOSS_HOME et $ DEPLOY.

Anybody know how I can do this?

La deuxième question; Je veux prévisualiser facilement ces fichiers générés. Soit par JavaScript, soit par n'importe quel moyen le plus simple. Cependant, JavaScript ne peut pas accéder au système de fichiers sur le serveur. Par conséquent, je ne peux pas ouvrir le fichier via JavaScript.

Any easy solutions out there?
Était-ce utile?

La solution

Vous ne savez pas comment vous générez vos PDF, mais si possible, ignorez les entrées-sorties du disque, cachez le contenu du PDF dans un byte[] et le vider à l'utilisateur dans une servlet définissant le type mime sur application/pdf * qui répond à une URL spécifiée par un lien dans votre client ou définie dynamiquement dans un <div> par javascript. Quoi qu'il en soit, vous allez probablement perdre de la mémoire et, en plus de sauter l'IO, vous n'avez pas à vous soucier de la suppression des fichiers tmp lorsque vous avez terminé l'aperçu.

***** Je pense que c'est vrai. Besoin de chercher.

Autres conseils

Je ne suis pas sûr de bien comprendre ce que vous essayez d'accomplir, mais je vais quand même essayer:

Mon hypothèse est que votre objectif final est de mettre certains fichiers (PDF, HTML) à la disposition des utilisateurs finaux via une application Web.

Dans ce cas, pourquoi ne pas demander à Apache de servir ce fichier aux utilisateurs finaux, votre application JBOSS doit donc connaître le chemin d'accès d'un répertoire mappé à un hôte virtuel Apache.

Donc, en gros, créez un fichier et enregistrez-le sous le nom /var/www/html/myappfiles/tempfile.pdf (le dossier que votre application connaît), puis indiquez http://mydomain.com/myappfiles (un hôte virtuel Apache) pour vos utilisateurs. Le reste sera effectué par le serveur Web.

Vous devrez définir une variable d'environnement ou une propriété système pour que votre application sache où réside votre dossier (/ var / www / html / myappfiles / dans cet exemple).

J'espère que je n'étais pas très loin:)

  1. Je suis d'accord avec Peter (yo Pete!). Placez le répertoire en dehors de votre fichier WAR et configurez une variable d'environnement pointant vers celle-ci. Lisez cette cette publication de Jacob Orshalick sur la configuration des variables d’environnement dans Seam:

  2. En ce qui concerne la prévisualisation de fichiers PDF, examinez la façon dont Google Documents gère la prévisualisation de PDF - il les affiche sous forme d'image. Pour ce faire avec Java, consultez le Rendu PDF de Sun .

Je ne sais pas si cela fonctionne dans JBoss, étant donné que vous voulez un chemin dans une archive WAR, mais vous pouvez essayer d'utiliser ServletContext.getRealPath (String) .

Cependant, personnellement, je ne voudrais pas que les fichiers générés soient à l'intérieur de mon application déployée; à la place, je configurerais un répertoire de données externe quelque part comme $JBOSS_HOME/server/default/data/myapp

  • Tout d'abord, la plupart des plateformes utilisent java.io.tmpdir pour définir un répertoire temporaire. Certains conteneurs de servlets redéfinissent cette propriété comme étant quelque chose sous leur arbre. Pourquoi vous souciez-vous où le fichier est écrit?
  • Deuxièmement, je suis d’accord avec Nicholas: après avoir généré le fichier PDF côté serveur, vous pouvez générer une URL qui, lorsque vous cliquez dessus, envoie le fichier au navigateur. Si vous utilisez le type MIME application/pdf, le navigateur doit en faire le bon choix.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top