0

この問題をどのように解決するのが最善かについて、いくつかのアイデアが必要です。

JBoss 4.3.3 で JBoss Seam アプリケーションを実行しています。このアプリケーションのごく一部は、Open Office テンプレートに基づいて html および pdf ドキュメントを生成します。

生成されたファイルは、ファイル システムの /tmp/ 内に配置します。System.getProperties("tmp.dir") およびその他のオプションを試してみましたが、常に $JBOSS_HOME/bin が返されます。パス $JBOSS_HOME/$DEPLOY/myEAR.ear/myWAR.war/WhateverLocationHere/ を選択したいと思います。

ただし、絶対パスを指定したり、$JBOSS_HOME と $DEPLOY を設定したりせずに、プログラムでパスを選択する方法がわかりません。

どうすればこれができるか知っている人はいますか?

2 番目の質問です。これらの生成されたファイルを簡単にプレビューしたい。JavaScript を使用するか、最も簡単な方法を使用してください。しかし、JavaScript はサーバー上のファイルシステムにアクセスできないため、JavaScript でファイルを開くことができません。

簡単な解決策はありますか?
4

5 に答える 5

1

あなたが達成しようとしていることを完全に理解しているかどうかはわかりませんが、とにかく試してみます:

最終的な目標は、Web アプリケーションを介してエンド ユーザーがいくつかのファイル (PDF、HTML) を利用できるようにすることだと思います。

その場合、Apache がこれらのファイルをエンド ユーザーに提供しないようにするには、JBOSS アプリケーションが Apache 仮想ホストにマップされているディレクトリのパスを知るだけで十分です。

したがって、基本的には、ファイルを作成して /var/www/html/myappfiles/tempfile.pdf (アプリケーションが認識しているフォルダー) として保存し、http://mydomain.com/myappfiles (Apache 仮想ホスト) をサーバーに提供ます。ユーザー。残りは Web サーバーによって行われます。

アプリケーションにフォルダーの場所 (この例では /var/www/html/myappfiles/) を知らせるために、環境変数またはシステム プロパティを設定する必要があります。

うまくいけば、私は道に迷っていませんでした:)

于 2009-01-06T10:10:29.070 に答える
1
  1. 私はピーターに同意します(ピートよ!)。ディレクトリをWARの外に置き、これを指す環境変数を設定します。Seam で環境変数を設定する方法については、Jacob Orshalick によるこの投稿をお読みください。

  2. PDF のプレビューについては、Google ドキュメントが PDF のプレビューをどのように処理するかを見てください。PDF は画像として表示されます。Java でこれを行うには、Sun PDF Rendererを確認してください。

于 2009-01-07T19:04:46.307 に答える
1

PDF をどのように生成しているかわかりませんが、可能であれば、ディスク IO をすべてスキップし、PDF コンテンツを a に隠して、指定された URL に応答するbyte[]MIME タイプを * に設定するサーブレットでユーザーにフラッシュします。application/pdfクライアントのリンクによって、または<div>JavaScript によって動的に設定されます。いずれにせよメモリ ヒットが発生する可能性があり、IO をスキップすることに加えて、プレビューが完了したときに tmp ファイルを削除することを心配する必要はありません。

*****これは正しいと思います。それを調べる必要があります。

于 2009-01-08T22:19:09.207 に答える
0
  • まず、ほとんどのプラットフォームjava.io.tmpdirは一時ディレクトリの設定に使用します。一部のサーブレット コンテナーは、このプロパティをツリーの下にあるものとして再定義します。ファイルがどこに書き込まれるかを気にするのはなぜですか?
  • 次に、Nicholas に同意します。サーバー側で PDF を生成した後、クリックするとファイルがブラウザに送信される URL を生成できます。MIME タイプを使用する場合application/pdf、ブラウザはそれを正しく処理する必要があります。
于 2009-01-10T18:00:35.383 に答える
0

WARアーカイブ内のパスが必要な場合、これがJBossで機能するかどうかはわかりませんが、ServletContext.getRealPath(String)を使用してみてください。

ただし、個人的には、生成されたファイルがデプロイされたアプリケーション内にあることを望んでいません。代わりに、次のような外部データディレクトリを構成します$JBOSS_HOME/server/default/data/myapp

于 2009-01-06T15:58:02.910 に答える