Frage

Ich brauche ein paar Ideen, wie ich dieses Problem am besten lösen kann.

Ich habe eine JBoss Seam-Anwendung auf JBoss läuft 4.3.3 Was für ein kleinen Teil dieser Anwendung tut, ist eine HTML erzeugen und ein PDF-Dokument auf der Basis einer Open Office-Vorlage.

Die Dateien, die generiert werden, ich hineingelegt / tmp / auf dem Dateisystem. Ich habe mit System.getProperties versucht ( „tmp.dir“) und einigen anderen Optionen, und sie immer wieder zurückkehren $ JBOSS_HOME / ist Ich möchte den Weg $ JBOSS_HOME / $ DEPLOY / myEAR.ear / myWAR.war / WhateverLocationHere /

wählen

Allerdings weiß ich nicht, wie ich programmatisch Weg ohne Angabe einen absoluten Pfad wählen, oder $ JBOSS_HOME und $ DEPLOY Einstellung.

Anybody know how I can do this?

Die zweite Frage; Ich will einfach diese generierten Dateien in der Vorschau. Entweder durch JavaScript oder was auch immer der einfachste Weg ist. Allerdings kann JavaScript nicht das Dateisystem auf dem Server zugreifen, so kann ich die Datei durch JavaScript nicht öffnen.

Any easy solutions out there?
War es hilfreich?

Lösung

Nicht sicher, wie Sie Ihre PDF-Dateien erzeugen, aber wenn möglich, lassen Sie die Scheibe IO alle zusammen, die PDF-Inhalte in einem byte[] bunkern und spülen Sie den MIME-Typ Einstellung in einem Servlet an den Benutzer aus * application/pdf, die reagiert auf eine URL, die durch einen Link in Ihrem Client oder dynamisch festgelegt in einem <div> von Javascript angegeben ist. Du bist wahrscheinlich sowieso, und zusätzlich zu Überspringen der IO traf den Speicher nehmen, Sie müssen nicht über das Löschen der tmp-Dateien Sorgen machen, wenn Sie mit der Vorschau fertig sind.

***** Ich denke, das ist richtig. Sie benötigen es nachzuschlagen.

Andere Tipps

Nicht sicher, dass ich ein komplettes Verständnis von dem, was Sie versuchen zu erreichen, aber ich werde es versuchen trotzdem:

Meine Vermutung ist, dass Ihr Endziel ist es, einige Dateien (PDF, HTML) zur Verfügung, an Endbenutzer über eine Web-Anwendung zu machen.

In diesem Fall, warum nicht haben Apache jene Datei an die Endbenutzer dienen, so brauchen Sie nur Ihre JBOSS-Anwendung den Pfad eines Verzeichnisses zu wissen, die zu einem Apache virtuellen Host zugeordnet ist.

Also im Grunde eine Datei und speichern Sie sie als /var/www/html/myappfiles/tempfile.pdf (der Ordner Ihrer Anwendung kennt), und geben Sie dann http://mydomain.com/myappfiles (ein Apache Virtual Host) an den Benutzer. Der Rest wird vom Web-Server durchgeführt werden.

Sie haben eine Umgebungsvariable oder Systemeigenschaft setzen Ihre Anwendung zu informieren, wo Ihre Ordner befinden (/ var / www / html / myappfiles / in diesem Beispiel).

Hoffentlich war ich nicht weg:)

  1. Ich bin mit Peter (yo Pete!). Legen Sie das Verzeichnis außerhalb Ihres WAR und das Setup eine Umgebungsvariable zeigt auf diese. Haben Sie einen Lese von diesen Beitrag Jacob Orshalick darüber, wie Umgebungsvariablen in Seam zu konfigurieren:

  2. Wie bei PDF-Dateien Vorschau, hat einen Blick auf, wie Google Text & Tabellen PDFs Griffe Vorschau - es zeigt sie als ein Bild. Um dies zu tun mit Java Besuche die Sun PDF Renderer .

Ich bin mir nicht sicher, ob dies in JBoss funktioniert, da Sie einen Pfad in einem WAR-Archiv wollen, aber man konnte mit ServletContext.getRealPath (String) .

Allerdings würde ich persönlich nicht, dass Dateien erzeugte in meiner bereitgestellten Anwendung zu sein; stattdessen würde konfiguriert ich ein externes Datenverzeichnis irgendwo wie $JBOSS_HOME/server/default/data/myapp

  • Erstens sind die meisten Plattformen verwenden java.io.tmpdir ein temporäres Verzeichnis zu setzen. Einige Servlet-Container diese Eigenschaft neu definieren etwas unter ihrem Baum zu sein. Warum interessieren Sie sich, wo die Datei geschrieben wird?
  • Zweitens stimme ich mit Nicholas: Nach dem PDF-Format auf der Serverseite zu erzeugen, können Sie eine URL generieren, die, wenn sie angeklickt, um die Datei an den Browser sendet. Wenn Sie MIME-Typ application/pdf verwenden, sollte der Browser damit das Richtige tun.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top