0

次の構造例を検討してください

- Project
    - www
        - files
            + documents
            + html
            + images
            + scripts
    - WEB-INF
        * web.xml

ドキュメント フォルダは、ユーザーが (マップされたネットワーク ドライブを介して) ドキュメントを追加および削除するため、シンボリック リンクまたは war ファイルの外部にあるその他の方法である必要があります。

webapp を war-file としてデプロイしたいのですが、その方法がわかりません。上記を考慮してください。いくつかの指針を教えていただけますか?/アダム

4

9 に答える 9

1

静的コンテンツの場合は、アプリケーション サーバーの前に Web サーバーを配置し、そこに静的コンテンツを配置する方がよいでしょう。アプリ サーバーが静的データを提供する必要がなくなり、起動するためのネットワーク ラウンドトリップを節約できます。

于 2008-12-30T21:12:49.947 に答える
1

特定の URL プレフィックスの静的コンテンツを提供する Web サーバーをアプリ サーバーの前面に配置することは、適切でクリーンなソリューションであるという @duffymo.myopenid.com の意見に同意します。

お使いの環境でこれが実現できない場合、または Web アプリケーション自体で処理したい場合は、同じことを効果的に行うサーブレットを作成できます。たとえば、URL パターン /documents/* にマップされるサーブレットを作成します。このサーブレットは、URL (/documents/some/file.png) を解析して、相対ファイル名 (some/file.png) を判別できます。次に、外部ディレクトリ (/staticDocs/some/file.png) にある対応するコンテンツを読み取って返すことができます。

于 2008-12-30T23:49:50.287 に答える
0

基本的には、さまざまなソースからの情報を集約してドキュメントを生成するWebアプリです。ユーザーがWebアプリにログインせずに、ネットワークから手動でドキュメントを作成およびアップロードできる必要があります。

ドキュメントの場所のパスをコンテキスト変数として配置することは、間違いなく実行可能です。私はそれが最も簡単な方法だと思います。/アダム

于 2008-12-31T02:48:46.807 に答える
0

残念ながら、.war ファイルは本質的に .zip ファイルであり、.zip ファイルはシンボリック リンクをサポートしていません。Windows マシンにのみデプロイする場合は、ショートカット ファイルを使用するとうまくいく可能性があります。ただし、アプリサーバーがそれを気に入るかどうかはわかりません(...おそらくそうではありません。)

ドキュメント フォルダのフル パスを指定できるようにする設定パラメータをアプリケーションに追加することをお勧めします。デフォルトのパスは相対 (「./www/files/documents」) にする必要があります。これにより、アプリは追加の構成なしですぐに動作します。

于 2008-12-31T08:27:05.237 に答える
0

ドキュメントなどをデータベースに保存してから、Web アプリをデータベースにアクセスさせて、ユーザーがその方法でファイルをプルできるようにしてみませんか? マップされたネットワーク ドライブである必要がありますか?

それ以外の場合、そこに何があるかを知ることが問題である場合は、常に jnlp ファイルを動的に構築し、ファイルリストなどを引数として渡すことができます (サーバー側の場合)。

あなたが達成しようとしていることについて、もう少し知る必要があると思います。

于 2008-12-30T21:19:07.173 に答える
0

ファイルが保存されているディレクトリを指す環境変数をサーバーに作成するのはどうですか? 環境変数は、WAR ファイルを変更せずにアプリケーションを新しい環境 (おそらく DEV から PROD に移行) にデプロイできるため、WAR ファイル内の設定よりも適切に機能する可能性があります。

Java コードから、次のようにこの環境設定を参照できます。 String docPath= System.getProperty("DOC_PATH");

于 2008-12-31T14:55:49.663 に答える
0

Apache Tomcat では、次のように tomcat RewriteValveを介して再利用することが適切な場合があります。

META-INF/context.xml:

<Context>
  <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
</Context>

WEB-INF/rewrite.config:

RewriteRule (.*)/login(/.*\.)(png|jpg|js|css) $1$2$3 

これで、/appContext/login/パスは同じ images/js/css を使用します/appContext/

もちろん、すべての問題に対するすべての正規表現ベースのソリューションと同様に、表現の複雑さを低く保つことはパフォーマンスにとって重要です。

于 2016-06-04T18:42:09.900 に答える
0

多くの Java Web サーバーは、展開ディレクトリに .war ファイルを解凍するだけの「展開された war ファイル」をサポートしています。tomcat でこれをコピーすれ$CATALINA_HOME/webappsば完了です。

これはうまくいくはずです。

于 2008-12-31T09:20:01.010 に答える
-1

Web コンテンツ管理システム ( CMS ) が必要なようです。

于 2008-12-30T21:14:02.940 に答える